Create response
Generates a model response. Responses are never stored: store is always false, previous_response_id is rejected, and there is no endpoint to retrieve or delete a response. Send the whole conversation in input each time.
AuthorizationBearer <token>Your API key: Authorization: Bearer io-sk-…. If a request also sends x-api-key, x-api-key wins.
x-interodin-session-id?stringOptional prompt-cache routing hint, honoured on every generation endpoint (including count_tokens). Send the same opaque value (for example a conversation id, at most 128 characters recommended) on every request of one conversation. Never put prompts, personal data or secrets in it.
application/json- body
model*stringinput*string|array<>instructions?stringSystem-level instructions.
stream?booleanfalsestore?booleanResponses are never stored. Any value you send is treated as false.
previous_response_id?stringDeprecatedNot supported. Requests that set it fail with 400 unsupported_parameter. Send the full conversation in input.
conversation?unknownDeprecatedNot supported. Requests that set it fail with 400 unsupported_parameter.
background?booleanDeprecatedNot supported. true fails with 400 unsupported_parameter.
prompt?DeprecatedStored prompt templates are not supported. Requests that set it fail with 400 invalid_request.
tools?array<|||>Function tools and custom tools. Hosted tools (web search, file search, code interpreter, MCP and others) are removed from the request without an error, as is a tool_choice that names a removed tool.
tool_choice?|parallel_tool_calls?booleantext?reasoning?Reasoning is on or off, with no levels. effort: none turns it off on Odin Flash; it does not on Odin v1. The other values change nothing.
max_output_tokens?integerClamped to the model maximum. 0 or less returns 400.
1 <= valuetemperature?number0 <= value <= 2top_p?number0 <= value <= 1metadata?Accepted and ignored: not forwarded.
prompt_cache_key?stringPrompt-cache routing hint. Same value for every request of one conversation. Forwarded only as a hash specific to your organization; not stored. A string of at most 1024 characters is accepted, null removes the field and any other value returns 400 invalid_request.
length <= 1024user?stringYour end-user id. Forwarded only as a hash specific to your organization; not stored. A string of at most 1024 characters is accepted, null removes the field and any other value returns 400 invalid_request.
length <= 1024safety_identifier?stringA stable identifier for the end user, for abuse detection. Forwarded only as a hash specific to your organization; not stored. A string of at most 1024 characters is accepted, null removes the field and any other value returns 400 invalid_request.
length <= 1024A response object, or an event stream when stream is true.
- response
id*stringobject*stringcreated_at*integerstatus*string"completed""incomplete""failed""in_progress""queued"model*PublicModelIdA public InterOdin model id, for example odin-v1.
^odin-[a-z0-9.-]+$output*array<>usage?|nullstore?booleanerror?|nullincomplete_details?|nullcurl -X POST 'https://api.interodin.com/v1/responses' \ -H 'Content-Type: application/json' \ -d '{ "model": "odin-v1", "input": "Say hello in Romanian."}'{ "id": "string", "object": "response", "created_at": 0, "status": "completed", "model": "odin-v1", "output": [ { "id": "string", "status": "string", "role": "assistant", "content": [ { "type": "output_text", "text": "string", "annotations": [ {} ] } ], "summary": [ {} ], "call_id": "string", "name": "string", "arguments": "string", "type": "function_call" } ], "usage": { "input_tokens": 0, "input_tokens_details": { "cached_tokens": 0 }, "output_tokens": 0, "output_tokens_details": { "reasoning_tokens": 0 }, "total_tokens": 0 }, "store": false, "error": {}, "incomplete_details": {}}List models GET
Lists the models your key may call. A key restricted to some models lists only those. OpenAI format by default; Anthropic format when the request carries an `anthropic-version` header. It sends `x-request-id` but no rate-limit headers. In practice only `invalid_api_key` (401), `organization_suspended` (403), `not_found` (404) and `internal_error` (500) occur here; the other error statuses are listed for completeness.
Errors and rate limits
Every error code the API returns, the rate-limit headers, and how to retry.