IsraelGPT API Docs Get an API key

OpenAI-compatible API

The same keys as the rest of the API, in the format every OpenAI SDK and coding tool already speaks: a base URL, a key and a model name. Setting up a particular tool? See Client setup.

The short version

SettingValue
Base URLhttps://www.israelgpt.site/api/v1
API keyYour key from the dashboard: igpt_ and 43 characters. Sent as "Authorization: Bearer <key>".
Modelyahoobot-1 for coding tools and general use. israelbot-1 for IsraelGPT itself.
EndpointsPOST /chat/completions and GET /models. Nothing else from OpenAI’s API exists here.
curl https://www.israelgpt.site/api/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "yahoobot-1",
    "messages": [
      { "role": "system", "content": "You are a concise coding assistant." },
      { "role": "user", "content": "Write a Python function that reverses a string." }
    ]
  }'

"Give to your AI agent" copies a full plain-text spec of this API (auth, parameters, response shape, errors) — paste it into Claude Code, Cursor, or any coding assistant and ask it to wire up the integration for you.

The official OpenAI libraries work unchanged: set base_url / baseURL and the key. Without a base URL they talk to OpenAI, not to us.

Models

ModelWhat it isYour system messageToolsStreamingLongest reply
yahoobot-1A plain assistant and coder. Your system message is the only system prompt. Tool calling, true streaming. The model for Cline, Roo Code, Aider and Continue.Is the whole system prompt. IsraelGPT adds nothing, so a coding tool’s own instructions work as written.YesAs the model writes128,000 tokens
israelbot-1IsraelGPT's own personality. Your system message is added as extra instructions that cannot override its rules. No tools; replies are limited to 2,000 tokens.Added as extra instructions after IsraelGPT’s rules. It can set format, language and task; it cannot override the rules.NoThe reply is finished first, then sent as a stream2,000 tokens

GET /models lists both, with the prompt and reply sizes your key may use. It costs nothing against your limits, so a tool may call it as often as it likes (within a modest per-address allowance).

yahoobot-1 has no IsraelGPT personality or prompt. What it will and won't do comes from the model itself plus the checks below. israelbot-1 keeps IsraelGPT's personality and its rules, and because an OpenAI client can't carry IsraelGPT's signatures, earlier assistant messages are shown to it as quotes from your app rather than its own words (the same protection the native API gives). For long multi-turn chats, that makes yahoobot-1 the better fit.

