> ## Documentation Index
> Fetch the complete documentation index at: https://docs.auriko.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Integration Guide

> Choose the right integration channel for your Auriko project

Every integration channel provides Auriko's routing, fallback, cost optimization, and rate limiting — these features are **server-side**. The channel you choose affects developer ergonomics, not platform capability.

## Which integration should I use?

| If you...                                                                   | Use                                                                                        | Tier             |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------- |
| Want the full Auriko experience                                             | [Native SDK](/sdk/python) ([TypeScript](/sdk/typescript)) (`auriko.AsyncClient`)           | 1 — Primary      |
| Already use LangChain, LlamaIndex, CrewAI, or ADK                           | [Framework adapter](/frameworks/langchain)                                                 | 2 — Framework    |
| Use the Vercel AI SDK (TypeScript)                                          | [`@auriko/ai-sdk-provider`](/frameworks/vercel-ai-sdk)                                     | 2 — Framework    |
| Use Claude Code or Claude Agent SDK                                         | Set `ANTHROPIC_BASE_URL` env var ([guide](/frameworks/claude-agent-sdk))                   | 2 — Framework    |
| Want to point existing OpenAI code at Auriko                                | `AsyncOpenAI(base_url="https://api.auriko.ai/v1")`                                         | 3 — Migration    |
| Need to pass an OpenAI client to a framework that discards routing metadata | [`AurikoAsyncOpenAI`](/sdk/python-reference#aurikoasyncopenai-experimental) (experimental) | 4 — Experimental |

<Note>
  If you just want to point existing OpenAI code at Auriko, use `AsyncOpenAI(base_url=...)` directly. `AurikoAsyncOpenAI` is experimental and only needed when a framework discards routing metadata from responses.
</Note>

## Feature comparison

| Feature            | Native SDK                               | Framework Adapters           | Plain OpenAI API                              | `AurikoAsyncOpenAI` (experimental)  | Vercel AI SDK Provider                  | Claude Agent SDK / Anthropic SDK   |
| ------------------ | ---------------------------------------- | ---------------------------- | --------------------------------------------- | ----------------------------------- | --------------------------------------- | ---------------------------------- |
| Routing options    | `gateway={...}` or `GatewayOptions(...)` | Adapter-specific params      | `extra_body={"gateway": {...}}`               | `extra_body={"gateway": {...}}`     | `createAuriko({ routing })`             | `extra_body={"gateway": {...}}`    |
| Metadata access    | `response.routing_metadata`              | Adapter-specific             | `parse_routing_metadata(response)` or headers | `client.last_routing_metadata`      | `result.providerMetadata?.auriko`       | Response headers                   |
| Error types        | `AurikoAPIError` hierarchy               | `AurikoAPIError` (automatic) | `openai.APIStatusError`                       | Dual-inheritance (both hierarchies) | `APICallError` (`@ai-sdk/provider`)     | `anthropic.APIStatusError`         |
| Streaming metadata | On stream object                         | Adapter-specific             | Response headers                              | Automatic                           | `await result.providerMetadata`         | `auriko_metadata` SSE event        |
| Dependencies       | `auriko`                                 | `auriko[framework]`          | `openai` (or any HTTP client)                 | `auriko[openai-compat]`             | `@auriko/ai-sdk-provider` + `ai ^6.0.0` | `anthropic` SDK or Claude Code CLI |

## Error behavior by channel

| Channel                            | Error type                                | Automatic?                      |
| ---------------------------------- | ----------------------------------------- | ------------------------------- |
| Native SDK                         | `AurikoAPIError` hierarchy                | Yes                             |
| Framework adapters                 | `AurikoAPIError` via `map_openai_error()` | Yes                             |
| Plain OpenAI API                   | `openai.APIStatusError`                   | Opt-in via `map_openai_error()` |
| `AurikoAsyncOpenAI` (experimental) | Dual-inheritance (both hierarchies)       | HTTP-level only                 |
| Vercel AI SDK provider             | `APICallError` (`@ai-sdk/provider`)       | Yes                             |
| Claude Agent SDK / Anthropic SDK   | `anthropic.APIStatusError`                | Yes                             |

<Note>
  `AurikoAsyncOpenAI` dual-inheritance errors are catchable as both `auriko.RateLimitError` and `openai.RateLimitError`. Mid-stream SSE errors (raised after the HTTP 200 during `stream=True`) remain unmapped `openai.APIError` — the bridge covers HTTP-level status errors only.
</Note>
