Endpoints
Every route ORYNX serves, with streaming behaviour and what is not supported.
All routes are under https://api.orynx.dev.
Generation
| Method and path | Format | Notes |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat | Claude, GPT, Grok, DeepSeek, Kimi and GLM models. Not Gemini. |
POST /v1/responses | OpenAI Responses | GPT and Grok models. Codex CLI uses this route. |
POST /v1/responses/compact | OpenAI Responses | Context compaction used by older Codex CLI versions. |
POST /v1/messages | Anthropic Messages | Claude models. ?beta=true is accepted. |
POST /v1beta/models/{model}:generateContent | Gemini | Gemini models. |
POST /v1beta/models/{model}:streamGenerateContent | Gemini | Server-sent events with ?alt=sse, a streamed JSON array without it. |
Calling a model on a route it doesn't support returns 400 with The model ... is not available on this endpoint.
Models and account
| Method and path | Returns |
|---|---|
GET /v1/models | The models your key may use, in OpenAI shape. With an anthropic-version header: Anthropic shape, Claude models only. |
GET /v1/models/{model} | One model, in the same shapes. |
GET /v1beta/models | The Gemini models your key may use, in Gemini shape. |
GET /v1beta/models/{model} | One Gemini model. |
GET /v1/dashboard/billing/subscription | Credit and expiry of your key. See Balance. |
GET /v1/dashboard/billing/usage | Total spend, in cents. |
HEAD /api/hello | 204. Claude Code sends this at startup to open the connection early. |
Streaming
- OpenAI Chat:
data: {...}lines, ending withdata: [DONE]. Send"stream_options": {"include_usage": true}to get a final chunk with token usage. - Anthropic:
event:anddata:pairs, includingmessage_start,content_block_deltaandmessage_deltawith usage. - Responses:
response.*events, ending withresponse.completed. - Gemini:
data:lines withalt=sse, or a JSON array without it.
When a stream has been silent for 15 seconds, ORYNX sends a heartbeat: a : keep-alive comment, or a ping event
on Anthropic streams. This keeps proxies and load balancers from closing the connection while the model thinks. A
request ends if the model sends nothing for 300 seconds, and no request can run longer than 60 minutes.
Not supported
- Token counting (
/v1/messages/count_tokensand:countTokens) returns404. Claude Code then estimates context usage from character counts, which is expected. - Background responses (
"background": true) return400, andGET /v1/responses/{id}is not served. - Embeddings, image generation and audio endpoints are not offered.
- Request bodies are limited to 50 MB.