---
title: "`/v1/responses` — OpenAI Responses API (MVP, stateless single-turn)."
method: POST
path: "/v1/responses"
tags: ["inference"]
---

# \`/v1/responses\` — OpenAI Responses API (MVP, stateless single-turn).

`POST /v1/responses`

OpenAI Responses API (MVP). Strict allow-list parser (`product/design.md` §5.14): unknown top-level fields reject with 400 `unsupported_field`. `input` is either a string prompt OR an array of `{role, content}` messages (Workstream A array-input support). Known-rejected fields: `tools`, `tool_choice`, `previous_response_id`, `reasoning`, `background`, `metadata`, `instructions` — each rejects with 400 `unsupported_field`. `stream: true` is rejected (Responses SSE is deferred). Multimodal image content parts reject with 400 `unsupported_field` on the array form.

## Request body

- ResponsesRequest — OpenAI-compatible ``POST /v1/responses`` request (Responses MVP). **Strict allow-list** (Workstream A): unknown fields reject with 400 ``unsupported_field``. Type-invalid values reject with 400 ``invalid_request``. **Known-rejected fields** (per `product/design.md` §5.14): - ``tools`` / ``tool_choice`` — rejected with 400 ``unsupported_field``. - ``previous_response_id`` — rejected with 400 ``unsupported_field`` (Responses MVP is stateless single-turn). - ``reasoning`` — rejected with 400 ``unsupported_field``. - ``background`` — rejected with 400 ``unsupported_field``. - ``metadata`` — rejected with 400 ``unsupported_field``. - ``instructions`` — rejected with 400 ``unsupported_field``. - ``stream: true`` — rejected with 400 ``unsupported_field`` (SSE on Responses is deferred; use ``stream: false`` or omit). - Multimodal ``image_url`` / ``input_image`` content parts on the array form — rejected with 400 ``unsupported_field`` until a VL profile ships.
  - `input` union, required — Either a string prompt OR an array of `{role, content}` messages (Workstream A array-input support). Array form: `role` is one of `"system" | "user" | "assistant" | "developer"` ("developer" normalizes to "system"). `content` is a string or an array of text-only content parts; image parts (`image_url` / `input_image`) reject with 400 unsupported_field. The array must not be empty.
    - string
    - object[]
      - `content` union, required
        - string
        - object[]
          - `text` string
          - `type` 'text' | 'input_text', required
      - `role` 'system' | 'user' | 'assistant' | 'developer', required
  - `max_output_tokens` integer, nullable — Defaults to 16 (mirroring completions) when absent. Positive integer.
  - `model` string, required
  - `seed` integer, nullable — Best-effort determinism seed (i64 reinterpreted as u64). Non-integer values reject with 400 invalid_request.
  - `stream` false | null, nullable — Accepted only as `false` (or absent). `true` rejects with 400 unsupported_field (Responses SSE is deferred; tracked in `product/design.md` §5.14).
  - `temperature` number, float, nullable — Sampling temperature. Finite number ``>= 0``.
  - `top_p` number, float, nullable — Nucleus sampling. Finite number in ``(0, 1]``.

## Response `200`

Response object

## Other responses

- `400` — Invalid or unsupported request
- `401` — Missing or invalid bearer token (inference token)
- `404` — Model not found
- `500` — Worker emitted malformed response; gateway auth enabled but no tokens configured
- `503` — Queue unavailable

## Changes

- **2026-05-27** `d145a90eb76e` — 1 info
  - endpoint added
- **2026-05-08** `a499d5bea359` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/superlinked/apis/sie-gateway/changes/v1/responses/post.md)

---

[API](https://skmtc.dev/superlinked/apis/sie-gateway.md) · [All operations](https://skmtc.dev/superlinked/apis/sie-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/superlinked/sie-gateway/revisions/d145a90eb76e/schema)
