The rest of the OpenAI-compatible API: how big a request may be, what is checked before the model sees it, the errors, and what isn't offered.
Nothing is ever trimmed for you. A request whose messages and tool definitions come to more than your plan’s prompt limit is refused, with OpenAI’s wording so tools that shorten their own history when they see it (Cline, Roo Code) do:
HTTP 400
{ "error": {
"message": "This API's maximum context length for your plan is 12,000 tokens. However, your messages resulted in about 13,750 tokens. Please reduce the length of the messages.",
"type": "invalid_request_error",
"code": "context_length_exceeded",
"param": null
} }| Plan | Largest prompt | Longest reply | Largest request body |
|---|---|---|---|
| Free | 12,000 tokens | 2,000 tokens | about 200 KB |
| Pro, Standard | 64,000 tokens | 8,000 tokens | about 500 KB |
| Pro, other | Whatever your plan grants: GET /models and the dashboard show it |
For this check a token is estimated as 4 characters, so it can be a little off either way. The real counts are in usage. max_tokens can only lower your reply limit. A coding agent’s system prompt alone is often 10,000 tokens or more, so the free plan is for chat tools; agents need a Pro API plan.
Requests are checked on the server before the model sees them, with the same detectors as the web chat. A refusal is a normal 200 whose only choice has finish_reason: "content_filter", a fixed message, and zero usage; it is not an error.
finish_reason: "stop" and the resources as the content. Tool results aren’t treated as a person speaking.See the native API for the personas’ own endpoint, and Safety & Crisis Resources.
Errors are OpenAI’s shape plus our code: {"error":{"message","type","code","param":null}}, with retry_after_seconds on rate limits.
| Status | code | type | Meaning |
|---|---|---|---|
| 400 | invalid_request | invalid_request_error | The body or a field is malformed. `message` says which. |
| 400 | invalid_json | invalid_request_error | The body is not valid JSON. |
| 400 | context_length_exceeded | invalid_request_error | The messages (and tools) are longer than the plan's context limit. Shorten them; nothing is ever trimmed for you. |
| 400 | unsupported_parameter | invalid_request_error | A field with a value this API refuses (n above 1, functions, function_call). |
| 400 | unsupported_content | invalid_request_error | A message has image or audio content. Text only. |
| 400 | tools_not_supported | invalid_request_error | tools, tool_choice or tool messages sent to israelbot-1. |
| 400 | invalid_tools | invalid_request_error | A tool definition or tool-call message is malformed or over a limit. |
| 401 | missing_api_key | authentication_error | No "Authorization: Bearer igpt_..." header. |
| 401 | invalid_api_key | authentication_error | Not a key, revoked, or from before the rebuild. |
| 403 | suspended | authentication_error | The account is suspended; the message says how to appeal. |
| 404 | model_not_found | invalid_request_error | The model is not "yahoobot-1" or "israelbot-1". |
| 413 | payload_too_large | invalid_request_error | The body is over the plan's size limit. |
| 415 | unsupported_media_type | invalid_request_error | Send Content-Type: application/json. |
| 429 | rate_limited | rate_limit_error | Over the requests-per-minute or per-day allowance. Retry-After says when. |
| 429 | token_limit | rate_limit_error | The account used its tokens for today (UTC). They return at 00:00 UTC. |
| 502 | upstream_unavailable | server_error | The model did not answer. Try again. |
| 503 | capacity_exceeded | rate_limit_error | Everyone's shared capacity is used up right now. |
| 503 | maintenance | server_error | The API is switched off. |
See Errors for the rest, Rate limits for the headers, and honour Retry-After.
/chat/completions and /models: no /completions, /embeddings, /images, /audio, /responses, assistants, files, fine-tuning or /models/{id}.n above 1, no log probabilities, no structured-output mode.gpt-4o...) get 404 model_not_found.Each request leaves a row in the key’s log on the dashboard: when, the result, the model, token counts, how long it took, and what the caller said it is (never the text, never the address). The newest user message and the reply, clipped to 2,000 and 4,000 characters, are kept in the chat log, encrypted, and read only if something needs looking into. See the Privacy Policy.