The Vantage destination is in beta. Its configuration and the attributes it sends may change before it is generally available.
Step 1: Get your Vantage token
Get a token from Vantage that can send traces to its OpenTelemetry endpoint. OpenRouter sends traces tohttps://ingest.vantage.sh/v1/traces with the token as Authorization: Bearer <token>.
Step 2: Enable Broadcast in OpenRouter
Go to Settings > Observability and toggle Enable Broadcast.
Step 3: Configure Vantage
Click the edit icon next to Vantage and enter:- API key: Your Vantage token
Step 4: Test and save
Click Test Connection to verify the setup. The configuration only saves if the test passes.Step 5: Send a test trace
Make an API request through OpenRouter and verify that its usage appears in Vantage.Trace Data
Vantage receives traces via the OpenTelemetry Protocol (OTLP). Each trace includes:- Token usage: Prompt tokens, completion tokens, and total tokens consumed
- Cost information: The total cost of the request
- Cost allocation: Billed usage and cost by token kind, when Cost allocation is enabled
- Timing: Request start time, end time, and latency metrics
- Model information: The model slug and provider name used for the request
- Request and response content: The input messages and model output (unless Privacy Mode is enabled)
Cost allocation
With Cost allocation enabled, the cost-allocation block is sent as span attributes on the generation span underspan.metadata.openrouter_cost_allocation.*. Counts are intValue attributes and costs are stringValue USD decimals, so no precision is lost:
non_cache_input, cache_read_input, cache_write_input, output, and reasoning, each with a _tokens count and a _cost. input_tokens is the total of the three input kinds. Tool, advisor, unclassified, and platform charges have their own _cost attributes, and is_byok, billed_service_tier, is_long_context, endpoint_region, and endpoint_deployment_type qualify the pricing. Counts and per-kind costs are present only when cost_status is reconciled; see Cost allocation for every field and status.
Root spans also carry the block under trace.metadata.openrouter_cost_allocation.*. Read each generation once. The model and provider are in the standard gen_ai.* attributes.
Custom Metadata
Custom metadata from thetrace field is sent as span attributes in the OTLP payload.
Supported Metadata Keys
Example
Additional Context
- The
userfield maps touser.idin span attributes - The
session_idfield maps tosession.idin span attributes - Custom metadata keys from
traceare included as span attributes under thetrace.metadata.*namespace, so you can allocate cost by them in Vantage - Standard GenAI semantic conventions (
gen_ai.*) are used for model, token usage, and cost attributes