> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.mixlayer.com/api-reference/inference-ap-is/completions-legacy/completions/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.mixlayer.com/_mcp/server. # Create a text completion POST https://models.mixlayer.ai/v1/completions Content-Type: application/json Completes a text prompt. Set `stream` to true to receive JSON chunks as server-sent events; the stream ends with `data: [DONE]`. Reference: https://docs.mixlayer.com/api-reference/inference-ap-is/completions-legacy/completions ## Authentication - `Authorization` header (bearer token, required) — Mixlayer API key or console user session supplied as a Bearer token. ## Request ### Body (application/json) This endpoint expects a CompletionsRequest. - `model` (string, required) — Model identifier to use for generation. - `prompt` (string, required) — Text prompt to complete. - `max_tokens` (integer, optional, nullable) — Maximum number of tokens to generate. - `stop` (list of string, optional, nullable) — Strings that stop generation when encountered. - `stream` (boolean, optional, default: false) — When true, return server-sent events and terminate with `data: [DONE]`. - `stream_options` (StreamOptions, optional, nullable) - `temperature` (float, optional, nullable) — Sampling temperature. Higher values make output more random. - `top_k` (integer, optional, nullable) — Restricts sampling to the highest-probability tokens. ## Response ### 200 A complete response or a stream of completion chunks, selected by the request's `stream` field - `choices` (list of CompletionChoice, required) — Generated completion choices. - `created` (long, required) — Unix timestamp when the completion was created. - `id` (string, required) — Unique identifier for the completion. - `model` (string, required) — Model used to generate the completion. - `object` (enum, required) — Object type, always `text_completion`. - Allowed values: `text_completion` - `usage` (Usage, required) — Token usage for the request. ## Errors ### 400 Bad Request Error Invalid request or malformed JSON - `error` (OpenAIErrorDetails, required) ### 401 Unauthorized Error Missing or invalid API key - `error` (OpenAIErrorDetails, required) ### 402 Payment Required Error Billing is required - `error` (OpenAIErrorDetails, required) ### 403 Forbidden Error The API key lacks inference permission - `error` (OpenAIErrorDetails, required) ### 429 Too Many Requests Error Rate limit exceeded - `error` (OpenAIErrorDetails, required) ### 500 Internal Server Error Generation failed - `error` (OpenAIErrorDetails, required) ## Types ### StreamOptions - `include_obfuscation` (boolean, optional, nullable) — Accepted for OpenAI compatibility; obfuscation is not added by the gateway. - `include_usage` (boolean, optional, default: false) — Include a final usage-only chunk before the `[DONE]` event. ### CompletionChoice - `finish_reason` (string, required) — Why generation stopped. - `index` (integer, required) — Index of this choice in the response. - `text` (string, required) — Generated completion text. ### Usage - `completion_tokens` (integer, required) — Number of generated tokens. - `prompt_tokens` (integer, required) — Number of input tokens. - `prompt_tokens_details` (PromptTokensDetails, required) — Detailed input-token usage. - `total_tokens` (integer, required) — Total input and generated tokens. - `server_tool_use` (map from string to long, optional) ### OpenAIErrorDetails - `message` (string, required) - `type` (string, required) - `code` (string, optional, nullable) ### PromptTokensDetails - `audio_tokens` (integer, required) — Number of audio input tokens. - `cached_tokens` (integer, required) — Number of cached input tokens. ## Examples **Request** ```json { "model": "string", "prompt": "string" } ``` **Response** ```json { "choices": [ { "finish_reason": "string", "index": 1, "text": "string" } ], "created": 1, "id": "string", "model": "string", "object": "text_completion", "usage": { "completion_tokens": 1, "prompt_tokens": 1, "prompt_tokens_details": { "audio_tokens": 1, "cached_tokens": 1 }, "total_tokens": 1, "server_tool_use": {} } } ``` **SDK Code** ```python import requests url = "https://models.mixlayer.ai/v1/completions" payload = { "model": "string", "prompt": "string" } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://models.mixlayer.ai/v1/completions'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"model":"string","prompt":"string"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://models.mixlayer.ai/v1/completions" payload := strings.NewReader("{\n \"model\": \"string\",\n \"prompt\": \"string\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://models.mixlayer.ai/v1/completions") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"model\": \"string\",\n \"prompt\": \"string\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://models.mixlayer.ai/v1/completions") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"model\": \"string\",\n \"prompt\": \"string\"\n}") .asString(); ``` ```php request('POST', 'https://models.mixlayer.ai/v1/completions', [ 'body' => '{ "model": "string", "prompt": "string" }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ```