On this page
Compatibility notes
Where router.africa differs from the OpenAI API and from OpenRouter, so code you move over behaves as you expect.
router.africa works with the OpenAI SDK and the Anthropic SDK when you change the base URL and the key. Request fields that this site doesn’t mention are passed through as the model’s API defines them. This page lists where we differ.
Endpoints
You can call:
POST /v1/chat/completions, with and without streamingPOST /v1/messages, in the Anthropic format (see Messages)POST /v1/responses, in the OpenAI Responses format (see Responses)GET /v1/modelsGET /v1/keyGET /v1/generation(see Look up a request)
Other endpoints are not part of the public API, even if a path seems to answer. This includes the OpenAI batch API, embeddings, images, audio and rerank.
Not supported
If you are coming from OpenRouter, these features don’t exist here:
| Feature | Status |
|---|---|
:free, :nitro and :floor model variants |
Not supported. |
~alias model names |
Not supported. Use the full model id. |
Routers such as openrouter/auto, pareto-router and fusion |
Not supported. |
provider preferences, sort, plugins and route request fields |
Not supported. |
models[] and fallbacks arrays, and session_id sticky routing |
Not supported. |
| Presets | Not supported. |
| Bring your own provider keys | Not supported. |
Workload identity tokens (/oauth/token) |
Not supported. |
| Attribution headers | Not used. |
| Batch or async endpoint | Not available. |
| Management APIs for keys, workspaces and guardrails | Use the dashboard. They are not part of the API. |
| Regional hostnames and data-region routing | Not available. |
| Reading stored prompts and responses through the API | Not available. Admins read them in the dashboard. |
Behaviour that differs
- Credits, not currency. You pay with credits. A request that can’t be paid for returns
402, not429. OpenAI uses429for this, which the SDKs retry. A402isn’t retried. See Credits and billing. - Error body. Errors use OpenRouter’s envelope:
error.codeis a number, anderror.metadata.reasongives the specific cause. The SDKs work unchanged. OnPOST /v1/messageserrors use Anthropic’s format instead. See Errors. - Rate-limit headers. Only
Retry-Afteris sent. There are nox-ratelimit-*headers. - Anthropic SDK. Use the default
api_key(apiKeyin TypeScript).POST /v1/messagesacceptsx-api-keyas well asAuthorization: Bearer. No other endpoint acceptsx-api-key. - Generation lookup.
GET /v1/generationreturns metadata only. OpenRouter’s/generation/contentandprovider_responses[]don’t exist here. - Headers we ignore.
OpenAI-Organization,OpenAI-ProjectandOpenAI-Betaare accepted and ignored. - Idempotency. Duplicate requests are caught automatically, and
Idempotency-Keyis an extension. See Idempotency and retries. max_tokens. A value above the model’s limit is lowered to the limit, onmax_output_tokenstoo. It isn’t an error.- Models. A model must be switched on, allowed for your key and have a published rate. Otherwise you get one
404for all three cases. - Data. Prompts and responses are not saved unless a workspace turns saving on. See Data and privacy.