# POST /v1/responses

> CreateResponse

- `operationId`: `V1ResponsesCreateResponse`
- Group: [Inference API](https://sference.com/docs/api-reference/inference-api.md)
- API spec (machine-readable): https://sference.com/openapi.json
- HTML version: https://sference.com/docs/api-reference/inference-api/V1ResponsesCreateResponse

## Request body (required)

Content type `application/json`. Schema: `ResponseCreateRequest`

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `model` | string | yes | — | Model identifier, e.g. "zai-org/GLM-5" |
| `input` | string \| array<object> | yes | — | Input for the completion. Either a plain string (shorthand for a single user message) or an array of OpenAI Responses input items. |
| `instructions` | string \| null | no | — | Developer instructions (system prompt). |
| `tools` | array<object> \| null | no | — | — |
| `tool_choice` | object \| string \| null | no | — | — |
| `max_output_tokens` | integer \| null | no | — | — |
| `temperature` | number \| null | no | max 2 | — |
| `top_p` | number \| null | no | max 1 | — |
| `include_reasoning` | boolean | no | default `true` | — |
| `enable_thinking` | boolean \| null | no | — | — |
| `reasoning` | ReasoningConfig \| null | no | — | — |
| `include` | array<string> \| null | no | — | Ignored. Every value OpenAI defines here (web search, code interpreter, computer use, file search, logprobs, encrypted reasoning) depends on a feature this API does not implement, so the requested extra data is never present in the response regardless. Silently ignored rather than rejected: upstream routers such as requesty.ai count a 400 as a failed request against our reliability, while an ignored `include` degrades gracefully — the caller simply gets none of the extra data they would not have received anyway. |
| `background` | boolean | no | default `false` | — |
| `stream` | boolean | no | default `false` | — |
| `text` | ResponseTextConfig \| null | no | — | — |
| `prompt_cache_key` | string \| null | no | — | Stable identifier for a sequence of requests that share a long prefix (a chat session, an agent loop). Requests with the same key are routed to the same worker while it stays warm, so the shared prefix is served from its prompt cache. Without it, placement is inferred from the input text. |
| `service_tier` | string \| null | no | — | Processing tier for the request. `"flex"` selects flex processing (beta) on flex-enabled accounts: discounted tokens in exchange for lower scheduling priority and best-effort completion — the request may queue significantly longer than default-tier requests, so raise your client timeout accordingly, or use `background: true` and poll. All other accepted values (`auto`, `default`, `scale`, `priority`) are served at the default tier. Responses echo the tier actually served in `service_tier`. |
| `metadata` | ResponseMetadata | no | — | — |

## Responses

### `200` — Request fulfilled, document follows

Schema: `ResponseItem`

### `400` — Bad request syntax or unsupported method

Schema: `object`

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `status_code` | integer | yes | — | — |
| `detail` | string | yes | — | — |
| `extra` | null \| object \| array | no | — | — |

Source: https://sference.com/docs/api-reference/inference-api/V1ResponsesCreateResponse
