OpenAI Chat

Create a chat completion (OpenAI-compatible)

Changed on

Chat with a language model. This endpoint is consistent with the OpenAI Chat Completions API and may be used with the OpenAI JS or Python SDK by setting the base URL to https://api.telnyx.com/v2/ai/openai.

post/ai/openai/chat/completions

Request

  • Base URL: https://api.telnyx.com/v2
  • URL: https://api.telnyx.com/v2/ai/openai/chat/completions
  • Auth: HTTP bearer

Request body

modelstring

The language model to chat with.

service_tierstring

The service tier to use for this request. Supported values vary by model; use GET /v2/ai/openai/models and inspect the model's service_tiers field. If omitted, Telnyx-hosted models use default.

region'USA' | 'EU' | 'AUS' | 'UAE'

Optional data-residency region the request should be served from, using the same vocabulary as your account's Data Locality setting. Behavior depends on mode. Supported for Telnyx-hosted models only: a request routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it. Omit for today's latency-based routing.

mode'preferred' | 'strict'

How strictly region is applied. preferred (the default when region is set) tries that region first and falls back to another when the model cannot be served there, so a request that would have succeeded still succeeds. strict pins the request: it is served from that region or it fails with a 422, never redirected to another region. Requires region.

api_key_refstring

If you are using an external inference provider like xAI or OpenAI, this field allows you to pass along a reference to your API key. After creating an integration secret for you API key, pass the secret's identifier in this field.

streamboolean

Whether or not to stream data-only server-sent events as they become available.

temperaturenumber

Adjusts the "creativity" of the model. Lower values make the model more deterministic and repetitive, while higher values make the model more random and creative.

max_tokensinteger nullable

Maximum number of completion (output) tokens, including reasoning and answer tokens combined. An omitted or null limit defaults to 8192 unless the model is excluded from that default; excluded models leave the limit to the serving engine. Explicit values and applied defaults are clamped to the model's max_completion_tokens metadata when that ceiling is set (see GET /v2/ai/openai/models). An omitted limit on an excluded model remains unset even when metadata declares a ceiling. Input and output together must fit the model's context window. Set an explicit limit when a bounded generation budget is required. For current Telnyx-hosted models, omitted or null limits default to 8192 for zai-org/GLM-5.3, zai-org/GLM-5.3-Flash and deepseek-ai/DeepSeek-V4.1-Flash. The hosted exclusions are moonshotai/Kimi-K3, moonshotai/Kimi-K2.6, moonshotai/Kimi-K2.5, zai-org/GLM-5.2, zai-org/GLM-5.1-FP8, MiniMaxAI/MiniMax-M3-MXFP8, MiniMaxAI/MiniMax-M2.7, Qwen/Qwen3.8-27B, Qwen/Qwen3-235B-A22B, deepseek-ai/DeepSeek-V4-Flash-0731, meta-llama/Llama-3.3-70B-Instruct, meta-llama/Meta-Llama-3.1-70B-Instruct, meta-llama/Meta-Llama-3.1-8B-Instruct and google/gemma-2b-it. Legacy external and fine-tuned model IDs can also bypass the default; model discovery reports completion ceilings, not whether this default applies. Set an explicit limit for predictable behavior across models.

tool_choice'none' | 'auto' | 'required'
min_pnumber

This is an alternative to top_p that many prefer. Must be in [0, 1].

nnumber

This will return multiple choices for you instead of a single chat completion.

use_beam_searchboolean

Setting this to true will allow the model to explore more completion options. This is not supported by OpenAI.

best_ofinteger

This is used with use_beam_search to determine how many candidate beams to explore.

length_penaltynumber

This is used with use_beam_search to prefer shorter or longer completions.

early_stoppingboolean

This is used with use_beam_search. If true, generation stops as soon as there are best_of complete candidates; if false, a heuristic is applied and the generation stops when is it very unlikely to find better candidates.

logprobsboolean

Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message.

top_logprobsinteger

This is used with logprobs. An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability.

frequency_penaltynumber

Higher values will penalize the model from repeating the same output tokens.

presence_penaltynumber

Higher values will penalize the model from repeating the same output tokens.

top_pnumber

An alternative or complement to temperature. This adjusts how many of the top possibilities to consider.

seedinteger

If specified, the system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result.

enable_thinkingboolean

Whether to enable the thinking/reasoning phase for models that support it (e.g., QwQ, Qwen3). When set to false, the model will skip the internal reasoning step and respond directly, which can reduce latency. Defaults to true.

reasoning_effort'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'

Controls the reasoning effort for models that support it. When set, the model spends more or less compute on internal reasoning before generating its response. Supported values: none, minimal, low, medium, high, xhigh, max. Not all models support all values; unsupported values are rejected with a 400 error. When omitted, reasoning models use their default effort level.

Example request

{
  "messages": [
    {
      "role": "system",
      "content": "You are a friendly chatbot."
    },
    {
      "role": "user",
      "content": "Hello, world!"
    }
  ]
}

Response

Successful Response

object required

Changes