Respan()

Constructor

1from respan import Respan
2
3respan = Respan(
4 api_key="your-api-key",
5 instrumentations=[...],
6)

Parameters

ParameterTypeDefaultDescription
api_keystr | NoneNoneRespan API key. Falls back to RESPAN_API_KEY env var.
base_urlstr | NoneNoneAPI base URL. Falls back to RESPAN_BASE_URL, then https://api.respan.ai/api.
app_namestr"respan"Application name for telemetry identification.
instrumentationslist | NoneNoneList of instrumentor instances to activate.
auto_instrumentbool | NoneNoneAuto-instrument LLM SDKs via OTEL. Defaults to False. Set True to enable alongside plugins.
customer_identifierstr | NoneNoneDefault customer/user ID attached to all spans.
thread_identifierstr | NoneNoneDefault conversation thread ID for all spans.
metadatadict | NoneNoneDefault metadata dict merged into all spans.
environmentstr | NoneNoneEnvironment name (e.g. "production", "staging").
**telemetry_kwargsExtra kwargs forwarded to RespanTelemetry (e.g. log_level, is_batching_enabled).

Environment variables

VariableDescriptionDefault
RESPAN_API_KEYRespan API key
RESPAN_BASE_URLAPI base URLhttps://api.respan.ai/api
RESPAN_LOG_LEVELSDK log levelINFO
RESPAN_BATCHING_ENABLEDEnable batch processingtrue

Constructor parameters take precedence over environment variables.

Examples

With OpenAI Agents SDK

1from respan import Respan
2from respan_instrumentation_openai_agents import OpenAIAgentsInstrumentor
3
4respan = Respan(
5 api_key="your-api-key",
6 instrumentations=[OpenAIAgentsInstrumentor()],
7)

With OpenAI SDK

1from respan import Respan
2from respan_instrumentation_openai import OpenAIInstrumentor
3
4respan = Respan(
5 api_key="your-api-key",
6 instrumentations=[OpenAIInstrumentor()],
7)

With multiple plugins

1from respan import Respan
2from respan_instrumentation_openai import OpenAIInstrumentor
3from respan_instrumentation_openai_agents import OpenAIAgentsInstrumentor
4
5respan = Respan(
6 api_key="your-api-key",
7 instrumentations=[
8 OpenAIInstrumentor(),
9 OpenAIAgentsInstrumentor(),
10 ],
11)

With default attributes

Attributes set on the constructor are attached to all spans for the lifetime of the instance:

1respan = Respan(
2 api_key="your-api-key",
3 instrumentations=[OpenAIAgentsInstrumentor()],
4 customer_identifier="user_123",
5 thread_identifier="conv_abc",
6 metadata={"plan": "pro", "region": "us-east"},
7 environment="production",
8)

For per-request attributes, use propagate_attributes() instead.

Minimal setup with env vars

1import os
2os.environ["RESPAN_API_KEY"] = "your-api-key"
3
4from respan import Respan
5from respan_instrumentation_openai_agents import OpenAIAgentsInstrumentor
6
7respan = Respan(instrumentations=[OpenAIAgentsInstrumentor()])

No plugins (decorators only)

1from respan import Respan, workflow, task
2
3respan = Respan(api_key="your-api-key")
4
5@task(name="generate")
6def generate(topic: str):
7 # LLM call here
8 pass
9
10@workflow(name="my_workflow")
11def my_workflow():
12 return generate("tracing")

flush()

Force flush all pending spans to exporters. Call before process exit or in serverless environments.

1respan.flush()

shutdown()

Deactivate all plugins and shut down the OTEL pipeline.

1respan.shutdown()