Docs/API

Differences from OpenAI

What is deliberately different from the OpenAI API, and why?

Checked against the code on

The request and response shapes match, so existing clients work. These are the deliberate differences, and there are only five.

DifferenceWhy
askr.credits_charged on every response and on the final stream chunkAdditive, so clients that do not know about it ignore it. Knowing the cost of a call without a second round trip is most of the point.
402 when the balance is shortIt names how many credits the request needed, so a script can decide whether to top up or back off.
Chat models that answer with a pictureA model that answers chat completions with an image works here, and the picture comes back in message.images. Video runs in the workspace and is not on this API yet. Audio and embedding ids are refused.
No fine-tuning, assistants or responses endpointsNot built. Chat completions, models and files on The API are the whole surface. A file by file_id is routed per model, as the file or as its words, which OpenAI does not do.
web_search: true on chat completionsThe search is ours, not the provider's: the model gets our search and page tools, and the sources come back as OpenAI-shaped url_citation annotations, so a client that reads OpenAI's search results reads ours. Search the web.

And the things we quietly ignore

temperature, top_p, tools, tool_choice, response_format, stop, n, seed and plugins are accepted and dropped. purpose on a file upload is accepted and ignored. Model id suffixes like :online or :fast are not a feature; they make an unknown id. Chat completions has the full list.