ITS INCOM AI ITS INCOM AI docs

API reference

Responses API

POST /v1/responses, translated onto chat completions. For the SDKs that use that path by default.

Last updated: 2026-10-03

POST /v1/responses is available. It is for anyone whose SDK sends text to that path instead of /v1/chat/completions — the official Laravel package does, and recent versions of the OpenAI Python library encourage it.

bash
curl https://api.ai.itsincom.org/v1/responses \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemma-4-26b","input":"Summarise in one line: ..."}'

The response has the shape of the Responses API, including output_text so that you do not have to walk output:

json
{
  "id": "resp_…",
  "object": "response",
  "status": "completed",
  "output": [{"type":"message","role":"assistant","content":[{"type":"output_text","text":"…"}]}],
  "output_text": "…",
  "usage": {"input_tokens": 19, "output_tokens": 3, "total_tokens": 22}
}

What is supported

field notes
input a string, or a list of messages with role and content
instructions becomes the system message
max_output_tokens, temperature, top_p
text.format json_object and json_schema, with the same constraint as guaranteed JSON
tools in the Responses API shape, with name and parameters at the top level
tool_choice auto, none, required, or {"type":"function","name":"…"}

Function calls come out as items of output with "type": "function_call", not inside the message: it is the difference that wastes the most time when moving from one dialect to the other.

What is not supported

Streaming. "stream": true answers 501 with code: stream_not_implemented. For streaming use /v1/chat/completions, which sends the chunks in the OpenAI format.

Server-side state. There is none: previous_response_id and store do not exist, and you send the whole conversation every time. The state is yours. What the request log keeps, and for how long, is in Sovereignty.

Our own tools — web search, code interpreter — do not exist. tools accepts only your own functions.

It is not a second engine

It is a translator: the request is passed to /v1/chat/completions and the response rewritten. So there are no two paths to keep aligned, which is how this kind of compatibility stops working after three months. If something works on chat completions it works here, and the other way round.