Public preview — This API is in public preview. Endpoints, schemas, and limits may change before general availability.
API
API reference
Interactive OpenAPI 3.1 reference for /v1/responses.
This is the live OpenAPI 3.1 reference for the EU GPT public API. Use the panels below to explore endpoints, see schemas, and try requests against your environment.
For a top-to-bottom prose walkthrough of the same surface, see Create a response.
EU GPT — Public API
v1.0.0 External-facing API for programmatic access to EU GPT.
Authenticate every request with an API key issued from the EU GPT web app:
Authorization: Bearer eugpt_<token>
Keys are managed in the chat UI (Settings → API Keys). They have no rotating refresh — revoke and reissue when needed.
Base URL
https://chat.eugpt.ai Production Authentication
apiKey http · bearer Bearer format eugpt_<token>
Authorization: Bearer eugpt_<token>.Endpoints
/v1/responses Create a response
Generate an AI response from a user message. Two modes:
- Streaming (
stream: true, default) — returns Server-Sent Events with OpenAI-compatible event payloads. Each event is delivered asevent: message\ndata: <json>\n\n. Stream completion is signalled by aresponse.completedevent. - Non-streaming (
stream: false) — collects all output and returns a single JSON document.
Conversations are optional. Omit conversation_id for stateless
requests; pass an existing UUID to append to a thread that belongs to
the authenticated user. Tools (web search, web fetch, calculator,
etc.) are auto-approved for API requests — there is no interactive
approval gate.
Request body Required
modelstringAccepted for OpenAI-SDK compatibility but ignored — the router always selects the model. Pass"auto"(the default and only meaningful value); any concrete id you send has no effect. The actual model used is reported in the responsemodelfield.DefaultautoExampleautoinputstring | ContentItem[]RequiredEither a plain string (single user message) or a list of structuredContentItemobjects for multi-modal / file input.streambooleanStream as SSE (true, default) or return a single JSON response (false).DefaulttrueinstructionsstringNullableSystem prompt for this response (or conversation, if new).conversation_iduuidNullableAppend to an existing conversation. Omit for a stateless request — an ephemeral conversation is created and returned in the response.project_iduuidNullableProject context for RAG retrieval. Caller must be a member of the project.
Responses
200 Either an SSE stream (stream: true) or a single JSON response
(stream: false). application/json · text/event-stream ▾
stream: true) or a single JSON response
(stream: false). iduuidRequiredobject"response"Requiredcreated_atintegerRequiredUnix epoch milliseconds (zero if the chain didn't emit).status"completed"RequiredmodelstringRequiredConcrete model id used (resolved from"auto"when needed).outputobject[]RequiredStructured output items (text blocks, tool calls, etc.) in the same shape as the SSEresponse.output_item.addedevents.output_textstringRequiredConcatenated text deltas — convenience for plain-text consumers.
400 Input message is required or otherwise invalid. application/json ▾
detailstring | objecterrorobject
401 Missing, expired, or revoked API key. application/json ▾
detailstring | objecterrorobject
403 License or organization policy denies the request — for example,
user is not a member of the requested project, or the
organization's plan disallows the operation. application/json ▾
detailstring | objecterrorobject
404 Referenced conversation or project does not exist. application/json ▾
detailstring | objecterrorobject
429 Daily or monthly token usage limit exceeded. application/json ▾
detailstring | objecterrorobject
500 Internal error during response generation. application/json ▾
detailstring | objecterrorobject
Schemas
CreateResponseRequest
object modelstringAccepted for OpenAI-SDK compatibility but ignored — the router always selects the model. Pass"auto"(the default and only meaningful value); any concrete id you send has no effect. The actual model used is reported in the responsemodelfield.DefaultautoExampleautoinputstring | ContentItem[]RequiredEither a plain string (single user message) or a list of structuredContentItemobjects for multi-modal / file input.streambooleanStream as SSE (true, default) or return a single JSON response (false).DefaulttrueinstructionsstringNullableSystem prompt for this response (or conversation, if new).conversation_iduuidNullableAppend to an existing conversation. Omit for a stateless request — an ephemeral conversation is created and returned in the response.project_iduuidNullableProject context for RAG retrieval. Caller must be a member of the project.
ContentItem
object rolestringNullableOptional role hint (e.g."user").typestringNullablecontentInputText | InputFile[]Required
InputContent
InputText | InputFile InputText
object type"input_text"RequiredtextstringRequired
InputFile
object type"input_file"Requiredfile_iduuidRequiredId of a file previously uploaded via the file upload API.
ResponseObject
object stream: false.iduuidRequiredobject"response"Requiredcreated_atintegerRequiredUnix epoch milliseconds (zero if the chain didn't emit).status"completed"RequiredmodelstringRequiredConcrete model id used (resolved from"auto"when needed).outputobject[]RequiredStructured output items (text blocks, tool calls, etc.) in the same shape as the SSEresponse.output_item.addedevents.output_textstringRequiredConcatenated text deltas — convenience for plain-text consumers.
SseEventStream
text/event-stream data: line.
Event types:
- response.created — initial event with response metadata.
- response.output_text.delta — incremental text chunks.
- response.output_text.done — text part finalised.
- response.output_item.added / response.output_item.done —
structured items (tool calls, file references).
- response.content_part.added — additional content parts.
- response.completed — terminal success event.
- error — terminal error event with {type, code, message}.Error
object detailstring | objecterrorobject