Responses API

POST /v1/responses -- OpenAI's newer Responses API shape, alongside Chat Completions.

Request

input takes the place of messages -- either a plain string (treated as a single user message) or the same message-array shape Chat Completions accepts (including tools, image content parts, and the tool role).

Terminal
POST /v1/responses
Authorization: Bearer llms_live_...
Content-Type: application/json

{
  "model": "studio/qwen3-0.6b",
  "input": "Hello",
  "stream": false,
  "temperature": 0.7,
  "max_output_tokens": 512
}

Response (non-streaming)

Terminal
{
  "id": "resp_...",
  "object": "response",
  "created_at": 1735689600,
  "model": "studio/qwen3-0.6b",
  "status": "completed",
  "output": [
    { "type": "message", "role": "assistant", "content": [{ "type": "output_text", "text": "Hi." }] }
  ],
  "usage": { "input_tokens": 18, "output_tokens": 3, "total_tokens": 21 },
  "llm_studio": { "request_id": "req_...", "credits_consumed": 21 }
}

A response that used a tool includes an additional {"type": "function_call", "call_id", "name", "arguments"} item in output.

Streaming

Set stream: true for a text/event-stream of typed events -- each event's JSON body carries its own type field:

Terminal
data: {"type":"response.created","response":{"id":"resp_...","status":"in_progress",...}}

data: {"type":"response.output_text.delta","delta":"Hi"}

data: {"type":"response.output_text.delta","delta":"."}

data: {"type":"response.completed","response":{"id":"resp_...","status":"completed","output":[...],"usage":{...}}}

Unlike Chat Completions' SSE stream, there is no trailing [DONE] sentinel -- the stream simply ends after response.completed (or response.failed on error).

Everything else works the same

/v1/responses and /v1/chat/completions share the exact same routing, entitlement, credit, and capacity path underneath -- only the request and response shape differs. Model ids, error codes (see Errors), rate limits, and authentication are all identical between the two.