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).
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)
{
"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:
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.