Responses

POST /v1/responses

POST /v1/responses speaks the OpenAI Responses API wire format. Authenticate with Authorization: Bearer sapi_.... For request and response fields not called out below, see OpenAI Compatibility.

Model availability

Only models with the responses capability accept this endpoint. As of 2026-08-03, that’s gpt-5.6-sol, gpt-5.6-terra, and gpt-5.6-luna. Every other model returns 400 invalid_request.

GET /v1/models is authoritative for which models currently support this endpoint — check each model’s capabilities list for /v1/responses. See Models & Receipts.

Request notes

  • model — required. One of the three responses-capable models above, or contract/{slug} for a contract that targets one of them.
  • Output limit fieldmax_output_tokens. Same rules as elsewhere: a positive integer, no larger than the model’s max output. Omit it and the per-model default is injected server-side, visible in the receipt’s transformed_fields.
  • stream — boolean; see below.

Example

$curl https://api.singularityapi.dev/v1/responses \
> -H "Authorization: Bearer $SINGULARITY_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "model": "gpt-5.6-luna",
> "input": "Say hello."
> }'

Streaming

Set "stream": true for standard OpenAI-compatible SSE, same as on chat completions; see Streaming for full SSE details. One difference: on this endpoint, usage is not auto-injected into the stream — chat completions injects stream_options.include_usage, but responses does not add anything.

Receipts, contracts, and limits

  • The same three response headers apply: x-singularity-request-id, x-singularity-receipt-id, and x-singularity-contract-revision on contract calls.
  • model calls that use contract/{slug} resolve the same way as on chat completions — see Contracts.
  • The same ~230-second request deadline applies; exceeding it returns 504 request_timeout.

See Errors & Rate Limits for the full error envelope and status table.