Skip to main content
The OpenTelemetry SDK provides direct, fine-grained control over instrumentation. Combined with Portkey, get custom traces plus gateway features like caching, fallbacks, and load balancing.

Why OpenTelemetry SDK + Portkey?

Full Control

Manually instrument exactly what you need with custom spans and attributes

Production Ready

Battle-tested OpenTelemetry standard used by enterprises worldwide

Custom Attributes

Add any metadata you need to traces for debugging and analysis

Gateway Intelligence

Portkey adds caching, fallbacks, and load balancing to every request

Quick Start

pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-http openai
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from openai import OpenAI

# Setup OpenTelemetry
provider = TracerProvider()
trace.set_tracer_provider(provider)
provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(
    endpoint="https://api.portkey.ai/v1/otel/v1/traces",
    headers={"x-portkey-api-key": "YOUR_PORTKEY_API_KEY"}
)))
tracer = trace.get_tracer(__name__)

# Use Portkey gateway
client = OpenAI(
    api_key="YOUR_PORTKEY_API_KEY",
    base_url="https://api.portkey.ai/v1"
)

# Custom instrumentation
def generate_response(input_text):
    with tracer.start_as_current_span("llm-call") as span:
        span.set_attribute("input", input_text)
        response = client.chat.completions.create(
            model="@openai-prod/gpt-4.1",  # Provider slug from Model Catalog
            messages=[{"role": "user", "content": input_text}]
        )
        span.set_attribute("output", response.choices[0].message.content)
        return response.choices[0].message.content

print(generate_response("Hello!"))
OpenTelemetry traces in Portkey

Setup

  1. Add provider in Model Catalog → get provider slug (e.g., @openai-prod)
  2. Get Portkey API key
  3. Use model="@provider-slug/model-name" in requests

Next Steps


See Your Traces in Action

Once configured, view your custom OpenTelemetry traces combined with Portkey gateway intelligence in the Portkey dashboard:
OpenTelemetry traces in Portkey