Completions
OpenAI-compatible API endpoints
Attention
Our API does not support all parameters offered by OpenAI. Requests are still accepted and processed, but not all parameters are considered.
Supported parameters:
modelmessagesresponse_format(only{ "type": "json_object" }or{ "type": "text" }— OpenAI'sjson_schema/ Strict Structured Outputs is not currently supported)streamtemperaturetoolstool_choice
Reasoning effort/level (e.g. OpenAI's reasoning_effort) cannot currently be set via the API — reasoning models use their default effort level for API requests.
Message content must be a plain text string — the API does not currently accept images, files, or other attachments (e.g. image_url content blocks) in chat completion requests. To send files or images, use the Assistants Run or Workflow execution API instead.
A few more behaviors come up often when migrating from OpenAI.
Note
For schema-validated JSON output without OpenAI's json_schema mode, define a tool whose parameters are the JSON Schema you want and set tool_choice to that function ({"type": "function", "function": {"name": "..."}}). The model is then required to call the function with arguments matching the schema — read the JSON from tool_calls[0].function.arguments instead of content.
Reasoning models add a further restriction on the temperature parameter:
Note
Reasoning-tier models use a fixed internal temperature and may reject other values. If you get an error with these models, try omitting temperature from your request or removing any client-side default.
Separately, model selection itself follows its own enablement logic:
Note
Not every model you see in MeinGPT chat is automatically usable via the API. Which models are enabled for your organization is set by a workspace admin (see Workspace Configuration).
Call GET /models/v1 to retrieve the exact list of models enabled for your API key, and use the value from the id field verbatim as model in your request.
If you send a model ID that no longer exists (for example because the model was retired), the API rejects the request with 400 and the message Validation error: Invalid input at 'model'. Retired model IDs are not redirected to a successor model for API calls. Only stored references in assistants, workflows and chats are migrated automatically. Replace the ID with a current ID from GET /models/v1. Notices about retired models are usually emailed to workspace admins; share them with the teams that run API integrations.
If you send a model value that isn't enabled for your organization, the API responds with 403 Forbidden and an error message of this form:
{
"status": "error",
"message": "Model 'your-model-id' is not enabled for this organization."
}This message is distinct from the general 403 error "completions API not enabled for organization" (which affects the entire completions API, not a single model). Free-tier models (currently GPT-5 Nano, API id gpt-5-nano) are exempt from this restriction and are always available.
Another 403 error occurs when the usage tier assigned to your account has reached its separate "API usage" limit or has €0.00 set there. This check runs before the model-enablement check, so it affects every paid model alike - switching models does not help. A workspace admin can assign you a usage tier with an API budget.
https://app.meingpt.com/api/openai/v1/chat/completionsCreate a chat completion
Creates a model response for the given chat conversation. Compatible with OpenAI's chat completions API.
🔒 ApiKeyAuth
Parameter
| Parameter | In | Typ | Beschreibung |
|---|---|---|---|
| Authorization* | header | string | API key for authentication. Use 'Bearer <your-api-key>' format. |
Request Body · application/json
| Feld | Typ | Beschreibung |
|---|---|---|
| messages* | Array<ChatMessage> | List of messages comprising the conversation so far |
| model* | string | ID of the model to use |
| response_format | object | |
| stream | boolean | Whether to stream back partial progress |
| temperature | number | Sampling temperature to use |
| tools | Array<object> | Tools (functions) the model may call. Not every model supports tool calling — a request with tools against an unsupported model returns 400. |
| tool_choice | "auto" | "none" | "required" | object | Controls which tool is called — 'auto', 'none', 'required', or a specific function. |
Responses
| Feld | Typ | Beschreibung |
|---|---|---|
| id | string | Unique identifier for the chat completion |
| object | string | |
| created | number | Unix timestamp |
| model | string | The model used |
| choices | Array<object> | |
| usage | Usage |
| Feld | Typ | Beschreibung |
|---|---|---|
| status | string | |
| message | string |
| Feld | Typ | Beschreibung |
|---|---|---|
| status | string | |
| message | string |
| Feld | Typ | Beschreibung |
|---|---|---|
| status | string | |
| message | string |
| Feld | Typ | Beschreibung |
|---|---|---|
| status | string | |
| message | string |