Docs
API referenceResponses

Create response

POST
/v1/responses

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.

Authorization

headerAuthorizationBearer <token>

Your API key: Authorization: Bearer io-sk-…. If a request also sends x-api-key, x-api-key wins.

Header Parameters

x-interodin-session-id?string

Optional 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.

Request Body

application/json
  1. body
model*string
input*string|array<>
instructions?string

System-level instructions.

stream?boolean
Defaultfalse
store?boolean

Responses are never stored. Any value you send is treated as false.

previous_response_id?stringDeprecated

Not supported. Requests that set it fail with 400 unsupported_parameter. Send the full conversation in input.

conversation?unknownDeprecated

Not supported. Requests that set it fail with 400 unsupported_parameter.

background?booleanDeprecated

Not supported. true fails with 400 unsupported_parameter.

prompt?Deprecated

Stored 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?boolean
text?
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?integer

Clamped to the model maximum. 0 or less returns 400.

Range1 <= value
temperature?number
Range0 <= value <= 2
top_p?number
Range0 <= value <= 1
metadata?

Accepted and ignored: not forwarded.

prompt_cache_key?string

Prompt-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.

Lengthlength <= 1024
user?string

Your 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.

Lengthlength <= 1024
safety_identifier?string

A 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.

Lengthlength <= 1024

Response Body

A response object, or an event stream when stream is true.

  1. response
id*string
object*string
created_at*integer
status*string
Value in"completed""incomplete""failed""in_progress""queued"
model*PublicModelId

A public InterOdin model id, for example odin-v1.

Match^odin-[a-z0-9.-]+$
output*array<>
usage?|null
store?boolean
error?|null
incomplete_details?|null
curl -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": {}}