REST API reference
Each endpoint with parameters, request and response schemas and an example request.
Authentication
Metered endpoints accept the workspace API key as a bearer token or in the X-API-Key header. Keys are issued at signup and managed in the dashboard. Endpoints marked "No authentication" need no key.
| apiKey | X-API-Key: <api key> |
| bearer | Authorization: Bearer <api key> |
export OSR_URL="https://<your deployment>" # the site you signed up on
export OSR_API_KEY="osr_..."Conventions
- Requests and responses are JSON. Errors are
{"detail": "..."}with a conventional status code;422lists the offending fields. - Every routed call returns
X-Request-Id; quote it inPOST /api/v1/feedback. The chat endpoint addsX-OSR-TargetandX-OSR-Confidence. 429carriesRetry-After; a403withX-Upgrade: truemeans the feature exists but is not in your plan.- The machine-readable document is served at
/openapi.jsonand the interactive Swagger UI at/apion the API host.
Endpoint groups
- Routing33 endpoints
Route a request to a target and return the decision with its trace; optionally build a plan or execute it. Report outcomes for the learners and read statistics and the audit trail.
- get
/api /v1 /audit - get
/api /v1 /evaluations - post
/api /v1 /evaluations - get
/api /v1 /evaluations /datasets - post
/api /v1 /evaluations /datasets - get
/api /v1 /evaluations /datasets /{dataset_id} - delete
/api /v1 /evaluations /datasets /{dataset_id} - post
/api /v1 /evaluations /datasets /{dataset_id} /results - post
/api /v1 /evaluations /datasets /{dataset_id} /rows - post
/api /v1 /evaluations /datasets /{dataset_id} /run - get
/api /v1 /evaluations /gates - post
/api /v1 /evaluations /gates - delete
/api /v1 /evaluations /gates /{gate_id} - post
/api /v1 /evaluations /gates /{gate_id} /run - get
/api /v1 /evaluations /judge - post
/api /v1 /evaluations /judge /run - post
/api /v1 /evaluations /replay - get
/api /v1 /evaluations /sample - get
/api /v1 /evaluations /{evaluation_id} - delete
/api /v1 /evaluations /{evaluation_id} - post
/api /v1 /feedback - get
/api /v1 /handoffs - get
/api /v1 /handoffs /{handoff_id} - post
/api /v1 /handoffs /{handoff_id} /cancel - post
/api /v1 /handoffs /{handoff_id} /resolve - post
/api /v1 /route - get
/api /v1 /shadow - post
/api /v1 /shadow - delete
/api /v1 /shadow - post
/api /v1 /shadow /promote - get
/api /v1 /shadow /{candidate_id} - get
/api /v1 /stats - get
/api /v1 /targets
- get
- OpenAI-compatible15 endpoints
OpenAI-compatible chat completions and model listing. Point an OpenAI SDK at the platform base URL and use
model: "auto"; the router chooses the model per request.- post
/v1 /audio /speech - post
/v1 /audio /transcriptions - post
/v1 /chat /completions - post
/v1 /embeddings - post
/v1 /feedback - post
/v1 /images /generations - post
/v1 /messages - post
/v1 /messages /count_tokens - get
/v1 /models - post
/v1 /moderations - post
/v1 /rerank - post
/v1 /responses - post
/v1 /route - get
/v1beta /models - post
/v1beta /models /{model}:{action}
- post
- Public endpoints44 endpoints
No API key required: deployment information, the model catalogue with live statistics, rankings and self-serve signup.
- get
/api /v1 /blog - get
/api /v1 /blog /{slug} - get
/api /v1 /blog /{slug} /image - get
/api /v1 /catalogue - post
/api /v1 /estimate - get
/api /v1 /facts - get
/api /v1 /growth /indexnow-key - get
/api /v1 /growth /linkedin /callback - get
/api /v1 /info - post
/api /v1 /journey - post
/api /v1 /journey /answer - get
/api /v1 /journey /blocker - get
/api /v1 /journey /reasons - get
/api /v1 /llms - get
/api /v1 /llms /{vendor} /{model} - get
/api /v1 /maintenance - get
/api /v1 /models - get
/api /v1 /models /recommended - get
/api /v1 /models /{model_id} - post
/api /v1 /newsletter /confirm - get
/api /v1 /newsletter /issues /{issue_id} - get
/api /v1 /newsletter /preferences - put
/api /v1 /newsletter /preferences - delete
/api /v1 /newsletter /preferences - post
/api /v1 /newsletter /subscribe - post
/api /v1 /newsletter /unsubscribe - get
/api /v1 /rankings - get
/api /v1 /rankings /listings - get
/api /v1 /rankings /listings /kinds - get
/api /v1 /rankings /models - get
/api /v1 /rankings /models /{vendor} /{model} - get
/api /v1 /rankings /targets - get
/api /v1 /rankings /targets /domains - post
/api /v1 /sales /inquiries - get
/api /v1 /services - get
/api /v1 /showcase - post
/api /v1 /signup - get
/api /v1 /site /photos - get
/api /v1 /site /photos /{key} - get
/api /v1 /stats /public - get
/api /v1 /status - get
/api /v1 /status /board - get
/api /v1 /status /incidents - get
/api /v1 /status /incidents /{incident_id}
- get
- Assistant4 endpoints
The support assistant: answers product questions from the documentation through the platform's own models with cited sources, keeps the conversation and hands over a ticket draft when a person is needed; no API key required.
- Account, keys and tenants97 endpoints
The calling workspace: profile, usage, savings, activity log, API keys and tenants.
- get
/api /v1 /activity - delete
/api /v1 /activity /logs - get
/api /v1 /alerts - get
/api /v1 /announcements - post
/api /v1 /announcements /{announcement_id} /dismiss - get
/api /v1 /cache - delete
/api /v1 /cache - post
/api /v1 /email /events /acs - get
/api /v1 /email /preferences - put
/api /v1 /email /preferences - post
/api /v1 /email /unsubscribe - get
/api /v1 /events - get
/api /v1 /events /stream - get
/api /v1 /governance - get
/api /v1 /governance /report - get
/api /v1 /insights - post
/api /v1 /insights /ask - get
/api /v1 /keys - post
/api /v1 /keys - get
/api /v1 /keys /scopes - patch
/api /v1 /keys /{key_id} - delete
/api /v1 /keys /{key_id} - post
/api /v1 /keys /{key_id} /rotate - get
/api /v1 /learning - get
/api /v1 /legal - get
/api /v1 /me - get
/api /v1 /me /audit - post
/api /v1 /me /delete - get
/api /v1 /me /email-preferences - put
/api /v1 /me /email-preferences - get
/api /v1 /me /export - get
/api /v1 /me /legal - post
/api /v1 /me /legal /accept - put
/api /v1 /me /login-alerts - get
/api /v1 /notifications - get
/api /v1 /notifications /channels - post
/api /v1 /notifications /channels - patch
/api /v1 /notifications /channels /{channel_id} - delete
/api /v1 /notifications /channels /{channel_id} - post
/api /v1 /notifications /channels /{channel_id} /test - get
/api /v1 /notifications /deliveries - post
/api /v1 /notifications /read - get
/api /v1 /notifications /unread - get
/api /v1 /onboarding - get
/api /v1 /policy - put
/api /v1 /policy - delete
/api /v1 /policy - get
/api /v1 /prompts - post
/api /v1 /prompts - get
/api /v1 /prompts /{name} - delete
/api /v1 /prompts /{name} - post
/api /v1 /prompts /{name} /render - get
/api /v1 /prompts /{name} /stats - get
/api /v1 /prompts /{name} /{version} - delete
/api /v1 /prompts /{name} /{version} - put
/api /v1 /prompts /{name} /{version} /labels - get
/api /v1 /quota - get
/api /v1 /referrals - post
/api /v1 /referrals /invite - get
/api /v1 /referrals /lookup - get
/api /v1 /savings - get
/api /v1 /signals - get
/api /v1 /sla - get
/api /v1 /telemetry /series - get
/api /v1 /tenants - put
/api /v1 /tenants - delete
/api /v1 /tenants /{slug} - get
/api /v1 /trace /{request_id} - get
/api /v1 /usage - get
/api /v1 /usage /activity - post
/api /v1 /usage /activity - get
/api /v1 /usage /activity /summary - get
/api /v1 /usage /imports - post
/api /v1 /usage /imports - get
/api /v1 /usage /imports /samples - post
/api /v1 /usage /imports /upload - get
/api /v1 /usage /imports /{import_id} - delete
/api /v1 /usage /imports /{import_id} - get
/api /v1 /usage /observed - post
/api /v1 /usage /observed - get
/api /v1 /usage /opportunity - get
/api /v1 /usage /report - get
/api /v1 /workspace /log-export - post
/api /v1 /workspace /log-export - patch
/api /v1 /workspace /log-export /{export_id} - delete
/api /v1 /workspace /log-export /{export_id} - post
/api /v1 /workspace /log-export /{export_id} /run - get
/api /v1 /workspace /mcp-servers - post
/api /v1 /workspace /mcp-servers - get
/api /v1 /workspace /mcp-servers /{server_id} - patch
/api /v1 /workspace /mcp-servers /{server_id} - delete
/api /v1 /workspace /mcp-servers /{server_id} - post
/api /v1 /workspace /mcp-servers /{server_id} /sync - get
/api /v1 /workspace /mcp-servers /{server_id} /tools - get
/api /v1 /workspace /reports - put
/api /v1 /workspace /reports - post
/api /v1 /workspace /reports /send
- get
- Conversations12 endpoints
What the routed chat remembers for the caller: conversations the platform keeps for
/v1/chat/completions(osr.conversation_idcontinues one across desktop, browser and playground; the platform prepends the history and a rolling summary) and the long-term memory - facts the person stated about themselves, listed, edited, disabled or deleted here;PUT /memory/settingsturns it off.- get
/api /v1 /conversations - delete
/api /v1 /conversations - get
/api /v1 /conversations /{conversation_id} - patch
/api /v1 /conversations /{conversation_id} - delete
/api /v1 /conversations /{conversation_id} - post
/api /v1 /conversations /{conversation_id} /split - get
/api /v1 /memory - post
/api /v1 /memory - delete
/api /v1 /memory - put
/api /v1 /memory /settings - patch
/api /v1 /memory /{memory_id} - delete
/api /v1 /memory /{memory_id}
- get
- Knowledge11 endpoints
The workspace's knowledge graph: typed, sourced facts about the people who ask, the targets, the topics and the sources, learned from the routed chat and added by hand; the engineered context placed before every chat (preview it with
POST /knowledge/context), suggestions from the workspace's trained link predictor, and exports to JSON-LD, N-Triples, GraphML and Cypher.PUT /knowledge/settingsturns it off or changes the token budget. - Releases4 endpoints
Release notes parsed from the changelog: every released version with its sections and highlights, the version this deployment runs, and what a signed-in person has not read yet (What's new).
- Content27 endpoints
Content publishing for the workspace's own website: the feeds it follows and the briefs it sends become posts written through the router as its own metered requests; posts are reviewed, published and delivered to its destinations (a signed webhook, WordPress, Ghost) with a retried delivery log, or pulled from
GET /content/postsand the RSS atGET /content/feed.xml. Thecontent_*MCP tools do the same for agents.- get
/api /v1 /content - get
/api /v1 /content /deliveries - post
/api /v1 /content /deliveries /{delivery_id} /retry - get
/api /v1 /content /destinations - post
/api /v1 /content /destinations - patch
/api /v1 /content /destinations /{destination_id} - delete
/api /v1 /content /destinations /{destination_id} - post
/api /v1 /content /destinations /{destination_id} /test - get
/api /v1 /content /feed.xml - post
/api /v1 /content /feed /token - get
/api /v1 /content /feeds - post
/api /v1 /content /feeds - post
/api /v1 /content /feeds /preview - patch
/api /v1 /content /feeds /{feed_id} - delete
/api /v1 /content /feeds /{feed_id} - post
/api /v1 /content /feeds /{feed_id} /fetch - get
/api /v1 /content /posts - post
/api /v1 /content /posts - post
/api /v1 /content /posts /write - get
/api /v1 /content /posts /{post_id} - patch
/api /v1 /content /posts /{post_id} - delete
/api /v1 /content /posts /{post_id} - post
/api /v1 /content /posts /{post_id} /publish - post
/api /v1 /content /posts /{post_id} /regenerate - get
/api /v1 /content /profile - put
/api /v1 /content /profile - post
/api /v1 /content /refresh
- get
- Workspaces28 endpoints
Organization workspaces: members, roles, invitations, teams (rosters, leads, tenant bindings), organization SSO (browser sessions only) and the SCIM provisioning token.
- patch
/api /v1 /workspace - delete
/api /v1 /workspace - get
/api /v1 /workspace /audit - post
/api /v1 /workspace /convert - post
/api /v1 /workspace /delete - post
/api /v1 /workspace /invites - delete
/api /v1 /workspace /invites /{invite_id} - post
/api /v1 /workspace /invites /{invite_id} /resend - get
/api /v1 /workspace /members - patch
/api /v1 /workspace /members /{user_id} - delete
/api /v1 /workspace /members /{user_id} - get
/api /v1 /workspace /scim - post
/api /v1 /workspace /scim /token - delete
/api /v1 /workspace /scim /token - get
/api /v1 /workspace /sso - put
/api /v1 /workspace /sso - delete
/api /v1 /workspace /sso - get
/api /v1 /workspace /teams - post
/api /v1 /workspace /teams - get
/api /v1 /workspace /teams /{slug} - patch
/api /v1 /workspace /teams /{slug} - delete
/api /v1 /workspace /teams /{slug} - post
/api /v1 /workspace /teams /{slug} /members - delete
/api /v1 /workspace /teams /{slug} /members /{user_id} - post
/api /v1 /workspace /transfer - get
/api /v1 /workspaces - post
/api /v1 /workspaces - post
/api /v1 /workspaces /{account_id} /switch
- patch
- Scim6 endpoints
SCIM 2.0 (RFC 7643 / 7644) for the organization's identity provider - Entra ID, Okta, OneLogin and the like - authenticated with the provisioning token an owner minted under
/api/v1/workspace/scim. Users are provisioned into, updated in and removed from the organization; Groups are not provisioned. - Sign-in and sessions30 endpoints
Sign-in with GitHub, Google or an organization identity provider; browser sessions; and CLI sign-in with device codes (
osr login): the CLI requests a code, the person approves it in the browser, the CLI receives a workspace API key.- post
/api /v1 /auth /device /approve - post
/api /v1 /auth /device /code - post
/api /v1 /auth /device /deny - post
/api /v1 /auth /device /token - get
/api /v1 /auth /device /{user_code} - get
/api /v1 /auth /discover - post
/api /v1 /auth /email - get
/api /v1 /auth /identities - delete
/api /v1 /auth /identities /{provider} - get
/api /v1 /auth /invites /{token} - post
/api /v1 /auth /invites /{token} /accept - post
/api /v1 /auth /logout - delete
/api /v1 /auth /mfa - post
/api /v1 /auth /mfa /enable - post
/api /v1 /auth /mfa /recovery-codes - post
/api /v1 /auth /mfa /setup - post
/api /v1 /auth /mfa /verify - post
/api /v1 /auth /password - delete
/api /v1 /auth /password - post
/api /v1 /auth /password /forgot - post
/api /v1 /auth /password /login - post
/api /v1 /auth /password /reset - get
/api /v1 /auth /providers - get
/api /v1 /auth /sessions - delete
/api /v1 /auth /sessions /{session_id} - post
/api /v1 /auth /verify - post
/api /v1 /auth /verify /send - post
/api /v1 /auth /{provider} /callback - post
/api /v1 /auth /{provider} /credential - get
/api /v1 /auth /{provider} /start
- post
- Billing16 endpoints
Plan upgrades through Stripe Checkout and the webhook that confirms them.
- post
/api /v1 /billing /cancel - post
/api /v1 /billing /checkout - get
/api /v1 /billing /coupons - post
/api /v1 /billing /coupons /redeem - post
/api /v1 /billing /coupons /validate - post
/api /v1 /billing /credits /checkout - get
/api /v1 /billing /invoices - post
/api /v1 /billing /portal - get
/api /v1 /billing /statement - get
/api /v1 /billing /subscription - get
/api /v1 /billing /usage - get
/api /v1 /billing /wallet - put
/api /v1 /billing /wallet /auto-topup - delete
/api /v1 /billing /wallet /auto-topup - get
/api /v1 /billing /wallet /ledger - post
/api /v1 /billing /webhook
- post
- Support11 endpoints
Help: support tickets (
/support/tickets- raise a concern, get a reference such asOSR-00042, follow the conversation; every answer and status change is e-mailed to the requester), product feedback (/product-feedback- bugs, ideas and improvements sent from the platform's pages with screenshots and browser diagnostics, referenceFB-00012, every status change e-mailed) and the assistant.- get
/api /v1 /product-feedback - post
/api /v1 /product-feedback - get
/api /v1 /product-feedback /{key} - get
/api /v1 /product-feedback /{key} /attachments /{attachment_id} - post
/api /v1 /product-feedback /{key} /comments - get
/api /v1 /support /tickets - post
/api /v1 /support /tickets - get
/api /v1 /support /tickets /{key} - post
/api /v1 /support /tickets /{key} /close - post
/api /v1 /support /tickets /{key} /messages - get
/api /v1 /support /tickets /{key} /stream
- get
- MCP server5 endpoints
Model Context Protocol server for IDEs and agents (VS Code, Cursor, Claude, Windsurf):
POST /mcpspeaks JSON-RPC with tools to route, quote, recommend, explain and ask;GET /mcpdescribes it. Authenticate like the REST API. - Marketplace17 endpoints
Browse, publish, install and rate agents, skills, personas, prompts, templates and tools. Each listing has a validated manifest the router can load;
GET /registry/{slug}/manifestis whatregistry://references resolve to.- get
/api /v1 /me /installs - get
/api /v1 /me /listings - get
/api /v1 /registry - post
/api /v1 /registry - get
/api /v1 /registry /kinds - get
/api /v1 /registry /sitemap - get
/api /v1 /registry /{slug} - patch
/api /v1 /registry /{slug} - post
/api /v1 /registry /{slug} /archive - post
/api /v1 /registry /{slug} /install - get
/api /v1 /registry /{slug} /manifest - get
/api /v1 /registry /{slug} /reviews - put
/api /v1 /registry /{slug} /reviews - delete
/api /v1 /registry /{slug} /reviews - post
/api /v1 /registry /{slug} /submit - post
/api /v1 /registry /{slug} /unarchive - post
/api /v1 /registry /{slug} /versions
- get
- Model providers1 endpoint
Model providers:
GET /providersis the public, OpenRouter-style view of what this deployment executes on (provider, upstream model, prices, health per executable target - never credentials); the/admin/providersendpoints add, check and map OpenAI-compatible endpoints at run time, and every API replica picks the change up without a restart. - Offers2 endpoints
Models by the token: an offer is one catalogue model served by one provider endpoint (
vendor/model@provider), synthesised into the routing catalogue and sold at the customer price the pricing engine computes.GET /offersis the public storefront (list price next to the price the caller pays, the endpoints with health and traffic);/admin/offersand/admin/providers/{provider_id}/offerslist, pause and remove offers.POST /v1/chat/completionsacceptsvendor/model(the router picks the endpoint) andvendor/model@provider(one pinned);GET /v1/modelslists offers in OpenRouter's shape. - Workspace-providers8 endpoints
Bring your own model providers (feature
byok, on every plan of the default catalogue): a workspace connects its own Azure OpenAI, Amazon Bedrock, Google Vertex AI / Gemini, OpenAI, Anthropic or any OpenAI-compatible endpoint with its own key (stored encrypted, never returned) and maps catalogue targets to models on it. Its/route(execute=true),/v1/chat/completionsand MCPaskcalls then run on that endpoint; unmapped targets keep the platform's providers. Reading needs membership, writing theadminrole.- get
/api /v1 /workspace /providers - post
/api /v1 /workspace /providers - put
/api /v1 /workspace /providers /models /{target_id} - delete
/api /v1 /workspace /providers /models /{target_id} - get
/api /v1 /workspace /providers /{provider_id} - patch
/api /v1 /workspace /providers /{provider_id} - delete
/api /v1 /workspace /providers /{provider_id} - post
/api /v1 /workspace /providers /{provider_id} /check
- get
Something wrong or out of date on this page? Tell us - the page is named for you, so a one-line note is enough.
Content publishing for your website
Your feeds and briefs become posts written through the router, reviewed in the dashboard and delivered to your site - a signed webhook, WordPress or Ghost - or pulled as RSS; the same tools on your MCP server.
Routing
Route a request to a target and return the decision with its trace; optionally build a plan or execute it.