Responses API
POST /v1/responses (also served at /responses) speaks the OpenAI Responses
shape.
curl https://gw.lunaroute.com/v1/responses \ -H "LUNAROUTE-API-KEY: $LUNAROUTE_API_KEY" \ -H "content-type: application/json" \ -d '{ "model": "glm-5.3", "input": "Say hello in one sentence." }'Background model variants, project attribution, and BYOK passthrough behave the same as in Chat completions. Choose this dialect when your client already speaks it; the model catalog is shared across dialects.
Statelessness and response chaining
Section titled “Statelessness and response chaining”Managed LunaRoute routes are stateless: the gateway keeps no server-side
response store, so a follow-up request that sets previous_response_id is
rejected with 400 rather than forwarded to an upstream that cannot resolve it:
{ "error": { "type": "invalid_request_error", "code": "previous_response_id_not_supported", "param": "previous_response_id", "message": "previous_response_id is not supported on managed routes: /v1/responses is stateless here. Resend the full conversation history in `input` and use `store: false`." }}Send the full conversation history in input on every turn. store is accepted
and forwarded, but nothing is retained by the gateway, so the returned response
id is informational and cannot be chained on managed routes.
External/BYOK passthrough routes are not affected: their upstream provider may
support previous_response_id and the request is forwarded unchanged.