Tool calling (OpenAI's tools, tool_choice and tool messages) works with yahoobot-1, streamed or not; israelbot-1 answers 400 tools_not_supported. Cline and Roo Code need none of it by default. The full round trip, every rule and every limit are on Tool calling.

POST /chat/completions

HeaderValue
AuthorizationBearer YOUR_API_KEY (required)
Content-Typeapplication/json (required)
User-AgentWhatever your tool sends. The key’s request log on the dashboard shows it.

The body is OpenAI’s. A field not listed here is ignored (every client sends a few). The listed ones behave like this:

FieldStatusWhat it does
modelsupported"yahoobot-1" or "israelbot-1". Anything else is a 404 model_not_found.
messagessupportedRoles system, developer (treated as system), user, assistant and tool. Content is a string, or an array of {"type":"text"} parts (joined with newlines). Control characters other than tab and newlines are removed.
streamsupportedtrue: server-sent events in OpenAI's chunk format, ending with "data: [DONE]".
stream_optionssupported{"include_usage": true} adds a final chunk with the token counts. Without it no usage chunk is sent.
temperaturesupported0 to 1.5 (values outside are clamped). Default 0.6.
top_psupported0 to 1.
max_tokenssupportedLowers the reply cap; it can never raise it above the plan's output limit or the model's.
max_completion_tokenssupportedThe same as max_tokens; if both are sent, the smaller wins.
stopsupportedA string or up to 4 strings. Ignored on israelbot-1, which has stop sequences of its own.
seedsupportedPassed to the model; determinism is best effort.
presence_penaltysupported-2 to 2.
frequency_penaltysupported-2 to 2.
toolssupportedyahoobot-1 only (israelbot-1 answers 400 tools_not_supported). Function tools only; see the tool calling section.
tool_choicesupportedyahoobot-1 only: "none", "auto", "required", or {"type":"function","function":{"name":"..."}}.
parallel_tool_callssupportedyahoobot-1 only. true or false.
nrejectedOnly 1. Any other number is a 400 unsupported_parameter.
functionsrejectedThe old function-calling fields are refused with a 400 that points to "tools".
function_callrejectedThe old function-calling fields are refused with a 400 that points to "tool_choice".
response_formatignoredNo structured-output mode; ask for JSON in the prompt.
logprobsignoredNot offered.
top_logprobsignoredNot offered.
logit_biasignoredNot offered.
userignoredAccepted; nothing is done with it.
storeignoredNothing is stored for you to retrieve.
metadataignoredAccepted; nothing is done with it.
reasoning_effortignoredAccepted; nothing is done with it.
service_tierignoredAccepted; nothing is done with it.

supported: used as described. ignored: accepted so a client that always sends it keeps working; it has no effect. rejected: refused with a 400 that says what to send instead. This table and the code that checks requests are generated from one list, and a test fails if they disagree.

With temperature left out, replies use 0.6; with max_tokens left out, the reply is capped at 4,096 tokens or your plan’s limit if that is lower.

Messages

  • Roles: system, developer (treated as system), user, assistant, tool. A conversation needs at least one message that isn’t a system message.
  • content is a string, or an array of {"type":"text","text":"..."} parts, joined with newlines. Image, audio and file parts are refused (400 unsupported_content): text only.
  • Control characters other than tab and newlines are removed, not refused, since terminal output is full of colour codes.
  • All system and developer messages are joined into one system prompt on yahoobot-1, wherever they appear in the conversation. With none, a one-line default is used.
  • On israelbot-1 the last message has to come from the user.
  • Up to 100 messages on the free plan, 2,000 with a Pro plan.

Response

{
  "id": "chatcmpl-8f2c1e4a9b3d7f01-TLV",
  "object": "chat.completion",
  "created": 1790000000,
  "model": "yahoobot-1",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "def reverse(s): return s[::-1]" },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 41, "completion_tokens": 12, "total_tokens": 53 }
}
finish_reasonMeaning
stopThe reply ended on its own.
lengthIt hit max_tokens (or your plan’s reply limit). Ask it to continue.
tool_callsThe model wants your tools run: see Tool calling.
content_filterThe safety checks refused the request. content is a fixed refusal, and it is a normal 200: see Sizes, safety and errors.

usage is what the model counted. It is what counts against your daily tokens. Prompt and reply sizes, what is checked, every error, and what isn't offered are on Sizes, safety and errors.

Streaming

Send "stream": true and the answer is server-sent events in OpenAI’s chunk format, ending with data: [DONE]. Add "stream_options": {"include_usage": true} to get a last chunk with the token counts (choices empty). Without it, no usage chunk is sent.

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1790000000,"model":"yahoobot-1","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1790000000,"model":"yahoobot-1","choices":[{"index":0,"delta":{"content":"def"},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1790000000,"model":"yahoobot-1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1790000000,"model":"yahoobot-1","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":12,"total_tokens":53}}

data: [DONE]
  • Lines starting with : are keep-alive comments. Every SSE client ignores them.
  • yahoobot-1 is relayed as the model writes it, in small batches about ten times a second. If the service is ever under load it can switch to waiting for the whole reply and sending it as a stream of pieces (with keep-alive comments while it waits); the chunks are the same.
  • israelbot-1 is finished first and then sent as a stream, so its reply can be checked as a whole.
  • A failure before any text is an ordinary JSON error with its HTTP status (502, 429, 400...). A failure part-way sends data: {"error":{...}} and then [DONE], because the status line has already gone. The error has the same shape as every other.
  • If you close the connection, the model is stopped. The tokens counted for that request are an estimate of what it had written by then.