OpenAI Assistants API
API for building AI assistants with custom instructions and tool access.
API for building AI assistants with custom instructions and tool access.
openapi: 3.1.0
info:
title: OpenAI APIs OpenAI Assistants API
description: >-
API for building AI assistants with custom instructions, knowledge
retrieval, code execution, and function calling capabilities. Supports
managing assistants, threads, messages, and runs.
version: '2.0'
contact:
name: OpenAI Support
email: [email protected]
url: https://help.openai.com
termsOfService: https://openai.com/policies/terms-of-use
externalDocs:
description: OpenAI Assistants API Documentation
url: https://platform.openai.com/docs/api-reference/assistants
servers:
- url: https://api.openai.com/v1
description: OpenAI Production API
tags:
- name: Assistants
description: Manage AI assistants
- name: Messages
description: Manage messages within threads
- name: Runs
description: Execute assistants on threads
- name: Threads
description: Manage conversation threads
security:
- bearerAuth: []
paths:
/assistants:
get:
operationId: listAssistants
summary: OpenAI APIs List assistants
description: Returns a list of assistants.
tags:
- Assistants
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: List of assistants
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse'
'401':
description: Unauthorized
post:
operationId: createAssistant
summary: OpenAI APIs Create assistant
description: Create an assistant with a model and instructions.
tags:
- Assistants
parameters:
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAssistantRequest'
responses:
'200':
description: Assistant created
content:
application/json:
schema:
$ref: '#/components/schemas/Assistant'
'400':
description: Invalid request
'401':
description: Unauthorized
/assistants/{assistant_id}:
get:
operationId: getAssistant
summary: OpenAI APIs Retrieve assistant
description: Retrieves an assistant by ID.
tags:
- Assistants
parameters:
- $ref: '#/components/parameters/assistantId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Assistant details
content:
application/json:
schema:
$ref: '#/components/schemas/Assistant'
'404':
description: Assistant not found
post:
operationId: modifyAssistant
summary: OpenAI APIs Modify assistant
description: Modifies an assistant.
tags:
- Assistants
parameters:
- $ref: '#/components/parameters/assistantId'
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModifyAssistantRequest'
responses:
'200':
description: Assistant modified
content:
application/json:
schema:
$ref: '#/components/schemas/Assistant'
'400':
description: Invalid request
delete:
operationId: deleteAssistant
summary: OpenAI APIs Delete assistant
description: Delete an assistant by ID.
tags:
- Assistants
parameters:
- $ref: '#/components/parameters/assistantId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Assistant deleted
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteResponse'
'404':
description: Assistant not found
/threads:
post:
operationId: createThread
summary: OpenAI APIs Create thread
description: Create a thread.
tags:
- Threads
parameters:
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateThreadRequest'
responses:
'200':
description: Thread created
content:
application/json:
schema:
$ref: '#/components/schemas/Thread'
'400':
description: Invalid request
/threads/{thread_id}:
get:
operationId: getThread
summary: OpenAI APIs Retrieve thread
description: Retrieves a thread by ID.
tags:
- Threads
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Thread details
content:
application/json:
schema:
$ref: '#/components/schemas/Thread'
'404':
description: Thread not found
post:
operationId: modifyThread
summary: OpenAI APIs Modify thread
description: Modifies a thread.
tags:
- Threads
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
metadata:
type: object
description: Metadata to attach to the thread
responses:
'200':
description: Thread modified
content:
application/json:
schema:
$ref: '#/components/schemas/Thread'
delete:
operationId: deleteThread
summary: OpenAI APIs Delete thread
description: Delete a thread by ID.
tags:
- Threads
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Thread deleted
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteResponse'
/threads/{thread_id}/messages:
get:
operationId: listMessages
summary: OpenAI APIs List messages
description: Returns a list of messages for a given thread.
tags:
- Messages
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: List of messages
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse'
post:
operationId: createMessage
summary: OpenAI APIs Create message
description: Create a message within a thread.
tags:
- Messages
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMessageRequest'
responses:
'200':
description: Message created
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'400':
description: Invalid request
/threads/{thread_id}/messages/{message_id}:
get:
operationId: getMessage
summary: OpenAI APIs Retrieve message
description: Retrieve a message by ID.
tags:
- Messages
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/messageId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Message details
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'404':
description: Message not found
/threads/{thread_id}/runs:
get:
operationId: listRuns
summary: OpenAI APIs List runs
description: Returns a list of runs belonging to a thread.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: List of runs
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse'
post:
operationId: createRun
summary: OpenAI APIs Create run
description: Create a run on a thread.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRunRequest'
responses:
'200':
description: Run created
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
'400':
description: Invalid request
/threads/{thread_id}/runs/{run_id}:
get:
operationId: getRun
summary: OpenAI APIs Retrieve run
description: Retrieves a run by ID.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/runId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Run details
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
'404':
description: Run not found
/threads/{thread_id}/runs/{run_id}/cancel:
post:
operationId: cancelRun
summary: OpenAI APIs Cancel run
description: Cancels an in-progress run.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/runId'
- $ref: '#/components/parameters/OpenAIBeta'
responses:
'200':
description: Run cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
/threads/{thread_id}/runs/{run_id}/submit_tool_outputs:
post:
operationId: submitToolOutputs
summary: OpenAI APIs Submit tool outputs
description: >-
Submit outputs from tool calls when a run has the status
requires_action with required_action type submit_tool_outputs.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/threadId'
- $ref: '#/components/parameters/runId'
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- tool_outputs
properties:
tool_outputs:
type: array
items:
type: object
properties:
tool_call_id:
type: string
output:
type: string
responses:
'200':
description: Run resumed
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
/threads/runs:
post:
operationId: createThreadAndRun
summary: OpenAI APIs Create thread and run
description: Create a thread and run it in one request.
tags:
- Runs
parameters:
- $ref: '#/components/parameters/OpenAIBeta'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- assistant_id
properties:
assistant_id:
type: string
description: The ID of the assistant to use
thread:
$ref: '#/components/schemas/CreateThreadRequest'
model:
type: string
instructions:
type: string
tools:
type: array
items:
type: object
metadata:
type: object
responses:
'200':
description: Run created
content:
application/json:
schema:
$ref: '#/components/schemas/Run'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: OpenAI API key passed as a Bearer token
parameters:
assistantId:
name: assistant_id
in: path
required: true
description: The ID of the assistant
schema:
type: string
threadId:
name: thread_id
in: path
required: true
description: The ID of the thread
schema:
type: string
messageId:
name: message_id
in: path
required: true
description: The ID of the message
schema:
type: string
runId:
name: run_id
in: path
required: true
description: The ID of the run
schema:
type: string
limit:
name: limit
in: query
description: Maximum number of objects to return (1-100, default 20)
schema:
type: integer
minimum: 1
maximum: 100
default: 20
order:
name: order
in: query
description: Sort order by created_at timestamp
schema:
type: string
enum:
- asc
- desc
default: desc
after:
name: after
in: query
description: A cursor for pagination (object ID to start after)
schema:
type: string
before:
name: before
in: query
description: A cursor for pagination (object ID to end before)
schema:
type: string
OpenAIBeta:
name: OpenAI-Beta
in: header
required: true
description: Required header for the Assistants API beta
schema:
type: string
enum:
- assistants=v2
schemas:
Assistant:
type: object
properties:
id:
type: string
description: The identifier of the assistant
object:
type: string
enum:
- assistant
created_at:
type: integer
description: Unix timestamp of creation
name:
type: string
nullable: true
description: The name of the assistant
description:
type: string
nullable: true
description: The description of the assistant
model:
type: string
description: ID of the model used by the assistant
instructions:
type: string
nullable: true
description: The system instructions for the assistant
tools:
type: array
items:
type: object
properties:
type:
type: string
enum:
- code_interpreter
- file_search
- function
description: List of tools enabled on the assistant
metadata:
type: object
description: Key-value metadata attached to the assistant
temperature:
type: number
description: Sampling temperature for the assistant
top_p:
type: number
description: Nucleus sampling parameter
response_format:
oneOf:
- type: string
enum:
- auto
- type: object
description: Response format configuration
CreateAssistantRequest:
type: object
required:
- model
properties:
model:
type: string
description: ID of the model to use
name:
type: string
nullable: true
description: The name of the assistant (max 256 chars)
description:
type: string
nullable: true
description: The description of the assistant (max 512 chars)
instructions:
type: string
nullable: true
description: System instructions for the assistant (max 256000 chars)
tools:
type: array
items:
type: object
description: List of tools enabled on the assistant (max 128)
metadata:
type: object
description: Key-value metadata (max 16 pairs)
temperature:
type: number
minimum: 0
maximum: 2
description: Sampling temperature
top_p:
type: number
minimum: 0
maximum: 1
description: Nucleus sampling parameter
response_format:
oneOf:
- type: string
enum:
- auto
- type: object
description: Response format configuration
ModifyAssistantRequest:
type: object
properties:
model:
type: string
name:
type: string
nullable: true
description:
type: string
nullable: true
instructions:
type: string
nullable: true
tools:
type: array
items:
type: object
metadata:
type: object
temperature:
type: number
top_p:
type: number
response_format:
oneOf:
- type: string
- type: object
Thread:
type: object
properties:
id:
type: string
description: The identifier of the thread
object:
type: string
enum:
- thread
created_at:
type: integer
description: Unix timestamp of creation
metadata:
type: object
description: Key-value metadata attached to the thread
CreateThreadRequest:
type: object
properties:
messages:
type: array
items:
$ref: '#/components/schemas/CreateMessageRequest'
description: Initial messages to start the thread with
metadata:
type: object
description: Key-value metadata for the thread
Message:
type: object
properties:
id:
type: string
description: The identifier of the message
object:
type: string
enum:
- thread.message
created_at:
type: integer
description: Unix timestamp of creation
thread_id:
type: string
description: The thread this message belongs to
role:
type: string
enum:
- user
- assistant
description: The role of the entity that produced the message
content:
type: array
items:
type: object
properties:
type:
type: string
enum:
- text
- image_file
- image_url
text:
type: object
properties:
value:
type: string
annotations:
type: array
items:
type: object
description: The content of the message
assistant_id:
type: string
nullable: true
description: The assistant that authored this message
run_id:
type: string
nullable: true
description: The run associated with this message
metadata:
type: object
description: Key-value metadata attached to the message
CreateMessageRequest:
type: object
required:
- role
- content
properties:
role:
type: string
enum:
- user
- assistant
description: The role of the entity creating the message
content:
oneOf:
- type: string
- type: array
items:
type: object
description: The content of the message
metadata:
type: object
description: Key-value metadata for the message
Run:
type: object
properties:
id:
type: string
description: The identifier of the run
object:
type: string
enum:
- thread.run
created_at:
type: integer
description: Unix timestamp of creation
thread_id:
type: string
description: The thread this run belongs to
assistant_id:
type: string
description: The assistant used for this run
status:
type: string
enum:
- queued
- in_progress
- requires_action
- cancelling
- cancelled
- failed
- completed
- incomplete
- expired
description: The status of the run
required_action:
type: object
nullable: true
properties:
type:
type: string
enum:
- submit_tool_outputs
submit_tool_outputs:
type: object
properties:
tool_calls:
type: array
items:
type: object
description: Details on required action if status is requires_action
model:
type: string
description: The model used for this run
instructions:
type: string
nullable: true
description: The instructions used for this run
tools:
type: array
items:
type: object
description: The tools used for this run
metadata:
type: object
description: Key-value metadata attached to the run
usage:
type: object
nullable: true
properties:
prompt_tokens:
type: integer
completion_tokens:
type: integer
total_tokens:
type: integer
description: Token usage statistics for the run
started_at:
type: integer
nullable: true
description: Unix timestamp of when the run started
completed_at:
type: integer
nullable: true
description: Unix timestamp of when the run completed
cancelled_at:
type: integer
nullable: true
description: Unix timestamp of when the run was cancelled
failed_at:
type: integer
nullable: true
description: Unix timestamp of when the run failed
expires_at:
type: integer
nullable: true
description: Unix timestamp of when the run will expire
CreateRunRequest:
type: object
required:
- assistant_id
properties:
assistant_id:
type: string
description: The ID of the assistant to use for this run
model:
type: string
description: Override the model for this run
instructions:
type: string
nullable: true
description: Override the instructions for this run
additional_instructions:
type: string
nullable: true
description: Additional instructions appended to the assistant's instructions
tools:
type: array
items:
type: object
description: Override the tools for this run
metadata:
type: object
description: Key-value metadata for the run
stream:
type: boolean
description: Whether to stream the run
ListResponse:
type: object
properties:
object:
type: string
enum:
- list
data:
type: array
items:
type: object
first_id:
type: string
last_id:
type: string
has_more:
type: boolean
DeleteResponse:
type: object
properties:
id:
type: string
object:
type: string
deleted:
type: boolean