Tracing
Group related LLM API calls into a single trace using a simple traceparent header.
Last updated
traceparent: {version}-{trace_id}-{parent_id}-{flags}traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01TRACE_ID=$(xxd -p -l 16 /dev/urandom)
PARENT_ID=$(xxd -p -l 8 /dev/urandom)
TRACEPARENT="00-${TRACE_ID}-${PARENT_ID}-01"
curl https://api.fastrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $FASTROUTER_API_KEY" \
-H "Content-Type: application/json" \
-H "traceparent: $TRACEPARENT" \
-d '{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "Hello"}]
}'import secrets
from openai import OpenAI
client = OpenAI(
api_key="YOUR_FASTROUTER_API_KEY",
base_url="https://api.fastrouter.ai/v1"
)
def generate_traceparent():
return f"00-{secrets.token_hex(16)}-{secrets.token_hex(8)}-01"
traceparent = generate_traceparent()
# Step 1
response1 = client.chat.completions.create(
model="gpt-4.1",
messages=[...],
extra_headers={"traceparent": traceparent}
)
# Step 2 (same trace)
response2 = client.chat.completions.create(
model="gpt-4.1",
messages=[...],
extra_headers={"traceparent": traceparent}
)import OpenAI from "openai";
import { randomBytes } from "crypto";
const client = new OpenAI({
apiKey: process.env.FASTROUTER_API_KEY,
baseURL: "https://api.fastrouter.ai/v1",
});
function generateTraceparent(): string {
const traceId = randomBytes(16).toString("hex");
const parentId = randomBytes(8).toString("hex");
return `00-${traceId}-${parentId}-01`;
}
const traceparent = generateTraceparent();
await client.chat.completions.create(
{
model: "gpt-4.1",
messages: [{ role: "user", content: "Hello" }],
},
{
headers: { traceparent },
}
);Trace: <trace_id>
├── POST /api/v1/chat/completions
└── POST /api/v1/chat/completions