One URL change: your SDK, request shapes, and response parsing stay the same.
- https://openrouter.ai/api/v1
+ https://idapt.app/api/openrouter/v1Authenticate with an idapt API key as a bearer token (`Authorization: Bearer …`). Create one from your account settings.
| Method | Endpoint | Notes |
|---|---|---|
| POST | /api/openrouter/v1/chat/completions | Streaming + non-streaming. OpenRouter provider policy, model suffixes, multi-model fallback, per-key limits, `provider`, and `usage.cost`. |
| POST | /api/openrouter/v1/completions | Legacy text completions bridge. |
| POST | /api/openrouter/v1/anthropic/v1/messages | Anthropic-shape Messages API. |
| POST | /api/openrouter/v1/embeddings | OpenAI-shape embeddings. |
| POST | /api/openrouter/v1/audio/speech | Text-to-speech. |
| POST | /api/openrouter/v1/audio/transcriptions | Speech-to-text. |
| GET | /api/openrouter/v1/models | Full catalog: `architecture`, `pricing`, `top_provider`, `supported_parameters`. |
idapt never silently ignores a request field it cannot honor: an unsupported feature is rejected with a clear 422 or 501 carrying a metadata.roadmap_url that deep-links to the matching section below.
What: The `provider` request object (`order`, `only`, `ignore`, `allow_fallbacks`, `sort`, `max_price`, `require_parameters`, `quantizations`), plus the legacy `route` string.
Status: Live for chat-compatible requests. The router honors allow/deny/order, fallback disabling, price/throughput/latency/uptime sort, max-price ceilings, required-parameter filtering, quantization labels and legacy route passthrough.
Ships: Live for /chat/completions, /completions, and non-streaming /responses.
What: An array of model ids that the router falls through on upstream failure or rate-limit.
Status: Live. `models` is normalized to an ordered model-candidate list, suffixes are stripped for catalog lookup, and the connector tries the next model when no provider path succeeds.
Ships: Live for chat-compatible requests.
What: The `reasoning` object: `effort` (none/minimal/low/medium/high), `max_tokens` budget, `exclude`, `enabled`.
Status: Live. The OpenRouter-shape `reasoning` object is preserved through the canonical chat request and providers that do not support reasoning are filtered when required.
For the full developer surface (REST API, CLI, MCP) see the developer hub.
| GET |
| /api/openrouter/v1/models/count |
| Catalog size. |
| GET | /api/openrouter/v1/models/{author}/{slug} | Single model detail. |
| GET | /api/openrouter/v1/models/{author}/{slug}/endpoints | Per-provider endpoint card. |
| GET | /api/openrouter/v1/generation | Request reconciliation by generation id. |
| GET | /api/openrouter/v1/key | Current key metadata with per-key usage and limits for bearer calls. |
| GET | /api/openrouter/v1/credits | Credit balance and usage. |
| GET · POST · PATCH · DELETE | /api/openrouter/v1/keys | API key CRUD with lifetime USD spend caps. |
| POST | /api/openrouter/v1/responses | Non-streaming text Responses bridge. |
Ships: Live for chat-compatible requests.
What: The `transforms` array: middle-out context compression for under-context models.
Status: Accepted and passed through on OpenRouter-routed calls. Requests using transforms force the OpenRouter connector so direct providers do not receive unknown fields.
Ships: Live for OpenRouter-routed chat-compatible requests.
What: The `plugins` array: file-parser (PDF OCR), response-healing (JSON repair), context-compression.
Status: Accepted and passed through on OpenRouter-routed calls. The `:online` suffix injects the web plugin automatically.
Ships: Live for OpenRouter-routed chat-compatible requests.
What: The `service_tier` field: `flex` (cheaper, slower) / `priority` (faster, costlier) provider QoS.
Status: Accepted and preserved in the canonical request. Providers that advertise support can be selected with `provider.require_parameters`.
Ships: Live for chat-compatible requests.
What: Autonomous tools the gateway executes: `openrouter:web_search`, `web_fetch`, `image_generation`, and similar `openrouter:`-prefixed tool names.
Status: Accepted and forced through the OpenRouter connector so gateway-owned tools are not sent to direct native providers.
Ships: Live for OpenRouter-routed chat-compatible requests.
What: Fetch token counts, exact cost, latency and finish reason for a past request by id.
Status: Live for idapt-recorded compatible API calls. Look up by provider generation id, with internal usage-id fallback for historical rows.
Ships: Live.
What: Cohere / Voyage-shape document reranking.
Status: Planned. Not yet available on the compatibility surface.
Ships: Planned.
What: Async video generation with job polling: `POST /videos`, `GET /videos/{jobId}`, `GET /videos/{jobId}/content`, `GET /videos/models`.
Status: Planned. Not yet available on the compatibility surface.
Ships: Planned.
What: The stateless OpenAI Responses-shape endpoint.
Status: Live for common non-streaming stateless text requests by adapting Responses `input` / `instructions` into chat completions. Streaming Responses events are planned.
Ships: Non-streaming live; streaming remains a follow-up.
What: The PKCE-secured endpoint that exchanges an auth code for a user-bound API key, used by editor integrations for a 'Sign in' flow.
Status: Planned. Create an API key from your account settings in the meantime.
Ships: Planned.
What: Per-provider latency percentiles (p50/p75/p90/p99), throughput and uptime windows on `GET /models/{author}/{slug}/endpoints`.
Status: Live for pricing and capabilities per provider; the latency, throughput, and uptime fields show indicative values while live telemetry is in beta.
Ships: Planned.