> ## Documentation Index
> Fetch the complete documentation index at: https://puzzlet-9ba7bb98.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI-compatible providers

> Trace OpenAI-compatible providers (OpenRouter, Together, Fireworks, DeepSeek, Ollama, and more) in AgentMark.

Many providers expose an OpenAI-compatible API. You reach them with the OpenAI SDK by pointing `base_url` at their endpoint, so the OpenInference [OpenAI instrumentor](/integrations/providers/openai) traces them the same way it traces OpenAI itself. One setup covers all of them.

## Setup

<Steps>
  <Step title="Install the instrumentor and the OTLP exporter">
    ```bash theme={null}
    pip install openinference-instrumentation-openai openai \
      opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
    ```
  </Step>

  <Step title="Point the exporter at AgentMark and instrument OpenAI">
    Use your AgentMark API key and app id from project settings.

    ```python theme={null}
    from openinference.instrumentation.openai import OpenAIInstrumentor
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

    provider = TracerProvider()
    provider.add_span_processor(
        BatchSpanProcessor(
            OTLPSpanExporter(
                endpoint="https://api.agentmark.co/v1/traces",
                headers={
                    "Authorization": "<YOUR_API_KEY>",  # raw key, no "Bearer" prefix
                    "X-Agentmark-App-Id": "<YOUR_APP_ID>",
                },
            )
        )
    )

    OpenAIInstrumentor().instrument(tracer_provider=provider)
    ```
  </Step>

  <Step title="Point the OpenAI client at your provider">
    Set `base_url` to the provider's endpoint and use the client as usual. Each call arrives in AgentMark as a span. See [Traces and logs](/observe/traces-and-logs).

    ```python theme={null}
    from openai import OpenAI

    client = OpenAI(
        base_url="https://openrouter.ai/api/v1",  # your provider's endpoint
        api_key="<PROVIDER_API_KEY>",
    )
    client.chat.completions.create(
        model="meta-llama/llama-3.3-70b-instruct",
        messages=[{"role": "user", "content": "What is the capital of France?"}],
    )
    ```
  </Step>
</Steps>

## Common endpoints

| Provider       | `base_url`                              |
| -------------- | --------------------------------------- |
| OpenRouter     | `https://openrouter.ai/api/v1`          |
| Together AI    | `https://api.together.xyz/v1`           |
| Fireworks AI   | `https://api.fireworks.ai/inference/v1` |
| DeepSeek       | `https://api.deepseek.com`              |
| xAI (Grok)     | `https://api.x.ai/v1`                   |
| Cerebras       | `https://api.cerebras.ai/v1`            |
| Ollama (local) | `http://localhost:11434/v1`             |

Any provider with an OpenAI-compatible chat completions endpoint works the same way.

## What AgentMark captures

These calls produce the same OpenInference spans as a direct OpenAI call. AgentMark maps model, token usage, input and output messages, tool calls, and span kind onto its normalized trace fields, and token counts feed [cost tracking](/observe/cost-and-token-tracking). See [OpenInference](/integrations/tracing/openinference#what-agentmark-captures) for the full attribute mapping.

## Next steps

<CardGroup cols={2}>
  <Card title="OpenAI" icon="diagram-project" href="/integrations/providers/openai">
    The direct OpenAI provider page
  </Card>

  <Card title="Traces and logs" icon="list-tree" href="/observe/traces-and-logs">
    Explore traces once they arrive
  </Card>
</CardGroup>

<div className="mt-8 rounded-lg bg-blue-50 p-6 dark:bg-blue-900/30">
  <h3 className="font-semibold mb-3">Have questions?</h3>
  <p className="mb-4">Reach out any time:</p>

  <ul>
    <li>
      Email the team at <a href="mailto:hello@agentmark.co" className="text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-200">[hello@agentmark.co](mailto:hello@agentmark.co)</a> for support
    </li>

    <li>
      Schedule an <a href="https://cal.com/ryan-randall/enterprise" className="text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-200">Enterprise Demo</a> to learn about AgentMark's business solutions
    </li>
  </ul>
</div>
