Baseten Chat Completions API
The Chat Completions API from Baseten — 1 operation(s) for chat completions.
The Chat Completions API from Baseten — 1 operation(s) for chat completions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/baseten-chat-completions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Baseten LLM Inference Chat Completions API
version: 1.0.0
description: OpenAI-compatible API for Baseten Model APIs. Use this endpoint to interact with hosted LLMs.
servers:
- url: https://inference.baseten.co
description: Baseten Inference API.
security:
- ApiKeyAuth: []
tags:
- name: Chat Completions
paths:
/v1/chat/completions:
post:
operationId: createChatCompletion
summary: Create a chat completion
description: Creates a chat completion for the provided conversation. This endpoint is fully compatible with the OpenAI Chat Completions API, allowing you to use standard OpenAI SDKs by changing only the base URL and API key.
tags:
- Chat Completions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionResponse'
'400':
description: 'Bad request: invalid parameters.'
'401':
description: 'Unauthorized: invalid or missing API key.'
'429':
description: Rate limit exceeded.
'500':
description: Internal server error.
x-codeSamples:
- lang: python
label: Python
source: "from openai import OpenAI\nimport os\n\nclient = OpenAI(\n base_url=\"https://inference.baseten.co/v1\",\n api_key=os.environ.get(\"BASETEN_API_KEY\"),\n)\n\nresponse = client.chat.completions.create(\n model=\"deepseek-ai/DeepSeek-V4-Pro\",\n messages=[\n {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n {\"role\": \"user\", \"content\": \"Hello!\"},\n ],\n)\n\nprint(response.choices[0].message.content)"
- lang: javascript
label: JavaScript
source: "import OpenAI from \"openai\";\n\nconst client = new OpenAI({\n baseURL: \"https://inference.baseten.co/v1\",\n apiKey: process.env.BASETEN_API_KEY,\n});\n\nconst response = await client.chat.completions.create({\n model: \"deepseek-ai/DeepSeek-V4-Pro\",\n messages: [\n { role: \"system\", content: \"You are a helpful assistant.\" },\n { role: \"user\", content: \"Hello!\" },\n ],\n});\n\nconsole.log(response.choices[0].message.content);"
- lang: bash
label: cURL
source: "curl https://inference.baseten.co/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Api-Key $BASETEN_API_KEY\" \\\n -d '{\n \"model\": \"deepseek-ai/DeepSeek-V4-Pro\",\n \"messages\": [\n {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n {\"role\": \"user\", \"content\": \"Hello!\"}\n ]\n }'"
components:
schemas:
ChatCompletionNamedToolChoiceParam:
additionalProperties: false
properties:
function:
$ref: '#/components/schemas/ChatCompletionNamedFunction'
description: The function to call.
type:
const: function
default: function
title: Type
type: string
description: The type, always `function`.
required:
- function
title: ChatCompletionNamedToolChoiceParam
type: object
description: Forces the model to call a specific function.
ChatCompletionContentPartInputAudioParam:
additionalProperties: false
properties:
type:
const: input_audio
title: Type
type: string
description: The content type, always `input_audio`.
input_audio:
$ref: '#/components/schemas/InputAudio'
description: The audio data and format.
required:
- type
- input_audio
title: ChatCompletionContentPartInputAudioParam
type: object
description: Audio content part for audio-capable models.
StreamOptions:
additionalProperties: false
properties:
include_usage:
default: true
title: Include Usage
description: If `true`, includes token usage statistics in the final streaming chunk.
type: boolean
continuous_usage_stats:
default: true
title: Continuous Usage Stats
description: If `true`, includes running token usage statistics in each streaming chunk.
type: boolean
title: StreamOptions
type: object
description: Options for streaming responses.
ChatCompletionLogProbsContent:
additionalProperties: false
properties:
token:
title: Token
type: string
description: The token string.
logprob:
default: -9999
title: Logprob
type: number
description: The log probability of the token.
bytes:
default: null
title: Bytes
description: The UTF-8 byte representation of the token.
items:
type: integer
type: array
top_logprobs:
default: null
title: Top Logprobs
description: List of the most likely tokens and their log probabilities at this position.
items:
$ref: '#/components/schemas/ChatCompletionLogProb'
type: array
required:
- token
title: ChatCompletionLogProbsContent
type: object
description: Log probability information for a token in the content.
UsageInfo:
additionalProperties: false
properties:
completion_tokens:
default: 0
title: Completion Tokens
type: integer
description: Number of tokens in the generated completion.
prompt_tokens:
default: 0
title: Prompt Tokens
type: integer
description: Number of tokens in the prompt.
total_tokens:
default: 0
title: Total Tokens
type: integer
description: Total number of tokens used (prompt + completion).
completion_tokens_details:
$ref: '#/components/schemas/CompletionTokensDetails'
description: Breakdown of completion token usage.
prompt_tokens_details:
$ref: '#/components/schemas/PromptTokensDetails'
description: Breakdown of prompt token usage.
title: UsageInfo
type: object
description: Token usage statistics for the request.
ChatCompletionNamedFunction:
additionalProperties: false
properties:
name:
title: Name
type: string
description: The name of the function to call.
required:
- name
title: ChatCompletionNamedFunction
type: object
description: Specifies a function to call by name.
ChatCompletionContentPartImageParam:
additionalProperties: false
properties:
type:
const: image_url
title: Type
type: string
description: The content type, always `image_url`.
image_url:
$ref: '#/components/schemas/ImageURL'
description: The image URL and detail settings.
required:
- type
- image_url
title: ChatCompletionContentPartImageParam
type: object
description: Image content part for vision models.
PromptTokensDetails:
additionalProperties: false
properties:
audio_tokens:
default: 0
title: Audio Tokens
type: integer
description: Number of audio tokens in the prompt.
cached_tokens:
default: 0
title: Cached Tokens
type: integer
description: Number of tokens retrieved from cache.
title: PromptTokensDetails
type: object
description: Breakdown of tokens used in the prompt.
ResponseFormatStructuralTag:
additionalProperties: false
properties:
type:
const: structural_tag
title: Type
type: string
description: The response format type, always `structural_tag`.
structural_tag:
title: Structural Tag
type: string
description: The structural tag definition.
required:
- type
- structural_tag
title: ResponseFormatStructuralTag
type: object
description: Structural tag response format.
ToolCall:
additionalProperties: false
properties:
index:
title: Index
type: integer
description: The index of this tool call in the list of tool calls.
id:
title: Id
type: string
description: A unique identifier for this tool call.
type:
const: function
default: function
title: Type
type: string
description: The type of tool call (always `function`).
function:
$ref: '#/components/schemas/FunctionCall'
description: The function that the model called.
required:
- index
- function
title: ToolCall
type: object
description: A tool call generated by the model.
ChatCompletionMessage:
type: object
required:
- role
description: 'A message in the conversation. Supports roles: `system`, `user`, `assistant`, and `tool`.'
properties:
role:
type: string
enum:
- system
- user
- assistant
- tool
description: 'The role of the message author: `system` (instructions), `user` (input), `assistant` (model response), or `tool` (tool result).'
content:
anyOf:
- type: string
- type: array
items:
anyOf:
- $ref: '#/components/schemas/ChatCompletionContentPartTextParam'
- $ref: '#/components/schemas/ChatCompletionContentPartImageParam'
- $ref: '#/components/schemas/ChatCompletionContentPartInputAudioParam'
description: The message content. Can be a string or an array of content parts (text, image, audio) for multimodal inputs.
name:
type: string
description: An optional name for the participant. Useful for distinguishing between multiple users or assistants.
tool_calls:
type: array
items:
$ref: '#/components/schemas/ChatCompletionMessageToolCallParam'
description: Tool calls generated by the model (for assistant messages).
tool_call_id:
type: string
description: The ID of the tool call this message responds to (required for tool messages).
ChatCompletionLogProbs:
additionalProperties: false
properties:
content:
default: null
title: Content
description: A list of log probability information for each token in the content.
items:
$ref: '#/components/schemas/ChatCompletionLogProbsContent'
type: array
title: ChatCompletionLogProbs
type: object
description: Log probability information for the completion.
ImageURL:
additionalProperties: false
properties:
url:
title: Url
type: string
description: The URL of the image, or a base64-encoded data URL.
detail:
default: null
title: Detail
description: 'The detail level: `auto` (default), `low` (512px max), or `high` (full resolution).'
enum:
- auto
- low
- high
type: string
required:
- url
title: ImageURL
type: object
description: An image URL with optional detail settings.
ChatCompletionRequest:
additionalProperties: false
properties:
messages:
type: array
items:
$ref: '#/components/schemas/ChatCompletionMessage'
description: 'A list of messages representing the conversation history. Supports roles: `system`, `user`, `assistant`, and `tool`.'
model:
title: Model
type: string
description: The model slug to use for completion, such as `deepseek-ai/DeepSeek-V4-Pro`. Find available models at [Model APIs](https://app.baseten.co/model-apis/create).
frequency_penalty:
default: 0
title: Frequency Penalty
description: Penalizes tokens based on how frequently they appear in the text so far. Positive values decrease repetition. Support varies by model.
type: number
logit_bias:
default: null
title: Logit Bias
description: A map of token IDs to bias values (-100 to 100). Use this to increase or decrease the likelihood of specific tokens appearing in the output.
additionalProperties:
type: number
type: object
logprobs:
default: false
title: Logprobs
description: If `true`, returns log probabilities of the output tokens. Log probability support varies by model.
type: boolean
top_logprobs:
default: 0
title: Top Logprobs
description: 'Number of most likely tokens to return at each position (0-20). Requires `logprobs: true`. Log probability support varies by model.'
type: integer
max_tokens:
default: 4096
maximum: 262144
minimum: 1
title: Max Tokens
type: integer
description: Maximum number of tokens to generate. If your request input plus `max_tokens` exceeds the model's context length, `max_tokens` is truncated. If your request exceeds the context length by more than 16k tokens or if `max_tokens` signals no preference, context reservation is throttled to 49512 tokens. Higher `max_tokens` values slightly deprioritize request scheduling.
n:
default: 1
title: N
description: Number of completions to generate. Only `1` is supported.
type: integer
presence_penalty:
default: 0
title: Presence Penalty
description: Penalizes tokens based on whether they have appeared in the text so far. Positive values encourage the model to discuss new topics. Support varies by model.
type: number
response_format:
anyOf:
- $ref: '#/components/schemas/ResponseFormatText'
- $ref: '#/components/schemas/ResponseFormatJson'
- $ref: '#/components/schemas/ResponseFormatJsonObject'
- $ref: '#/components/schemas/ResponseFormatGrammar'
- $ref: '#/components/schemas/ResponseFormatStructuralTag'
default: null
title: Response Format
description: 'Specifies the output format. Use `{"type": "json_object"}` for JSON mode, or `{"type": "json_schema", "json_schema": {...}}` for structured outputs with a specific schema.'
seed:
default: null
title: Seed
description: Random seed for deterministic generation. Determinism is not guaranteed across different hardware or model versions.
type: integer
stop:
anyOf:
- maxLength: 1000
minLength: 1
type: string
- items:
maxLength: 1000
minLength: 1
type: string
maxItems: 32
type: array
title: Stop
description: Up to 32 sequences where the API stops generating further tokens. Can be a string or array of strings.
stream:
default: false
title: Stream
description: If `true`, responses are streamed back as server-sent events (SSE) as they are generated.
type: boolean
stream_options:
default: null
description: 'Options for streaming responses. Set `include_usage: true` to receive token usage statistics in the final chunk.'
$ref: '#/components/schemas/StreamOptions'
temperature:
default: null
title: Temperature
description: Controls randomness in the output. Lower values like 0.2 produce more focused and deterministic responses. Higher values like 1.5 produce more creative and varied output.
maximum: 4
minimum: 0
type: number
top_p:
default: 1
title: Top P
description: 'Nucleus sampling: only consider tokens with cumulative probability up to this value. Lower values like 0.1 produce more focused output.'
exclusiveMinimum: 0
maximum: 1
type: number
tools:
default: null
title: Tools
description: 'A list of tools (functions) the model may call. Each tool should have a `type: "function"` and a `function` object with `name`, `description`, and `parameters`.'
items:
$ref: '#/components/schemas/ChatCompletionToolsParam'
type: array
tool_choice:
anyOf:
- enum:
- none
- required
- auto
type: string
- $ref: '#/components/schemas/ChatCompletionNamedToolChoiceParam'
default: null
title: Tool Choice
description: 'Controls which tool (if any) the model calls.
- `none`: Never call a tool.
- `auto`: Model decides whether to call a tool.
- `required`: Model must call at least one tool.
- `{"type": "function", "function": {"name": "..."}}`: Call a specific function.'
parallel_tool_calls:
default: true
title: Parallel Tool Calls
description: If `true`, the model can call multiple tools in a single response.
type: boolean
user:
default: null
title: User
description: A unique identifier for the end-user, useful for tracking and abuse detection.
type: string
best_of:
default: null
title: Best Of
description: Number of candidate sequences to generate and return the best from. Only a value of 1 is supported.
maximum: 1
minimum: 1
type: integer
top_k:
default: 50
title: Top K
description: Limits token selection to the top K most probable tokens at each step. Lower values like 10 produce more focused output. Set to -1 to disable.
type: integer
top_p_min:
default: 0
title: Top P Min
type: number
description: Minimum value for dynamic `top_p`. When set, `top_p` dynamically adjusts but does not go below this value.
min_p:
default: 0
title: Min P
type: number
description: Minimum probability threshold for token selection. Filters out tokens with probability below `min_p * max_probability`.
repetition_penalty:
default: 1
title: Repetition Penalty
type: number
description: Multiplicative penalty for repeated tokens. Values greater than 1.0 discourage repetition, values less than 1.0 encourage it.
length_penalty:
default: 1
title: Length Penalty
type: number
description: Exponential penalty applied to sequence length during beam search. Values greater than 1.0 favor longer sequences.
early_stopping:
default: false
title: Early Stopping
type: boolean
description: If `true`, stops generation when at least `n` complete candidates are found.
bad:
anyOf:
- type: string
- items:
type: string
type: array
title: Bad
description: Words or phrases to avoid in the output. Support varies by model.
bad_token_ids:
title: Bad Token Ids
description: Token IDs to avoid in the output. Support varies by model.
items:
type: integer
type: array
stop_token_ids:
title: Stop Token Ids
description: List of token IDs that cause generation to stop when encountered.
items:
type: integer
type: array
include_stop_str_in_output:
default: false
title: Include Stop Str In Output
type: boolean
description: If `true`, includes the matched stop string in the output.
ignore_eos:
default: false
title: Ignore Eos
type: boolean
description: If `true`, continues generating past the end-of-sequence token.
min_tokens:
default: 0
title: Min Tokens
type: integer
description: Minimum number of tokens to generate before stopping. Useful for ensuring responses are not too short.
skip_special_tokens:
default: true
title: Skip Special Tokens
type: boolean
description: If `true`, removes special tokens from the generated output.
spaces_between_special_tokens:
default: true
title: Spaces Between Special Tokens
type: boolean
description: If `true`, adds spaces between special tokens in the output.
truncate_prompt_tokens:
default: null
title: Truncate Prompt Tokens
description: If set, truncates the prompt to this many tokens. Useful for handling inputs that may exceed context limits.
minimum: 1
type: integer
echo:
default: false
description: If `true` and the last message role matches the generation role, prepends that message to the output.
title: Echo
type: boolean
add_generation_prompt:
default: true
description: If `true`, adds the generation prompt from the chat template, such as `<|assistant|>`. Set to `false` for completion-style generation.
title: Add Generation Prompt
type: boolean
add_special_tokens:
default: false
description: If `true`, adds special tokens like BOS to the prompt beyond what the chat template adds. For most models, the chat template handles special tokens, so this should be `false`.
title: Add Special Tokens
type: boolean
documents:
default: null
description: A list of documents for RAG (retrieval-augmented generation). Each document is a dict with string keys and values that the model can reference.
title: Documents
items:
additionalProperties:
type: string
type: object
type: array
chat_template:
default: null
description: A custom Jinja template for formatting the conversation. If not provided, uses the model's default template.
title: Chat Template
type: string
chat_template_args:
default: null
description: Additional arguments to pass to the chat template renderer.
title: Chat Template Args
additionalProperties: true
type: object
disaggregated_params:
default: null
description: Advanced parameters for disaggregated serving. Used internally for distributed inference.
$ref: '#/components/schemas/DisaggregatedParams'
required:
- messages
- model
title: ChatCompletionRequest
type: object
description: Request body for creating a chat completion.
CompletionTokensDetails:
additionalProperties: false
properties:
accepted_prediction_tokens:
default: 0
title: Accepted Prediction Tokens
type: integer
description: Number of tokens in accepted predictions (for speculative decoding).
audio_tokens:
default: 0
title: Audio Tokens
type: integer
description: Number of audio tokens generated.
reasoning_tokens:
default: 0
title: Reasoning Tokens
type: integer
description: Number of tokens used for reasoning (for models that support extended thinking).
rejected_prediction_tokens:
default: 0
title: Rejected Prediction Tokens
type: integer
description: Number of tokens in rejected predictions (for speculative decoding).
title: CompletionTokensDetails
type: object
description: Breakdown of tokens used in the completion.
ChatCompletionLogProb:
additionalProperties: false
properties:
token:
title: Token
type: string
description: The token string.
logprob:
default: -9999
title: Logprob
type: number
description: The log probability of the token.
bytes:
default: null
title: Bytes
description: The UTF-8 byte representation of the token.
items:
type: integer
type: array
required:
- token
title: ChatCompletionLogProb
type: object
description: Log probability information for a token.
DisaggregatedParams:
additionalProperties: false
properties:
request_type:
title: Request Type
type: string
description: The type of disaggregated request.
first_gen_tokens:
default: null
title: First Gen Tokens
description: First generation tokens for continuation.
items:
type: integer
type: array
ctx_request_id:
default: null
title: Ctx Request Id
description: Context request identifier.
type: integer
opaque_state:
default: null
title: Opaque State
description: Opaque state for continuation.
type: string
draft_tokens:
default: null
title: Draft Tokens
description: Draft tokens for speculative decoding.
items:
type: integer
type: array
multimodal_embedding_handles:
default: null
title: Multimodal Embedding Handles
description: Handles for multimodal embeddings.
items:
additionalProperties: true
type: object
type: array
multimodal_hashes:
default: null
title: Multimodal Hashes
description: Hashes for multimodal content.
items:
items:
type: integer
type: array
type: array
required:
- request_type
title: DisaggregatedParams
type: object
description: Advanced parameters for disaggregated serving. Used internally.
JsonSchema:
additionalProperties: false
properties:
name:
title: Name
type: string
description: The name of the schema.
description:
default: null
title: Description
description: A description of the schema.
type: string
schema:
additionalProperties: true
title: Schema
type: object
description: The JSON Schema definition.
strict:
default: true
title: Strict
description: If `true`, enables strict schema adherence.
const: true
type: boolean
required:
- name
- schema
title: JsonSchema
type: object
description: A JSON schema for structured output.
DeltaMessage:
additionalProperties: false
properties:
role:
default: null
title: Role
description: The role of the message author (typically `assistant`).
type: string
content:
default: null
title: Content
description: The content chunk generated by the model.
type: string
tool_calls:
items:
$ref: '#/components/schemas/ToolCall'
title: Tool Calls
type: array
description: Tool calls generated by the model.
title: DeltaMessage
type: object
description: A delta message chunk in a streaming response.
ResponseFormatText:
additionalProperties: false
properties:
type:
const: text
title: Type
type: string
description: The response format type, always `text`.
required:
- type
title: ResponseFormatText
type: object
description: Plain text response format.
ResponseFormatJsonObject:
additionalProperties: false
properties:
type:
const: json_object
title: Type
type: string
description: The response format type, always `json_object`.
required:
- type
title: ResponseFormatJsonObject
type: object
description: JSON object response format.
ChatCompletionResponse:
additionalProperties: false
properties:
id:
title: Id
type: string
description: A unique identifier for the chat completion.
object:
const: chat.completion.chunk
default: chat.completion.chunk
title: Object
type: string
description: The object type, always `chat.completion` or `chat.completion.chunk` for streaming.
created:
title: Created
type: integer
description: The Unix timestamp (in seconds) of when the completion was created.
model:
title: Model
type: string
description: The model used for the completion.
choices:
items:
$ref: '#/components/schemas/ChatCompletionResponseStreamChoice'
title: Choices
type: array
description: A list of chat completion choices.
usage:
default: null
description: 'Token usage statistics for the request. Only present when streaming with `stream_options.include_usage: true`.'
$ref: '#/components/schemas/UsageInfo'
required:
- model
- choices
title: ChatCompletionStreamResponse
type: object
description: A chat completion response returned by the model.
ChatCompletionContentPartTextParam:
additionalProperties: false
properties:
type:
const: text
title: Type
type: string
description: The content type, always `text`.
text:
title: Text
type: string
description: The text content.
required:
- type
- text
title: ChatCompletionContentPartTextParam
type: object
description: Text content part.
ChatCompletionMessageToolCallParam:
additionalProperties: false
properties:
id:
title: Id
type: string
description: The ID of the tool call.
index:
title: Index
description: The index of the tool call.
type: integer
function:
$ref: '#/components/schemas/Function'
description: The function that was called.
type:
const: function
title: Type
type: string
description: The type, always `function`.
required:
- id
- function
- type
title: ChatCompletionMessageToolCallParam
type: object
description: A tool call in an assistant message.
ResponseFormatGrammar:
additionalProperties: false
properties:
type:
const: grammar
title: Type
type: string
description: The response format type, always `grammar`.
grammar:
title: Grammar
type: string
description: The grammar definition string.
required:
- type
- grammar
title: ResponseFormatGrammar
type: object
description: Grammar-based response format.
ChatCompletionResponseStreamChoice:
additionalProperties: false
properties:
index:
title: Index
type: integer
description: The index of this choice in the list of choices.
delta:
$ref: '#/components/schemas/DeltaMessage'
description: The delta content for streaming responses.
logprobs:
default: null
description: Log probability information for the choice
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/baseten/refs/heads/main/openapi/baseten-chat-completions-api-openapi.yml