API reference

2026-08-31

One process serves four dialects on one port. Nothing needs to be enabled; they are all live.

OpenAI

MethodRouteNotes
GET/v1/modelsReports the one loaded model.
GET/v1/models/{id}Single-model lookup. Answers for any id.
POST/v1/chat/completionsChat. stream defaults to false.
POST/v1/responsesThe Responses API, which Codex speaks.

Anthropic

MethodRouteNotes
POST/v1/messagesWhat Claude Code speaks.
POST/v1/messages/count_tokensA fast estimate. Callers budget with it; nothing decodes from it.

Ollama native

For apps that integrate Ollama and offer no generic endpoint field.

MethodRouteNotes
GET/api/tagsModel list. This is the discovery call.
GET/api/versionReports 0.12.0-tempo9 — semver-parseable, and tagged so it never claims to be an Ollama release.
GET/api/psLoaded models. One, always resident.
POST/api/showModel detail. capabilities reflects this build: tools always, vision only with --tower.
POST/api/chatChat.
POST/api/generateBare-prompt completion. Replies use response, not message.
POST/api/embed, /api/embeddings501. We serve no embeddings, and say so in the caller's dialect rather than 404ing.

Three things differ from the OpenAI dialect, and each fails silently against a client that assumes otherwise:

  1. Streaming is newline-delimited JSON. No data: prefix, no [DONE] sentinel; the last object carries done: true.
  2. stream defaults to true. The opposite of OpenAI.
  3. Tool-call arguments are a JSON object, not a JSON string.

Authentication

None. See Limits.