Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Cacodaimon/b2426e0d73eaa916c54a362adebaf0c5 to your computer and use it in GitHub Desktop.

Select an option

Save Cacodaimon/b2426e0d73eaa916c54a362adebaf0c5 to your computer and use it in GitHub Desktop.
OpenAI OpenAPI YAML fixed for building a Java client
This file has been truncated, but you can view the full file.
openapi: 3.0.0
info:
title: OpenAI API
description: The OpenAI REST API. Please see
https://platform.openai.com/docs/api-reference for more details.
version: 2.3.0
termsOfService: https://openai.com/policies/terms-of-use
contact:
name: OpenAI Support
url: https://help.openai.com/
license:
name: MIT
url: https://github.com/openai/openai-openapi/blob/master/LICENSE
servers:
- url: https://api.openai.com/v1
security:
- ApiKeyAuth: []
tags:
- name: Assistants
description: Build Assistants that can call models and use tools.
- name: Audio
description: Turn audio into text or text into audio.
- name: Chat
description: Given a list of messages comprising a conversation, the model will
return a response.
- name: Completions
description: Given a prompt, the model will return one or more predicted
completions, and can also return the probabilities of alternative tokens
at each position.
- name: Embeddings
description: Get a vector representation of a given input that can be easily
consumed by machine learning models and algorithms.
- name: Evals
description: Manage and run evals in the OpenAI platform.
- name: Fine-tuning
description: Manage fine-tuning jobs to tailor a model to your specific training data.
- name: Batch
description: Create large batches of API requests to run asynchronously.
- name: Files
description: Files are used to upload documents that can be used with features
like Assistants and Fine-tuning.
- name: Uploads
description: Use Uploads to upload large files in multiple parts.
- name: Images
description: Given a prompt and/or an input image, the model will generate a new image.
- name: Models
description: List and describe the various models available in the API.
- name: Moderations
description: Given text and/or image inputs, classifies if those inputs are
potentially harmful.
- name: Audit Logs
description: List user actions and configuration changes within this organization.
paths:
/assistants:
get:
operationId: listAssistants
tags:
- Assistants
summary: Returns a list of assistants.
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListAssistantsResponse"
x-oaiMeta:
name: List assistants
group: assistants
beta: true
returns: A list of [assistant](/docs/api-reference/assistants/object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/assistants?order=desc&limit=20" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
my_assistants = client.beta.assistants.list(
order="desc",
limit="20",
)
print(my_assistants.data)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myAssistants = await openai.beta.assistants.list({
order: "desc",
limit: "20",
});
console.log(myAssistants.data);
}
main();
response: >
{
"object": "list",
"data": [
{
"id": "asst_abc123",
"object": "assistant",
"created_at": 1698982736,
"name": "Coding Tutor",
"description": null,
"model": "gpt-4o",
"instructions": "You are a helpful assistant designed to make me better at coding!",
"tools": [],
"tool_resources": {},
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
},
{
"id": "asst_abc456",
"object": "assistant",
"created_at": 1698982718,
"name": "My Assistant",
"description": null,
"model": "gpt-4o",
"instructions": "You are a helpful assistant designed to make me better at coding!",
"tools": [],
"tool_resources": {},
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
},
{
"id": "asst_abc789",
"object": "assistant",
"created_at": 1698982643,
"name": null,
"description": null,
"model": "gpt-4o",
"instructions": null,
"tools": [],
"tool_resources": {},
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
],
"first_id": "asst_abc123",
"last_id": "asst_abc789",
"has_more": false
}
post:
operationId: createAssistant
tags:
- Assistants
summary: Create an assistant with a model and instructions.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateAssistantRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssistantObject"
x-oaiMeta:
name: Create assistant
group: assistants
beta: true
returns: An [assistant](/docs/api-reference/assistants/object) object.
examples:
- title: Code Interpreter
request:
curl: >
curl "https://api.openai.com/v1/assistants" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"name": "Math Tutor",
"tools": [{"type": "code_interpreter"}],
"model": "gpt-4o"
}'
python: >
from openai import OpenAI
client = OpenAI()
my_assistant = client.beta.assistants.create(
instructions="You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
name="Math Tutor",
tools=[{"type": "code_interpreter"}],
model="gpt-4o",
)
print(my_assistant)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myAssistant = await openai.beta.assistants.create({
instructions:
"You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
name: "Math Tutor",
tools: [{ type: "code_interpreter" }],
model: "gpt-4o",
});
console.log(myAssistant);
}
main();
response: >
{
"id": "asst_abc123",
"object": "assistant",
"created_at": 1698984975,
"name": "Math Tutor",
"description": null,
"model": "gpt-4o",
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"tools": [
{
"type": "code_interpreter"
}
],
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
- title: Files
request:
curl: >
curl https://api.openai.com/v1/assistants \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies.",
"tools": [{"type": "file_search"}],
"tool_resources": {"file_search": {"vector_store_ids": ["vs_123"]}},
"model": "gpt-4o"
}'
python: >
from openai import OpenAI
client = OpenAI()
my_assistant = client.beta.assistants.create(
instructions="You are an HR bot, and you have access to files to answer employee questions about company policies.",
name="HR Helper",
tools=[{"type": "file_search"}],
tool_resources={"file_search": {"vector_store_ids": ["vs_123"]}},
model="gpt-4o"
)
print(my_assistant)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myAssistant = await openai.beta.assistants.create({
instructions:
"You are an HR bot, and you have access to files to answer employee questions about company policies.",
name: "HR Helper",
tools: [{ type: "file_search" }],
tool_resources: {
file_search: {
vector_store_ids: ["vs_123"]
}
},
model: "gpt-4o"
});
console.log(myAssistant);
}
main();
response: >
{
"id": "asst_abc123",
"object": "assistant",
"created_at": 1699009403,
"name": "HR Helper",
"description": null,
"model": "gpt-4o",
"instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies.",
"tools": [
{
"type": "file_search"
}
],
"tool_resources": {
"file_search": {
"vector_store_ids": ["vs_123"]
}
},
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
/assistants/{assistant_id}:
get:
operationId: getAssistant
tags:
- Assistants
summary: Retrieves an assistant.
parameters:
- in: path
name: assistant_id
required: true
schema:
type: string
description: The ID of the assistant to retrieve.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssistantObject"
x-oaiMeta:
name: Retrieve assistant
group: assistants
beta: true
returns: The [assistant](/docs/api-reference/assistants/object) object matching
the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/assistants/asst_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
my_assistant = client.beta.assistants.retrieve("asst_abc123")
print(my_assistant)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myAssistant = await openai.beta.assistants.retrieve(
"asst_abc123"
);
console.log(myAssistant);
}
main();
response: >
{
"id": "asst_abc123",
"object": "assistant",
"created_at": 1699009709,
"name": "HR Helper",
"description": null,
"model": "gpt-4o",
"instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies.",
"tools": [
{
"type": "file_search"
}
],
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
post:
operationId: modifyAssistant
tags:
- Assistants
summary: Modifies an assistant.
parameters:
- in: path
name: assistant_id
required: true
schema:
type: string
description: The ID of the assistant to modify.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ModifyAssistantRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssistantObject"
x-oaiMeta:
name: Modify assistant
group: assistants
beta: true
returns: The modified [assistant](/docs/api-reference/assistants/object) object.
examples:
request:
curl: >
curl https://api.openai.com/v1/assistants/asst_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.",
"tools": [{"type": "file_search"}],
"model": "gpt-4o"
}'
python: >
from openai import OpenAI
client = OpenAI()
my_updated_assistant = client.beta.assistants.update(
"asst_abc123",
instructions="You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.",
name="HR Helper",
tools=[{"type": "file_search"}],
model="gpt-4o"
)
print(my_updated_assistant)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myUpdatedAssistant = await openai.beta.assistants.update(
"asst_abc123",
{
instructions:
"You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.",
name: "HR Helper",
tools: [{ type: "file_search" }],
model: "gpt-4o"
}
);
console.log(myUpdatedAssistant);
}
main();
response: >
{
"id": "asst_123",
"object": "assistant",
"created_at": 1699009709,
"name": "HR Helper",
"description": null,
"model": "gpt-4o",
"instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.",
"tools": [
{
"type": "file_search"
}
],
"tool_resources": {
"file_search": {
"vector_store_ids": []
}
},
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
delete:
operationId: deleteAssistant
tags:
- Assistants
summary: Delete an assistant.
parameters:
- in: path
name: assistant_id
required: true
schema:
type: string
description: The ID of the assistant to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteAssistantResponse"
x-oaiMeta:
name: Delete assistant
group: assistants
beta: true
returns: Deletion status
examples:
request:
curl: |
curl https://api.openai.com/v1/assistants/asst_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-X DELETE
python: |
from openai import OpenAI
client = OpenAI()
response = client.beta.assistants.delete("asst_abc123")
print(response)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const response = await openai.beta.assistants.del("asst_abc123");
console.log(response);
}
main();
response: |
{
"id": "asst_abc123",
"object": "assistant.deleted",
"deleted": true
}
/audio/speech:
post:
operationId: createSpeech
tags:
- Audio
summary: Generates audio from the input text.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateSpeechRequest"
responses:
"200":
description: OK
headers:
Transfer-Encoding:
schema:
type: string
description: chunked
content:
application/octet-stream:
schema:
type: string
format: binary
x-oaiMeta:
name: Create speech
group: audio
returns: The audio file content.
examples:
request:
curl: |
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}' \
--output speech.mp3
python: |
from pathlib import Path
import openai
speech_file_path = Path(__file__).parent / "speech.mp3"
with openai.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="alloy",
input="The quick brown fox jumped over the lazy dog."
) as response:
response.stream_to_file(speech_file_path)
javascript: >
import fs from "fs";
import path from "path";
import OpenAI from "openai";
const openai = new OpenAI();
const speechFile = path.resolve("./speech.mp3");
async function main() {
const mp3 = await openai.audio.speech.create({
model: "gpt-4o-mini-tts",
voice: "alloy",
input: "Today is a wonderful day to build something people love!",
});
console.log(speechFile);
const buffer = Buffer.from(await mp3.arrayBuffer());
await fs.promises.writeFile(speechFile, buffer);
}
main();
csharp: |
using System;
using System.IO;
using OpenAI.Audio;
AudioClient client = new(
model: "gpt-4o-mini-tts",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
BinaryData speech = client.GenerateSpeech(
text: "The quick brown fox jumped over the lazy dog.",
voice: GeneratedSpeechVoice.Alloy
);
using FileStream stream = File.OpenWrite("speech.mp3");
speech.ToStream().CopyTo(stream);
/audio/transcriptions:
post:
operationId: createTranscription
tags:
- Audio
summary: Transcribes audio into the input language.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/CreateTranscriptionRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/CreateTranscriptionResponseJson"
- $ref: "#/components/schemas/CreateTranscriptionResponseVerboseJson"
text/event-stream:
schema:
$ref: "#/components/schemas/CreateTranscriptionResponseStreamEvent"
x-oaiMeta:
name: Create transcription
group: audio
returns: The [transcription object](/docs/api-reference/audio/json-object), a
[verbose transcription
object](/docs/api-reference/audio/verbose-json-object) or a [stream of
transcript
events](/docs/api-reference/audio/transcript-text-delta-event).
examples:
- title: Default
request:
curl: |
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F model="gpt-4o-transcribe"
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
model="gpt-4o-transcribe",
file=audio_file
)
javascript: >
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const transcription = await openai.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "gpt-4o-transcribe",
});
console.log(transcription.text);
}
main();
csharp: >
using System;
using OpenAI.Audio;
string audioFilePath = "audio.mp3";
AudioClient client = new(
model: "gpt-4o-transcribe",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
AudioTranscription transcription =
client.TranscribeAudio(audioFilePath);
Console.WriteLine($"{transcription.Text}");
response: >
{
"text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger. This is a place where you can get to do that."
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F model="gpt-4o-mini-transcribe" \
-F stream=true
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
stream = client.audio.transcriptions.create(
file=audio_file,
model="gpt-4o-mini-transcribe",
stream=True
)
for event in stream:
print(event)
javascript: |
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
const stream = await openai.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "gpt-4o-mini-transcribe",
stream: true,
});
for await (const event of stream) {
console.log(event);
}
response: |
data: {"type":"transcript.text.delta","delta":"I","logprobs":[{"token":"I","logprob":-0.00007588794,"bytes":[73]}]}
data: {"type":"transcript.text.delta","delta":" see","logprobs":[{"token":" see","logprob":-3.1281633e-7,"bytes":[32,115,101,101]}]}
data: {"type":"transcript.text.delta","delta":" skies","logprobs":[{"token":" skies","logprob":-2.3392786e-6,"bytes":[32,115,107,105,101,115]}]}
data: {"type":"transcript.text.delta","delta":" of","logprobs":[{"token":" of","logprob":-3.1281633e-7,"bytes":[32,111,102]}]}
data: {"type":"transcript.text.delta","delta":" blue","logprobs":[{"token":" blue","logprob":-1.0280384e-6,"bytes":[32,98,108,117,101]}]}
data: {"type":"transcript.text.delta","delta":" and","logprobs":[{"token":" and","logprob":-0.0005108566,"bytes":[32,97,110,100]}]}
data: {"type":"transcript.text.delta","delta":" clouds","logprobs":[{"token":" clouds","logprob":-1.9361265e-7,"bytes":[32,99,108,111,117,100,115]}]}
data: {"type":"transcript.text.delta","delta":" of","logprobs":[{"token":" of","logprob":-1.9361265e-7,"bytes":[32,111,102]}]}
data: {"type":"transcript.text.delta","delta":" white","logprobs":[{"token":" white","logprob":-7.89631e-7,"bytes":[32,119,104,105,116,101]}]}
data: {"type":"transcript.text.delta","delta":",","logprobs":[{"token":",","logprob":-0.0014890312,"bytes":[44]}]}
data: {"type":"transcript.text.delta","delta":" the","logprobs":[{"token":" the","logprob":-0.0110956915,"bytes":[32,116,104,101]}]}
data: {"type":"transcript.text.delta","delta":" bright","logprobs":[{"token":" bright","logprob":0.0,"bytes":[32,98,114,105,103,104,116]}]}
data: {"type":"transcript.text.delta","delta":" blessed","logprobs":[{"token":" blessed","logprob":-0.000045848617,"bytes":[32,98,108,101,115,115,101,100]}]}
data: {"type":"transcript.text.delta","delta":" days","logprobs":[{"token":" days","logprob":-0.000010802739,"bytes":[32,100,97,121,115]}]}
data: {"type":"transcript.text.delta","delta":",","logprobs":[{"token":",","logprob":-0.00001700133,"bytes":[44]}]}
data: {"type":"transcript.text.delta","delta":" the","logprobs":[{"token":" the","logprob":-0.0000118755715,"bytes":[32,116,104,101]}]}
data: {"type":"transcript.text.delta","delta":" dark","logprobs":[{"token":" dark","logprob":-5.5122365e-7,"bytes":[32,100,97,114,107]}]}
data: {"type":"transcript.text.delta","delta":" sacred","logprobs":[{"token":" sacred","logprob":-5.4385737e-6,"bytes":[32,115,97,99,114,101,100]}]}
data: {"type":"transcript.text.delta","delta":" nights","logprobs":[{"token":" nights","logprob":-4.00813e-6,"bytes":[32,110,105,103,104,116,115]}]}
data: {"type":"transcript.text.delta","delta":",","logprobs":[{"token":",","logprob":-0.0036910512,"bytes":[44]}]}
data: {"type":"transcript.text.delta","delta":" and","logprobs":[{"token":" and","logprob":-0.0031903093,"bytes":[32,97,110,100]}]}
data: {"type":"transcript.text.delta","delta":" I","logprobs":[{"token":" I","logprob":-1.504853e-6,"bytes":[32,73]}]}
data: {"type":"transcript.text.delta","delta":" think","logprobs":[{"token":" think","logprob":-4.3202e-7,"bytes":[32,116,104,105,110,107]}]}
data: {"type":"transcript.text.delta","delta":" to","logprobs":[{"token":" to","logprob":-1.9361265e-7,"bytes":[32,116,111]}]}
data: {"type":"transcript.text.delta","delta":" myself","logprobs":[{"token":" myself","logprob":-1.7432603e-6,"bytes":[32,109,121,115,101,108,102]}]}
data: {"type":"transcript.text.delta","delta":",","logprobs":[{"token":",","logprob":-0.29254505,"bytes":[44]}]}
data: {"type":"transcript.text.delta","delta":" what","logprobs":[{"token":" what","logprob":-0.016815351,"bytes":[32,119,104,97,116]}]}
data: {"type":"transcript.text.delta","delta":" a","logprobs":[{"token":" a","logprob":-3.1281633e-7,"bytes":[32,97]}]}
data: {"type":"transcript.text.delta","delta":" wonderful","logprobs":[{"token":" wonderful","logprob":-2.1008714e-6,"bytes":[32,119,111,110,100,101,114,102,117,108]}]}
data: {"type":"transcript.text.delta","delta":" world","logprobs":[{"token":" world","logprob":-8.180258e-6,"bytes":[32,119,111,114,108,100]}]}
data: {"type":"transcript.text.delta","delta":".","logprobs":[{"token":".","logprob":-0.014231676,"bytes":[46]}]}
data: {"type":"transcript.text.done","text":"I see skies of blue and clouds of white, the bright blessed days, the dark sacred nights, and I think to myself, what a wonderful world.","logprobs":[{"token":"I","logprob":-0.00007588794,"bytes":[73]},{"token":" see","logprob":-3.1281633e-7,"bytes":[32,115,101,101]},{"token":" skies","logprob":-2.3392786e-6,"bytes":[32,115,107,105,101,115]},{"token":" of","logprob":-3.1281633e-7,"bytes":[32,111,102]},{"token":" blue","logprob":-1.0280384e-6,"bytes":[32,98,108,117,101]},{"token":" and","logprob":-0.0005108566,"bytes":[32,97,110,100]},{"token":" clouds","logprob":-1.9361265e-7,"bytes":[32,99,108,111,117,100,115]},{"token":" of","logprob":-1.9361265e-7,"bytes":[32,111,102]},{"token":" white","logprob":-7.89631e-7,"bytes":[32,119,104,105,116,101]},{"token":",","logprob":-0.0014890312,"bytes":[44]},{"token":" the","logprob":-0.0110956915,"bytes":[32,116,104,101]},{"token":" bright","logprob":0.0,"bytes":[32,98,114,105,103,104,116]},{"token":" blessed","logprob":-0.000045848617,"bytes":[32,98,108,101,115,115,101,100]},{"token":" days","logprob":-0.000010802739,"bytes":[32,100,97,121,115]},{"token":",","logprob":-0.00001700133,"bytes":[44]},{"token":" the","logprob":-0.0000118755715,"bytes":[32,116,104,101]},{"token":" dark","logprob":-5.5122365e-7,"bytes":[32,100,97,114,107]},{"token":" sacred","logprob":-5.4385737e-6,"bytes":[32,115,97,99,114,101,100]},{"token":" nights","logprob":-4.00813e-6,"bytes":[32,110,105,103,104,116,115]},{"token":",","logprob":-0.0036910512,"bytes":[44]},{"token":" and","logprob":-0.0031903093,"bytes":[32,97,110,100]},{"token":" I","logprob":-1.504853e-6,"bytes":[32,73]},{"token":" think","logprob":-4.3202e-7,"bytes":[32,116,104,105,110,107]},{"token":" to","logprob":-1.9361265e-7,"bytes":[32,116,111]},{"token":" myself","logprob":-1.7432603e-6,"bytes":[32,109,121,115,101,108,102]},{"token":",","logprob":-0.29254505,"bytes":[44]},{"token":" what","logprob":-0.016815351,"bytes":[32,119,104,97,116]},{"token":" a","logprob":-3.1281633e-7,"bytes":[32,97]},{"token":" wonderful","logprob":-2.1008714e-6,"bytes":[32,119,111,110,100,101,114,102,117,108]},{"token":" world","logprob":-8.180258e-6,"bytes":[32,119,111,114,108,100]},{"token":".","logprob":-0.014231676,"bytes":[46]}]}
- title: Logprobs
request:
curl: |
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F "include[]=logprobs" \
-F model="gpt-4o-transcribe" \
-F response_format="json"
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
file=audio_file,
model="gpt-4o-transcribe",
response_format="json",
include=["logprobs"]
)
print(transcript)
javascript: >
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const transcription = await openai.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "gpt-4o-transcribe",
response_format: "json",
include: ["logprobs"]
});
console.log(transcription);
}
main();
response: >
{
"text": "Hey, my knee is hurting and I want to see the doctor tomorrow ideally.",
"logprobs": [
{ "token": "Hey", "logprob": -1.0415299, "bytes": [72, 101, 121] },
{ "token": ",", "logprob": -9.805982e-5, "bytes": [44] },
{ "token": " my", "logprob": -0.00229799, "bytes": [32, 109, 121] },
{
"token": " knee",
"logprob": -4.7159858e-5,
"bytes": [32, 107, 110, 101, 101]
},
{ "token": " is", "logprob": -0.043909557, "bytes": [32, 105, 115] },
{
"token": " hurting",
"logprob": -1.1041146e-5,
"bytes": [32, 104, 117, 114, 116, 105, 110, 103]
},
{ "token": " and", "logprob": -0.011076359, "bytes": [32, 97, 110, 100] },
{ "token": " I", "logprob": -5.3193703e-6, "bytes": [32, 73] },
{
"token": " want",
"logprob": -0.0017156356,
"bytes": [32, 119, 97, 110, 116]
},
{ "token": " to", "logprob": -7.89631e-7, "bytes": [32, 116, 111] },
{ "token": " see", "logprob": -5.5122365e-7, "bytes": [32, 115, 101, 101] },
{ "token": " the", "logprob": -0.0040786397, "bytes": [32, 116, 104, 101] },
{
"token": " doctor",
"logprob": -2.3392786e-6,
"bytes": [32, 100, 111, 99, 116, 111, 114]
},
{
"token": " tomorrow",
"logprob": -7.89631e-7,
"bytes": [32, 116, 111, 109, 111, 114, 114, 111, 119]
},
{
"token": " ideally",
"logprob": -0.5800861,
"bytes": [32, 105, 100, 101, 97, 108, 108, 121]
},
{ "token": ".", "logprob": -0.00011093382, "bytes": [46] }
]
}
- title: Word timestamps
request:
curl: |
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F "timestamp_granularities[]=word" \
-F model="whisper-1" \
-F response_format="verbose_json"
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
file=audio_file,
model="whisper-1",
response_format="verbose_json",
timestamp_granularities=["word"]
)
print(transcript.words)
javascript: >
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const transcription = await openai.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "whisper-1",
response_format: "verbose_json",
timestamp_granularities: ["word"]
});
console.log(transcription.text);
}
main();
csharp: >
using System;
using OpenAI.Audio;
string audioFilePath = "audio.mp3";
AudioClient client = new(
model: "whisper-1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
AudioTranscriptionOptions options = new()
{
ResponseFormat = AudioTranscriptionFormat.Verbose,
TimestampGranularities = AudioTimestampGranularities.Word,
};
AudioTranscription transcription =
client.TranscribeAudio(audioFilePath, options);
Console.WriteLine($"{transcription.Text}");
response: >
{
"task": "transcribe",
"language": "english",
"duration": 8.470000267028809,
"text": "The beach was a popular spot on a hot summer day. People were swimming in the ocean, building sandcastles, and playing beach volleyball.",
"words": [
{
"word": "The",
"start": 0.0,
"end": 0.23999999463558197
},
...
{
"word": "volleyball",
"start": 7.400000095367432,
"end": 7.900000095367432
}
]
}
- title: Segment timestamps
request:
curl: |
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F "timestamp_granularities[]=segment" \
-F model="whisper-1" \
-F response_format="verbose_json"
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
file=audio_file,
model="whisper-1",
response_format="verbose_json",
timestamp_granularities=["segment"]
)
print(transcript.words)
javascript: >
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const transcription = await openai.audio.transcriptions.create({
file: fs.createReadStream("audio.mp3"),
model: "whisper-1",
response_format: "verbose_json",
timestamp_granularities: ["segment"]
});
console.log(transcription.text);
}
main();
csharp: >
using System;
using OpenAI.Audio;
string audioFilePath = "audio.mp3";
AudioClient client = new(
model: "whisper-1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
AudioTranscriptionOptions options = new()
{
ResponseFormat = AudioTranscriptionFormat.Verbose,
TimestampGranularities = AudioTimestampGranularities.Segment,
};
AudioTranscription transcription =
client.TranscribeAudio(audioFilePath, options);
Console.WriteLine($"{transcription.Text}");
response: >
{
"task": "transcribe",
"language": "english",
"duration": 8.470000267028809,
"text": "The beach was a popular spot on a hot summer day. People were swimming in the ocean, building sandcastles, and playing beach volleyball.",
"segments": [
{
"id": 0,
"seek": 0,
"start": 0.0,
"end": 3.319999933242798,
"text": " The beach was a popular spot on a hot summer day.",
"tokens": [
50364, 440, 7534, 390, 257, 3743, 4008, 322, 257, 2368, 4266, 786, 13, 50530
],
"temperature": 0.0,
"avg_logprob": -0.2860786020755768,
"compression_ratio": 1.2363636493682861,
"no_speech_prob": 0.00985979475080967
},
...
]
}
/audio/translations:
post:
operationId: createTranslation
tags:
- Audio
summary: Translates audio into English.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/CreateTranslationRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/CreateTranslationResponseJson"
- $ref: "#/components/schemas/CreateTranslationResponseVerboseJson"
x-oaiMeta:
name: Create translation
group: audio
returns: The translated text.
examples:
request:
curl: |
curl https://api.openai.com/v1/audio/translations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/german.m4a" \
-F model="whisper-1"
python: |
from openai import OpenAI
client = OpenAI()
audio_file = open("speech.mp3", "rb")
transcript = client.audio.translations.create(
model="whisper-1",
file=audio_file
)
javascript: |
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const translation = await openai.audio.translations.create({
file: fs.createReadStream("speech.mp3"),
model: "whisper-1",
});
console.log(translation.text);
}
main();
csharp: >
using System;
using OpenAI.Audio;
string audioFilePath = "audio.mp3";
AudioClient client = new(
model: "whisper-1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
AudioTranscription transcription =
client.TranscribeAudio(audioFilePath);
Console.WriteLine($"{transcription.Text}");
response: >
{
"text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
}
/batches:
post:
summary: Creates and executes a batch from an uploaded file of requests
operationId: createBatch
tags:
- Batch
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- input_file_id
- endpoint
- completion_window
properties:
input_file_id:
type: string
description: >
The ID of an uploaded file that contains requests for the
new batch.
See [upload file](/docs/api-reference/files/create) for how
to upload a file.
Your input file must be formatted as a [JSONL
file](/docs/api-reference/batch/request-input), and must be
uploaded with the purpose `batch`. The file can contain up
to 50,000 requests, and can be up to 200 MB in size.
endpoint:
type: string
enum:
- /v1/responses
- /v1/chat/completions
- /v1/embeddings
- /v1/completions
description: The endpoint to be used for all requests in the batch. Currently
`/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`,
and `/v1/completions` are supported. Note that
`/v1/embeddings` batches are also restricted to a maximum of
50,000 embedding inputs across all requests in the batch.
completion_window:
type: string
enum:
- 24h
description: The time frame within which the batch should be processed.
Currently only `24h` is supported.
metadata:
$ref: "#/components/schemas/Metadata"
responses:
"200":
description: Batch created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Batch"
x-oaiMeta:
name: Create batch
group: batch
returns: The created [Batch](/docs/api-reference/batch/object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/batches \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-abc123",
"endpoint": "/v1/chat/completions",
"completion_window": "24h"
}'
python: |
from openai import OpenAI
client = OpenAI()
client.batches.create(
input_file_id="file-abc123",
endpoint="/v1/chat/completions",
completion_window="24h"
)
node: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const batch = await openai.batches.create({
input_file_id: "file-abc123",
endpoint: "/v1/chat/completions",
completion_window: "24h"
});
console.log(batch);
}
main();
response: |
{
"id": "batch_abc123",
"object": "batch",
"endpoint": "/v1/chat/completions",
"errors": null,
"input_file_id": "file-abc123",
"completion_window": "24h",
"status": "validating",
"output_file_id": null,
"error_file_id": null,
"created_at": 1711471533,
"in_progress_at": null,
"expires_at": null,
"finalizing_at": null,
"completed_at": null,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 0,
"completed": 0,
"failed": 0
},
"metadata": {
"customer_id": "user_123456789",
"batch_description": "Nightly eval job",
}
}
get:
operationId: listBatches
tags:
- Batch
summary: List your organization's batches.
parameters:
- in: query
name: after
required: false
schema:
type: string
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
responses:
"200":
description: Batch listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListBatchesResponse"
x-oaiMeta:
name: List batch
group: batch
returns: A list of paginated [Batch](/docs/api-reference/batch/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/batches?limit=2 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
python: |
from openai import OpenAI
client = OpenAI()
client.batches.list()
node: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const list = await openai.batches.list();
for await (const batch of list) {
console.log(batch);
}
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "batch_abc123",
"object": "batch",
"endpoint": "/v1/chat/completions",
"errors": null,
"input_file_id": "file-abc123",
"completion_window": "24h",
"status": "completed",
"output_file_id": "file-cvaTdG",
"error_file_id": "file-HOWS94",
"created_at": 1711471533,
"in_progress_at": 1711471538,
"expires_at": 1711557933,
"finalizing_at": 1711493133,
"completed_at": 1711493163,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 100,
"completed": 95,
"failed": 5
},
"metadata": {
"customer_id": "user_123456789",
"batch_description": "Nightly job",
}
},
{ ... },
],
"first_id": "batch_abc123",
"last_id": "batch_abc456",
"has_more": true
}
/batches/{batch_id}:
get:
operationId: retrieveBatch
tags:
- Batch
summary: Retrieves a batch.
parameters:
- in: path
name: batch_id
required: true
schema:
type: string
description: The ID of the batch to retrieve.
responses:
"200":
description: Batch retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Batch"
x-oaiMeta:
name: Retrieve batch
group: batch
returns: The [Batch](/docs/api-reference/batch/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/batches/batch_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
python: |
from openai import OpenAI
client = OpenAI()
client.batches.retrieve("batch_abc123")
node: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const batch = await openai.batches.retrieve("batch_abc123");
console.log(batch);
}
main();
response: |
{
"id": "batch_abc123",
"object": "batch",
"endpoint": "/v1/completions",
"errors": null,
"input_file_id": "file-abc123",
"completion_window": "24h",
"status": "completed",
"output_file_id": "file-cvaTdG",
"error_file_id": "file-HOWS94",
"created_at": 1711471533,
"in_progress_at": 1711471538,
"expires_at": 1711557933,
"finalizing_at": 1711493133,
"completed_at": 1711493163,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 100,
"completed": 95,
"failed": 5
},
"metadata": {
"customer_id": "user_123456789",
"batch_description": "Nightly eval job",
}
}
/batches/{batch_id}/cancel:
post:
operationId: cancelBatch
tags:
- Batch
summary: Cancels an in-progress batch. The batch will be in status `cancelling`
for up to 10 minutes, before changing to `cancelled`, where it will have
partial results (if any) available in the output file.
parameters:
- in: path
name: batch_id
required: true
schema:
type: string
description: The ID of the batch to cancel.
responses:
"200":
description: Batch is cancelling. Returns the cancelling batch's details.
content:
application/json:
schema:
$ref: "#/components/schemas/Batch"
x-oaiMeta:
name: Cancel batch
group: batch
returns: The [Batch](/docs/api-reference/batch/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/batches/batch_abc123/cancel \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-X POST
python: |
from openai import OpenAI
client = OpenAI()
client.batches.cancel("batch_abc123")
node: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const batch = await openai.batches.cancel("batch_abc123");
console.log(batch);
}
main();
response: |
{
"id": "batch_abc123",
"object": "batch",
"endpoint": "/v1/chat/completions",
"errors": null,
"input_file_id": "file-abc123",
"completion_window": "24h",
"status": "cancelling",
"output_file_id": null,
"error_file_id": null,
"created_at": 1711471533,
"in_progress_at": 1711471538,
"expires_at": 1711557933,
"finalizing_at": null,
"completed_at": null,
"failed_at": null,
"expired_at": null,
"cancelling_at": 1711475133,
"cancelled_at": null,
"request_counts": {
"total": 100,
"completed": 23,
"failed": 1
},
"metadata": {
"customer_id": "user_123456789",
"batch_description": "Nightly eval job",
}
}
/chat/completions:
get:
operationId: listChatCompletions
tags:
- Chat
summary: >
List stored Chat Completions. Only Chat Completions that have been
stored
with the `store` parameter set to `true` will be returned.
parameters:
- name: model
in: query
description: The model used to generate the Chat Completions.
required: false
schema:
type: string
- name: metadata
in: query
description: |
A list of metadata keys to filter the Chat Completions by. Example:
`metadata[key1]=value1&metadata[key2]=value2`
required: false
schema:
$ref: "#/components/schemas/Metadata"
- name: after
in: query
description: Identifier for the last chat completion from the previous
pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of Chat Completions to retrieve.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: Sort order for Chat Completions by timestamp. Use `asc` for
ascending order or `desc` for descending order. Defaults to `asc`.
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
responses:
"200":
description: A list of Chat Completions
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionList"
x-oaiMeta:
name: List Chat Completions
group: chat
returns: A list of [Chat Completions](/docs/api-reference/chat/list-object)
matching the specified filters.
path: list
examples:
request:
curl: |
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
python: |
from openai import OpenAI
client = OpenAI()
completions = client.chat.completions.list()
print(completions)
response: >
{
"object": "list",
"data": [
{
"object": "chat.completion",
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"model": "gpt-4.1-2025-04-14",
"created": 1738960610,
"request_id": "req_ded8ab984ec4bf840f37566c1011c417",
"tool_choice": null,
"usage": {
"total_tokens": 31,
"completion_tokens": 18,
"prompt_tokens": 13
},
"seed": 4944116822809979520,
"top_p": 1.0,
"temperature": 1.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"system_fingerprint": "fp_50cad350e4",
"input_user": null,
"service_tier": "default",
"tools": null,
"metadata": {},
"choices": [
{
"index": 0,
"message": {
"content": "Mind of circuits hum, \nLearning patterns in silenceโ€” \nFuture's quiet spark.",
"role": "assistant",
"tool_calls": null,
"function_call": null
},
"finish_reason": "stop",
"logprobs": null
}
],
"response_format": null
}
],
"first_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"last_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"has_more": false
}
post:
operationId: createChatCompletion
tags:
- Chat
summary: |
**Starting a new project?** We recommend trying [Responses](/docs/api-reference/responses)
to take advantage of the latest OpenAI platform features. Compare
[Chat Completions with Responses](/docs/guides/responses-vs-chat-completions?api-mode=responses).
---
Creates a model response for the given chat conversation. Learn more in the
[text generation](/docs/guides/text-generation), [vision](/docs/guides/vision),
and [audio](/docs/guides/audio) guides.
Parameter support can differ depending on the model used to generate the
response, particularly for newer reasoning models. Parameters that are only
supported for reasoning models are noted below. For the current state of
unsupported parameters in reasoning models,
[refer to the reasoning guide](/docs/guides/reasoning).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateChatCompletionRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CreateChatCompletionResponse"
text/event-stream:
schema:
$ref: "#/components/schemas/CreateChatCompletionStreamResponse"
x-oaiMeta:
name: Create chat completion
group: chat
returns: >
Returns a [chat completion](/docs/api-reference/chat/object) object,
or a streamed sequence of [chat completion
chunk](/docs/api-reference/chat/streaming) objects if the request is
streamed.
path: create
examples:
- title: Default
request:
curl: |
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "VAR_chat_model_id",
"messages": [
{
"role": "developer",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
python: >
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="VAR_chat_model_id",
messages=[
{"role": "developer", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const completion = await openai.chat.completions.create({
messages: [{ role: "developer", content: "You are a helpful assistant." }],
model: "VAR_chat_model_id",
store: true,
});
console.log(completion.choices[0]);
}
main();
csharp: |
using System;
using System.Collections.Generic;
using OpenAI.Chat;
ChatClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
List<ChatMessage> messages =
[
new SystemChatMessage("You are a helpful assistant."),
new UserChatMessage("Hello!")
];
ChatCompletion completion = client.CompleteChat(messages);
Console.WriteLine(completion.Content[0].Text);
response: |
{
"id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
"object": "chat.completion",
"created": 1741569952,
"model": "gpt-4.1-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 19,
"completion_tokens": 10,
"total_tokens": 29,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"service_tier": "default"
}
- title: Image input
request:
curl: >
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
}
}
]
}
],
"max_tokens": 300
}'
python: >
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4.1",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
}
},
],
}
],
max_tokens=300,
)
print(response.choices[0])
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const response = await openai.chat.completions.create({
model: "gpt-4.1",
messages: [
{
role: "user",
content: [
{ type: "text", text: "What's in this image?" },
{
type: "image_url",
image_url: {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
},
}
],
},
],
});
console.log(response.choices[0]);
}
main();
csharp: >
using System;
using System.Collections.Generic;
using OpenAI.Chat;
ChatClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
List<ChatMessage> messages =
[
new UserChatMessage(
[
ChatMessageContentPart.CreateTextPart("What's in this image?"),
ChatMessageContentPart.CreateImagePart(new Uri("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"))
])
];
ChatCompletion completion = client.CompleteChat(messages);
Console.WriteLine(completion.Content[0].Text);
response: >
{
"id": "chatcmpl-B9MHDbslfkBeAs8l4bebGdFOJ6PeG",
"object": "chat.completion",
"created": 1741570283,
"model": "gpt-4.1-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The image shows a wooden boardwalk path running through a lush green field or meadow. The sky is bright blue with some scattered clouds, giving the scene a serene and peaceful atmosphere. Trees and shrubs are visible in the background.",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1117,
"completion_tokens": 46,
"total_tokens": 1163,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"service_tier": "default"
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "VAR_chat_model_id",
"messages": [
{
"role": "developer",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
],
"stream": true
}'
python: >
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="VAR_chat_model_id",
messages=[
{"role": "developer", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
stream=True
)
for chunk in completion:
print(chunk.choices[0].delta)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const completion = await openai.chat.completions.create({
model: "VAR_chat_model_id",
messages: [
{"role": "developer", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
stream: true,
});
for await (const chunk of completion) {
console.log(chunk.choices[0].delta.content);
}
}
main();
csharp: >
using System;
using System.ClientModel;
using System.Collections.Generic;
using System.Threading.Tasks;
using OpenAI.Chat;
ChatClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
List<ChatMessage> messages =
[
new SystemChatMessage("You are a helpful assistant."),
new UserChatMessage("Hello!")
];
AsyncCollectionResult<StreamingChatCompletionUpdate>
completionUpdates = client.CompleteChatStreamingAsync(messages);
await foreach (StreamingChatCompletionUpdate completionUpdate in
completionUpdates)
{
if (completionUpdate.ContentUpdate.Count > 0)
{
Console.Write(completionUpdate.ContentUpdate[0].Text);
}
}
response: |
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}
....
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
- title: Functions
request:
curl: >
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"messages": [
{
"role": "user",
"content": "What is the weather like in Boston today?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}'
python: >
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
]
messages = [{"role": "user", "content": "What's the weather like
in Boston today?"}]
completion = client.chat.completions.create(
model="VAR_chat_model_id",
messages=messages,
tools=tools,
tool_choice="auto"
)
print(completion)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const messages = [{"role": "user", "content": "What's the weather like in Boston today?"}];
const tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
];
const response = await openai.chat.completions.create({
model: "gpt-4.1",
messages: messages,
tools: tools,
tool_choice: "auto",
});
console.log(response);
}
main();
csharp: >
using System;
using System.Collections.Generic;
using OpenAI.Chat;
ChatClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
ChatTool getCurrentWeatherTool = ChatTool.CreateFunctionTool(
functionName: "get_current_weather",
functionDescription: "Get the current weather in a given location",
functionParameters: BinaryData.FromString("""
{
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [ "celsius", "fahrenheit" ]
}
},
"required": [ "location" ]
}
""")
);
List<ChatMessage> messages =
[
new UserChatMessage("What's the weather like in Boston today?"),
];
ChatCompletionOptions options = new()
{
Tools =
{
getCurrentWeatherTool
},
ToolChoice = ChatToolChoice.CreateAutoChoice(),
};
ChatCompletion completion = client.CompleteChat(messages,
options);
response: |
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1699896916,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_current_weather",
"arguments": "{\n\"location\": \"Boston, MA\"\n}"
}
}
]
},
"logprobs": null,
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 82,
"completion_tokens": 17,
"total_tokens": 99,
"completion_tokens_details": {
"reasoning_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
}
}
- title: Logprobs
request:
curl: |
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "VAR_chat_model_id",
"messages": [
{
"role": "user",
"content": "Hello!"
}
],
"logprobs": true,
"top_logprobs": 2
}'
python: |
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="VAR_chat_model_id",
messages=[
{"role": "user", "content": "Hello!"}
],
logprobs=True,
top_logprobs=2
)
print(completion.choices[0].message)
print(completion.choices[0].logprobs)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const completion = await openai.chat.completions.create({
messages: [{ role: "user", content: "Hello!" }],
model: "VAR_chat_model_id",
logprobs: true,
top_logprobs: 2,
});
console.log(completion.choices[0]);
}
main();
csharp: >
using System;
using System.Collections.Generic;
using OpenAI.Chat;
ChatClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
List<ChatMessage> messages =
[
new UserChatMessage("Hello!")
];
ChatCompletionOptions options = new()
{
IncludeLogProbabilities = true,
TopLogProbabilityCount = 2
};
ChatCompletion completion = client.CompleteChat(messages,
options);
Console.WriteLine(completion.Content[0].Text);
response: |
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1702685778,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"logprobs": {
"content": [
{
"token": "Hello",
"logprob": -0.31725305,
"bytes": [72, 101, 108, 108, 111],
"top_logprobs": [
{
"token": "Hello",
"logprob": -0.31725305,
"bytes": [72, 101, 108, 108, 111]
},
{
"token": "Hi",
"logprob": -1.3190403,
"bytes": [72, 105]
}
]
},
{
"token": "!",
"logprob": -0.02380986,
"bytes": [
33
],
"top_logprobs": [
{
"token": "!",
"logprob": -0.02380986,
"bytes": [33]
},
{
"token": " there",
"logprob": -3.787621,
"bytes": [32, 116, 104, 101, 114, 101]
}
]
},
{
"token": " How",
"logprob": -0.000054669687,
"bytes": [32, 72, 111, 119],
"top_logprobs": [
{
"token": " How",
"logprob": -0.000054669687,
"bytes": [32, 72, 111, 119]
},
{
"token": "<|end|>",
"logprob": -10.953937,
"bytes": null
}
]
},
{
"token": " can",
"logprob": -0.015801601,
"bytes": [32, 99, 97, 110],
"top_logprobs": [
{
"token": " can",
"logprob": -0.015801601,
"bytes": [32, 99, 97, 110]
},
{
"token": " may",
"logprob": -4.161023,
"bytes": [32, 109, 97, 121]
}
]
},
{
"token": " I",
"logprob": -3.7697225e-6,
"bytes": [
32,
73
],
"top_logprobs": [
{
"token": " I",
"logprob": -3.7697225e-6,
"bytes": [32, 73]
},
{
"token": " assist",
"logprob": -13.596657,
"bytes": [32, 97, 115, 115, 105, 115, 116]
}
]
},
{
"token": " assist",
"logprob": -0.04571125,
"bytes": [32, 97, 115, 115, 105, 115, 116],
"top_logprobs": [
{
"token": " assist",
"logprob": -0.04571125,
"bytes": [32, 97, 115, 115, 105, 115, 116]
},
{
"token": " help",
"logprob": -3.1089056,
"bytes": [32, 104, 101, 108, 112]
}
]
},
{
"token": " you",
"logprob": -5.4385737e-6,
"bytes": [32, 121, 111, 117],
"top_logprobs": [
{
"token": " you",
"logprob": -5.4385737e-6,
"bytes": [32, 121, 111, 117]
},
{
"token": " today",
"logprob": -12.807695,
"bytes": [32, 116, 111, 100, 97, 121]
}
]
},
{
"token": " today",
"logprob": -0.0040071653,
"bytes": [32, 116, 111, 100, 97, 121],
"top_logprobs": [
{
"token": " today",
"logprob": -0.0040071653,
"bytes": [32, 116, 111, 100, 97, 121]
},
{
"token": "?",
"logprob": -5.5247097,
"bytes": [63]
}
]
},
{
"token": "?",
"logprob": -0.0008108172,
"bytes": [63],
"top_logprobs": [
{
"token": "?",
"logprob": -0.0008108172,
"bytes": [63]
},
{
"token": "?\n",
"logprob": -7.184561,
"bytes": [63, 10]
}
]
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 9,
"total_tokens": 18,
"completion_tokens_details": {
"reasoning_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"system_fingerprint": null
}
/chat/completions/{completion_id}:
get:
operationId: getChatCompletion
tags:
- Chat
summary: >
Get a stored chat completion. Only Chat Completions that have been
created
with the `store` parameter set to `true` will be returned.
parameters:
- in: path
name: completion_id
required: true
schema:
type: string
description: The ID of the chat completion to retrieve.
responses:
"200":
description: A chat completion
content:
application/json:
schema:
$ref: "#/components/schemas/CreateChatCompletionResponse"
x-oaiMeta:
name: Get chat completion
group: chat
returns: The [ChatCompletion](/docs/api-reference/chat/object) object matching
the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/chat/completions/chatcmpl-abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
python: >
from openai import OpenAI
client = OpenAI()
completions = client.chat.completions.list()
first_id = completions[0].id
first_completion =
client.chat.completions.retrieve(completion_id=first_id)
print(first_completion)
response: >
{
"object": "chat.completion",
"id": "chatcmpl-abc123",
"model": "gpt-4o-2024-08-06",
"created": 1738960610,
"request_id": "req_ded8ab984ec4bf840f37566c1011c417",
"tool_choice": null,
"usage": {
"total_tokens": 31,
"completion_tokens": 18,
"prompt_tokens": 13
},
"seed": 4944116822809979520,
"top_p": 1.0,
"temperature": 1.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"system_fingerprint": "fp_50cad350e4",
"input_user": null,
"service_tier": "default",
"tools": null,
"metadata": {},
"choices": [
{
"index": 0,
"message": {
"content": "Mind of circuits hum, \nLearning patterns in silenceโ€” \nFuture's quiet spark.",
"role": "assistant",
"tool_calls": null,
"function_call": null
},
"finish_reason": "stop",
"logprobs": null
}
],
"response_format": null
}
post:
operationId: updateChatCompletion
tags:
- Chat
summary: >
Modify a stored chat completion. Only Chat Completions that have been
created with the `store` parameter set to `true` can be modified.
Currently,
the only supported modification is to update the `metadata` field.
parameters:
- in: path
name: completion_id
required: true
schema:
type: string
description: The ID of the chat completion to update.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- metadata
properties:
metadata:
$ref: "#/components/schemas/Metadata"
responses:
"200":
description: A chat completion
content:
application/json:
schema:
$ref: "#/components/schemas/CreateChatCompletionResponse"
x-oaiMeta:
name: Update chat completion
group: chat
returns: The [ChatCompletion](/docs/api-reference/chat/object) object matching
the specified ID.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/chat/completions/chat_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"metadata": {"foo": "bar"}}'
python: >
from openai import OpenAI
client = OpenAI()
completions = client.chat.completions.list()
first_id = completions[0].id
updated_completion =
client.chat.completions.update(completion_id=first_id,
request_body={"metadata": {"foo": "bar"}})
print(updated_completion)
response: >
{
"object": "chat.completion",
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"model": "gpt-4o-2024-08-06",
"created": 1738960610,
"request_id": "req_ded8ab984ec4bf840f37566c1011c417",
"tool_choice": null,
"usage": {
"total_tokens": 31,
"completion_tokens": 18,
"prompt_tokens": 13
},
"seed": 4944116822809979520,
"top_p": 1.0,
"temperature": 1.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"system_fingerprint": "fp_50cad350e4",
"input_user": null,
"service_tier": "default",
"tools": null,
"metadata": {
"foo": "bar"
},
"choices": [
{
"index": 0,
"message": {
"content": "Mind of circuits hum, \nLearning patterns in silenceโ€” \nFuture's quiet spark.",
"role": "assistant",
"tool_calls": null,
"function_call": null
},
"finish_reason": "stop",
"logprobs": null
}
],
"response_format": null
}
delete:
operationId: deleteChatCompletion
tags:
- Chat
summary: |
Delete a stored chat completion. Only Chat Completions that have been
created with the `store` parameter set to `true` can be deleted.
parameters:
- in: path
name: completion_id
required: true
schema:
type: string
description: The ID of the chat completion to delete.
responses:
"200":
description: The chat completion was deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionDeleted"
x-oaiMeta:
name: Delete chat completion
group: chat
returns: A deletion confirmation object.
examples:
request:
curl: >
curl -X DELETE
https://api.openai.com/v1/chat/completions/chat_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
python: >
from openai import OpenAI
client = OpenAI()
completions = client.chat.completions.list()
first_id = completions[0].id
delete_response =
client.chat.completions.delete(completion_id=first_id)
print(delete_response)
response: |
{
"object": "chat.completion.deleted",
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"deleted": true
}
/chat/completions/{completion_id}/messages:
get:
operationId: getChatCompletionMessages
tags:
- Chat
summary: |
Get the messages in a stored chat completion. Only Chat Completions that
have been created with the `store` parameter set to `true` will be
returned.
parameters:
- in: path
name: completion_id
required: true
schema:
type: string
description: The ID of the chat completion to retrieve messages from.
- name: after
in: query
description: Identifier for the last message from the previous pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of messages to retrieve.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: Sort order for messages by timestamp. Use `asc` for ascending order
or `desc` for descending order. Defaults to `asc`.
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
responses:
"200":
description: A list of messages
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionMessageList"
x-oaiMeta:
name: Get chat messages
group: chat
returns: A list of [messages](/docs/api-reference/chat/message-list) for the
specified chat completion.
examples:
request:
curl: >
curl
https://api.openai.com/v1/chat/completions/chat_abc123/messages \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
python: >
from openai import OpenAI
client = OpenAI()
completions = client.chat.completions.list()
first_id = completions[0].id
first_completion =
client.chat.completions.retrieve(completion_id=first_id)
messages =
client.chat.completions.messages.list(completion_id=first_id)
print(messages)
response: |
{
"object": "list",
"data": [
{
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"role": "user",
"content": "write a haiku about ai",
"name": null,
"content_parts": null
}
],
"first_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"last_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"has_more": false
}
/completions:
post:
operationId: createCompletion
tags:
- Completions
summary: Creates a completion for the provided prompt and parameters.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCompletionRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCompletionResponse"
x-oaiMeta:
name: Create completion
group: completions
returns: >
Returns a [completion](/docs/api-reference/completions/object) object,
or a sequence of completion objects if the request is streamed.
legacy: true
examples:
- title: No streaming
request:
curl: |
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "VAR_completion_model_id",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
python: |
from openai import OpenAI
client = OpenAI()
client.completions.create(
model="VAR_completion_model_id",
prompt="Say this is a test",
max_tokens=7,
temperature=0
)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const completion = await openai.completions.create({
model: "VAR_completion_model_id",
prompt: "Say this is a test.",
max_tokens: 7,
temperature: 0,
});
console.log(completion);
}
main();
response: |
{
"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
"object": "text_completion",
"created": 1589478378,
"model": "VAR_completion_model_id",
"system_fingerprint": "fp_44709d6fcb",
"choices": [
{
"text": "\n\nThis is indeed a test",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 7,
"total_tokens": 12
}
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "VAR_completion_model_id",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0,
"stream": true
}'
python: |
from openai import OpenAI
client = OpenAI()
for chunk in client.completions.create(
model="VAR_completion_model_id",
prompt="Say this is a test",
max_tokens=7,
temperature=0,
stream=True
):
print(chunk.choices[0].text)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.completions.create({
model: "VAR_completion_model_id",
prompt: "Say this is a test.",
stream: true,
});
for await (const chunk of stream) {
console.log(chunk.choices[0].text)
}
}
main();
response: |
{
"id": "cmpl-7iA7iJjj8V2zOkCGvWF2hAkDWBQZe",
"object": "text_completion",
"created": 1690759702,
"choices": [
{
"text": "This",
"index": 0,
"logprobs": null,
"finish_reason": null
}
],
"model": "gpt-3.5-turbo-instruct"
"system_fingerprint": "fp_44709d6fcb",
}
/embeddings:
post:
operationId: createEmbedding
tags:
- Embeddings
summary: Creates an embedding vector representing the input text.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEmbeddingRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEmbeddingResponse"
x-oaiMeta:
name: Create embeddings
group: embeddings
returns: A list of [embedding](/docs/api-reference/embeddings/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/embeddings \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "The food was delicious and the waiter...",
"model": "text-embedding-ada-002",
"encoding_format": "float"
}'
python: |
from openai import OpenAI
client = OpenAI()
client.embeddings.create(
model="text-embedding-ada-002",
input="The food was delicious and the waiter...",
encoding_format="float"
)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const embedding = await openai.embeddings.create({
model: "text-embedding-ada-002",
input: "The quick brown fox jumped over the lazy dog",
encoding_format: "float",
});
console.log(embedding);
}
main();
csharp: >
using System;
using OpenAI.Embeddings;
EmbeddingClient client = new(
model: "text-embedding-3-small",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
OpenAIEmbedding embedding = client.GenerateEmbedding(input: "The
quick brown fox jumped over the lazy dog");
ReadOnlyMemory<float> vector = embedding.ToFloats();
for (int i = 0; i < vector.Length; i++)
{
Console.WriteLine($" [{i,4}] = {vector.Span[i]}");
}
response: |
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [
0.0023064255,
-0.009327292,
.... (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
}
],
"model": "text-embedding-ada-002",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
/evals:
get:
operationId: listEvals
tags:
- Evals
summary: |
List evaluations for a project.
parameters:
- name: after
in: query
description: Identifier for the last eval from the previous pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of evals to retrieve.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: Sort order for evals by timestamp. Use `asc` for ascending order or
`desc` for descending order.
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
- name: order_by
in: query
description: >
Evals can be ordered by creation time or last updated time. Use
`created_at` for creation time or `updated_at` for last updated
time.
required: false
schema:
type: string
enum:
- created_at
- updated_at
default: created_at
responses:
"200":
description: A list of evals
content:
application/json:
schema:
$ref: "#/components/schemas/EvalList"
x-oaiMeta:
name: List evals
group: evals
returns: A list of [evals](/docs/api-reference/evals/object) matching the
specified filters.
path: list
examples:
request:
curl: |
curl https://api.openai.com/v1/evals?limit=1 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "list",
"data": [
{
"id": "eval_67abd54d9b0081909a86353f6fb9317a",
"object": "eval",
"data_source_config": {
"type": "stored_completions",
"metadata": {
"usecase": "push_notifications_summarizer"
},
"schema": {
"type": "object",
"properties": {
"item": {
"type": "object"
},
"sample": {
"type": "object"
}
},
"required": [
"item",
"sample"
]
}
},
"testing_criteria": [
{
"name": "Push Notification Summary Grader",
"id": "Push Notification Summary Grader-9b876f24-4762-4be9-aff4-db7a9b31c673",
"type": "label_model",
"model": "o3-mini",
"input": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "\nLabel the following push notification summary as either correct or incorrect.\nThe push notification and the summary will be provided below.\nA good push notificiation summary is concise and snappy.\nIf it is good, then label it as correct, if not, then incorrect.\n"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "\nPush notifications: {{item.input}}\nSummary: {{sample.output_text}}\n"
}
}
],
"passing_labels": [
"correct"
],
"labels": [
"correct",
"incorrect"
],
"sampling_params": null
}
],
"name": "Push Notification Summary Grader",
"created_at": 1739314509,
"metadata": {
"description": "A stored completions eval for push notification summaries"
}
}
],
"first_id": "eval_67abd54d9b0081909a86353f6fb9317a",
"last_id": "eval_67aa884cf6688190b58f657d4441c8b7",
"has_more": true
}
post:
operationId: createEval
tags:
- Evals
summary: >
Create the structure of an evaluation that can be used to test a model's
performance.
An evaluation is a set of testing criteria and a datasource. After
creating an evaluation, you can run it on different models and model
parameters. We support several types of graders and datasources.
For more information, see the [Evals guide](/docs/guides/evals).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEvalRequest"
responses:
"201":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Eval"
x-oaiMeta:
name: Create eval
group: evals
returns: The created [Eval](/docs/api-reference/evals/object) object.
path: post
examples:
request:
curl: >
curl https://api.openai.com/v1/evals \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sentiment",
"data_source_config": {
"type": "stored_completions",
"metadata": {
"usecase": "chatbot"
}
},
"testing_criteria": [
{
"type": "label_model",
"model": "o3-mini",
"input": [
{
"role": "developer",
"content": "Classify the sentiment of the following statement as one of 'positive', 'neutral', or 'negative'"
},
{
"role": "user",
"content": "Statement: {{item.input}}"
}
],
"passing_labels": [
"positive"
],
"labels": [
"positive",
"neutral",
"negative"
],
"name": "Example label grader"
}
]
}'
response: >
{
"object": "eval",
"id": "eval_67b7fa9a81a88190ab4aa417e397ea21",
"data_source_config": {
"type": "stored_completions",
"metadata": {
"usecase": "chatbot"
},
"schema": {
"type": "object",
"properties": {
"item": {
"type": "object"
},
"sample": {
"type": "object"
}
},
"required": [
"item",
"sample"
]
},
"testing_criteria": [
{
"name": "Example label grader",
"type": "label_model",
"model": "o3-mini",
"input": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "Classify the sentiment of the following statement as one of positive, neutral, or negative"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "Statement: {{item.input}}"
}
}
],
"passing_labels": [
"positive"
],
"labels": [
"positive",
"neutral",
"negative"
]
}
],
"name": "Sentiment",
"created_at": 1740110490,
"metadata": {
"description": "An eval for sentiment analysis"
}
}
/evals/{eval_id}:
get:
operationId: getEval
tags:
- Evals
summary: |
Get an evaluation by ID.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to retrieve.
responses:
"200":
description: The evaluation
content:
application/json:
schema:
$ref: "#/components/schemas/Eval"
x-oaiMeta:
name: Get an eval
group: evals
returns: The [Eval](/docs/api-reference/evals/object) object matching the
specified ID.
path: get
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67abd54d9b0081909a86353f6fb9317a \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "eval",
"id": "eval_67abd54d9b0081909a86353f6fb9317a",
"data_source_config": {
"type": "custom",
"schema": {
"type": "object",
"properties": {
"item": {
"type": "object",
"properties": {
"input": {
"type": "string"
},
"ground_truth": {
"type": "string"
}
},
"required": [
"input",
"ground_truth"
]
}
},
"required": [
"item"
]
}
},
"testing_criteria": [
{
"name": "String check",
"id": "String check-2eaf2d8d-d649-4335-8148-9535a7ca73c2",
"type": "string_check",
"input": "{{item.input}}",
"reference": "{{item.ground_truth}}",
"operation": "eq"
}
],
"name": "External Data Eval",
"created_at": 1739314509,
"metadata": {},
}
post:
operationId: updateEval
tags:
- Evals
summary: |
Update certain properties of an evaluation.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to update.
requestBody:
description: Request to update an evaluation
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Rename the evaluation.
metadata:
$ref: "#/components/schemas/Metadata"
responses:
"200":
description: The updated evaluation
content:
application/json:
schema:
$ref: "#/components/schemas/Eval"
x-oaiMeta:
name: Update an eval
group: evals
returns: The [Eval](/docs/api-reference/evals/object) object matching the
updated version.
path: update
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67abd54d9b0081909a86353f6fb9317a \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Updated Eval", "metadata": {"description": "Updated description"}}'
response: |
{
"object": "eval",
"id": "eval_67abd54d9b0081909a86353f6fb9317a",
"data_source_config": {
"type": "custom",
"schema": {
"type": "object",
"properties": {
"item": {
"type": "object",
"properties": {
"input": {
"type": "string"
},
"ground_truth": {
"type": "string"
}
},
"required": [
"input",
"ground_truth"
]
}
},
"required": [
"item"
]
}
},
"testing_criteria": [
{
"name": "String check",
"id": "String check-2eaf2d8d-d649-4335-8148-9535a7ca73c2",
"type": "string_check",
"input": "{{item.input}}",
"reference": "{{item.ground_truth}}",
"operation": "eq"
}
],
"name": "Updated Eval",
"created_at": 1739314509,
"metadata": {"description": "Updated description"},
}
delete:
operationId: deleteEval
tags:
- Evals
summary: |
Delete an evaluation.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to delete.
responses:
"200":
description: Successfully deleted the evaluation.
content:
application/json:
schema:
type: object
properties:
object:
type: string
example: eval.deleted
deleted:
type: boolean
example: true
eval_id:
type: string
example: eval_abc123
required:
- object
- deleted
- eval_id
"404":
description: Evaluation not found.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
x-oaiMeta:
name: Delete an eval
group: evals
returns: A deletion confirmation object.
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_abc123 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"
response: |
{
"object": "eval.deleted",
"deleted": true,
"eval_id": "eval_abc123"
}
/evals/{eval_id}/runs:
get:
operationId: getEvalRuns
tags:
- Evals
summary: |
Get a list of runs for an evaluation.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to retrieve runs for.
- name: after
in: query
description: Identifier for the last run from the previous pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of runs to retrieve.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: Sort order for runs by timestamp. Use `asc` for ascending order or
`desc` for descending order. Defaults to `asc`.
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
- name: status
in: query
description: Filter runs by status. One of `queued` | `in_progress` | `failed` |
`completed` | `canceled`.
required: false
schema:
type: string
enum:
- queued
- in_progress
- completed
- canceled
- failed
responses:
"200":
description: A list of runs for the evaluation
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRunList"
x-oaiMeta:
name: Get eval runs
group: evals
returns: A list of [EvalRun](/docs/api-reference/evals/run-object) objects
matching the specified ID.
path: get-runs
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/egroup_67abd54d9b0081909a86353f6fb9317a/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "list",
"data": [
{
"object": "eval.run",
"id": "evalrun_67e0c7d31560819090d60c0780591042",
"eval_id": "eval_67e0c726d560819083f19a957c4c640b",
"report_url": "https://platform.openai.com/evaluations/eval_67e0c726d560819083f19a957c4c640b",
"status": "completed",
"model": "o3-mini",
"name": "bulk_with_negative_examples_o3-mini",
"created_at": 1742784467,
"result_counts": {
"total": 1,
"errored": 0,
"failed": 0,
"passed": 1
},
"per_model_usage": [
{
"model_name": "o3-mini",
"invocation_count": 1,
"prompt_tokens": 563,
"completion_tokens": 874,
"total_tokens": 1437,
"cached_tokens": 0
}
],
"per_testing_criteria_results": [
{
"testing_criteria": "Push Notification Summary Grader-1808cd0b-eeec-4e0b-a519-337e79f4f5d1",
"passed": 1,
"failed": 0
}
],
"data_source": {
"type": "completions",
"source": {
"type": "file_content",
"content": [
{
"item": {
"notifications": "\n- New message from Sarah: \"Can you call me later?\"\n- Your package has been delivered!\n- Flash sale: 20% off electronics for the next 2 hours!\n"
}
}
]
},
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "\n\n\n\nYou are a helpful assistant that takes in an array of push notifications and returns a collapsed summary of them.\nThe push notification will be provided as follows:\n<push_notifications>\n...notificationlist...\n</push_notifications>\n\nYou should return just the summary and nothing else.\n\n\nYou should return a summary that is concise and snappy.\n\n\nHere is an example of a good summary:\n<push_notifications>\n- Traffic alert: Accident reported on Main Street.- Package out for delivery: Expected by 5 PM.- New friend suggestion: Connect with Emma.\n</push_notifications>\n<summary>\nTraffic alert, package expected by 5pm, suggestion for new friend (Emily).\n</summary>\n\n\nHere is an example of a bad summary:\n<push_notifications>\n- Traffic alert: Accident reported on Main Street.- Package out for delivery: Expected by 5 PM.- New friend suggestion: Connect with Emma.\n</push_notifications>\n<summary>\nTraffic alert reported on main street. You have a package that will arrive by 5pm, Emily is a new friend suggested for you.\n</summary>\n"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "<push_notifications>{{item.notifications}}</push_notifications>"
}
}
]
},
"model": "o3-mini",
"sampling_params": null
},
"error": null,
"metadata": {}
}
],
"first_id": "evalrun_67e0c7d31560819090d60c0780591042",
"last_id": "evalrun_67e0c7d31560819090d60c0780591042",
"has_more": true
}
post:
operationId: createEvalRun
tags:
- Evals
summary: >
Create a new evaluation run. This is the endpoint that will kick off
grading.
parameters:
- in: path
name: eval_id
required: true
schema:
type: string
description: The ID of the evaluation to create a run for.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEvalRunRequest"
responses:
"201":
description: Successfully created a run for the evaluation
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRun"
"400":
description: Bad request (for example, missing eval object)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
x-oaiMeta:
name: Create eval run
group: evals
returns: The [EvalRun](/docs/api-reference/evals/run-object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67e579652b548190aaa83ada4b125f47/runs \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"gpt-4o-mini","data_source":{"type":"completions","input_messages":{"type":"template","template":[{"role":"developer","content":"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n"} , {"role":"user","content":"{{item.input}}"}]},"sampling_params":{"temperature":1,"max_completions_tokens":2048,"top_p":1,"seed":42},"model":"gpt-4o-mini","source":{"type":"file_content","content":[{"item":{"input":"Tech Company Launches Advanced Artificial Intelligence Platform","ground_truth":"Technology"}}]}}'
response: >
{
"object": "eval.run",
"id": "evalrun_67e57965b480819094274e3a32235e4c",
"eval_id": "eval_67e579652b548190aaa83ada4b125f47",
"report_url": "https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47&run_id=evalrun_67e57965b480819094274e3a32235e4c",
"status": "queued",
"model": "gpt-4o-mini",
"name": "gpt-4o-mini",
"created_at": 1743092069,
"result_counts": {
"total": 0,
"errored": 0,
"failed": 0,
"passed": 0
},
"per_model_usage": null,
"per_testing_criteria_results": null,
"data_source": {
"type": "completions",
"source": {
"type": "file_content",
"content": [
{
"item": {
"input": "Tech Company Launches Advanced Artificial Intelligence Platform",
"ground_truth": "Technology"
}
}
]
},
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.input}}"
}
}
]
},
"model": "gpt-4o-mini",
"sampling_params": {
"seed": 42,
"temperature": 1.0,
"top_p": 1.0,
"max_completions_tokens": 2048
}
},
"error": null,
"metadata": {}
}
/evals/{eval_id}/runs/{run_id}:
get:
operationId: getEvalRun
tags:
- Evals
summary: |
Get an evaluation run by ID.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to retrieve runs for.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run to retrieve.
responses:
"200":
description: The evaluation run
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRun"
x-oaiMeta:
name: Get an eval run
group: evals
returns: The [EvalRun](/docs/api-reference/evals/run-object) object matching the
specified ID.
path: get
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67abd54d9b0081909a86353f6fb9317a/runs/evalrun_67abd54d60ec8190832b46859da808f7 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "eval.run",
"id": "evalrun_67abd54d60ec8190832b46859da808f7",
"eval_id": "eval_67abd54d9b0081909a86353f6fb9317a",
"report_url": "https://platform.openai.com/evaluations/eval_67abd54d9b0081909a86353f6fb9317a?run_id=evalrun_67abd54d60ec8190832b46859da808f7",
"status": "queued",
"model": "gpt-4o-mini",
"name": "gpt-4o-mini",
"created_at": 1743092069,
"result_counts": {
"total": 0,
"errored": 0,
"failed": 0,
"passed": 0
},
"per_model_usage": null,
"per_testing_criteria_results": null,
"data_source": {
"type": "completions",
"source": {
"type": "file_content",
"content": [
{
"item": {
"input": "Tech Company Launches Advanced Artificial Intelligence Platform",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "Central Bank Increases Interest Rates Amid Inflation Concerns",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "International Summit Addresses Climate Change Strategies",
"ground_truth": "World"
}
},
{
"item": {
"input": "Major Retailer Reports Record-Breaking Holiday Sales",
"ground_truth": "Business"
}
},
{
"item": {
"input": "National Team Qualifies for World Championship Finals",
"ground_truth": "Sports"
}
},
{
"item": {
"input": "Stock Markets Rally After Positive Economic Data Released",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "Global Manufacturer Announces Merger with Competitor",
"ground_truth": "Business"
}
},
{
"item": {
"input": "Breakthrough in Renewable Energy Technology Unveiled",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "World Leaders Sign Historic Climate Agreement",
"ground_truth": "World"
}
},
{
"item": {
"input": "Professional Athlete Sets New Record in Championship Event",
"ground_truth": "Sports"
}
},
{
"item": {
"input": "Financial Institutions Adapt to New Regulatory Requirements",
"ground_truth": "Business"
}
},
{
"item": {
"input": "Tech Conference Showcases Advances in Artificial Intelligence",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "Global Markets Respond to Oil Price Fluctuations",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "International Cooperation Strengthened Through New Treaty",
"ground_truth": "World"
}
},
{
"item": {
"input": "Sports League Announces Revised Schedule for Upcoming Season",
"ground_truth": "Sports"
}
}
]
},
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.input}}"
}
}
]
},
"model": "gpt-4o-mini",
"sampling_params": {
"seed": 42,
"temperature": 1.0,
"top_p": 1.0,
"max_completions_tokens": 2048
}
},
"error": null,
"metadata": {}
}
post:
operationId: cancelEvalRun
tags:
- Evals
summary: |
Cancel an ongoing evaluation run.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation whose run you want to cancel.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run to cancel.
responses:
"200":
description: The canceled eval run object
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRun"
x-oaiMeta:
name: Cancel eval run
group: evals
returns: The updated [EvalRun](/docs/api-reference/evals/run-object) object
reflecting that the run is canceled.
path: post
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67abd54d9b0081909a86353f6fb9317a/runs/evalrun_67abd54d60ec8190832b46859da808f7/cancel \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "eval.run",
"id": "evalrun_67abd54d60ec8190832b46859da808f7",
"eval_id": "eval_67abd54d9b0081909a86353f6fb9317a",
"report_url": "https://platform.openai.com/evaluations/eval_67abd54d9b0081909a86353f6fb9317a?run_id=evalrun_67abd54d60ec8190832b46859da808f7",
"status": "canceled",
"model": "gpt-4o-mini",
"name": "gpt-4o-mini",
"created_at": 1743092069,
"result_counts": {
"total": 0,
"errored": 0,
"failed": 0,
"passed": 0
},
"per_model_usage": null,
"per_testing_criteria_results": null,
"data_source": {
"type": "completions",
"source": {
"type": "file_content",
"content": [
{
"item": {
"input": "Tech Company Launches Advanced Artificial Intelligence Platform",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "Central Bank Increases Interest Rates Amid Inflation Concerns",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "International Summit Addresses Climate Change Strategies",
"ground_truth": "World"
}
},
{
"item": {
"input": "Major Retailer Reports Record-Breaking Holiday Sales",
"ground_truth": "Business"
}
},
{
"item": {
"input": "National Team Qualifies for World Championship Finals",
"ground_truth": "Sports"
}
},
{
"item": {
"input": "Stock Markets Rally After Positive Economic Data Released",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "Global Manufacturer Announces Merger with Competitor",
"ground_truth": "Business"
}
},
{
"item": {
"input": "Breakthrough in Renewable Energy Technology Unveiled",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "World Leaders Sign Historic Climate Agreement",
"ground_truth": "World"
}
},
{
"item": {
"input": "Professional Athlete Sets New Record in Championship Event",
"ground_truth": "Sports"
}
},
{
"item": {
"input": "Financial Institutions Adapt to New Regulatory Requirements",
"ground_truth": "Business"
}
},
{
"item": {
"input": "Tech Conference Showcases Advances in Artificial Intelligence",
"ground_truth": "Technology"
}
},
{
"item": {
"input": "Global Markets Respond to Oil Price Fluctuations",
"ground_truth": "Markets"
}
},
{
"item": {
"input": "International Cooperation Strengthened Through New Treaty",
"ground_truth": "World"
}
},
{
"item": {
"input": "Sports League Announces Revised Schedule for Upcoming Season",
"ground_truth": "Sports"
}
}
]
},
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n"
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.input}}"
}
}
]
},
"model": "gpt-4o-mini",
"sampling_params": {
"seed": 42,
"temperature": 1.0,
"top_p": 1.0,
"max_completions_tokens": 2048
}
},
"error": null,
"metadata": {}
}
delete:
operationId: deleteEvalRun
tags:
- Evals
summary: |
Delete an eval run.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to delete the run from.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run to delete.
responses:
"200":
description: Successfully deleted the eval run
content:
application/json:
schema:
type: object
properties:
object:
type: string
example: eval.run.deleted
deleted:
type: boolean
example: true
run_id:
type: string
example: evalrun_677469f564d48190807532a852da3afb
"404":
description: Run not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
x-oaiMeta:
name: Delete eval run
group: evals
returns: An object containing the status of the delete operation.
path: delete
examples:
request:
curl: >
curl
https://api.openai.com/v1/evals/eval_123abc/runs/evalrun_abc456 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "eval.run.deleted",
"deleted": true,
"run_id": "evalrun_abc456"
}
/evals/{eval_id}/runs/{run_id}/output_items:
get:
operationId: getEvalRunOutputItems
tags:
- Evals
summary: |
Get a list of output items for an evaluation run.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to retrieve runs for.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run to retrieve output items for.
- name: after
in: query
description: Identifier for the last output item from the previous pagination
request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of output items to retrieve.
required: false
schema:
type: integer
default: 20
- name: status
in: query
description: >
Filter output items by status. Use `failed` to filter by failed
output
items or `pass` to filter by passed output items.
required: false
schema:
type: string
enum:
- fail
- pass
- name: order
in: query
description: Sort order for output items by timestamp. Use `asc` for ascending
order or `desc` for descending order. Defaults to `asc`.
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
responses:
"200":
description: A list of output items for the evaluation run
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRunOutputItemList"
x-oaiMeta:
name: Get eval run output items
group: evals
returns: A list of
[EvalRunOutputItem](/docs/api-reference/evals/run-output-item-object)
objects matching the specified ID.
path: get
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/egroup_67abd54d9b0081909a86353f6fb9317a/runs/erun_67abd54d60ec8190832b46859da808f7/output_items \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "list",
"data": [
{
"object": "eval.run.output_item",
"id": "outputitem_67e5796c28e081909917bf79f6e6214d",
"created_at": 1743092076,
"run_id": "evalrun_67abd54d60ec8190832b46859da808f7",
"eval_id": "eval_67abd54d9b0081909a86353f6fb9317a",
"status": "pass",
"datasource_item_id": 5,
"datasource_item": {
"input": "Stock Markets Rally After Positive Economic Data Released",
"ground_truth": "Markets"
},
"results": [
{
"name": "String check-a2486074-d803-4445-b431-ad2262e85d47",
"sample": null,
"passed": true,
"score": 1.0
}
],
"sample": {
"input": [
{
"role": "developer",
"content": "Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
},
{
"role": "user",
"content": "Stock Markets Rally After Positive Economic Data Released",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
}
],
"output": [
{
"role": "assistant",
"content": "Markets",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
}
],
"finish_reason": "stop",
"model": "gpt-4o-mini-2024-07-18",
"usage": {
"total_tokens": 325,
"completion_tokens": 2,
"prompt_tokens": 323,
"cached_tokens": 0
},
"error": null,
"temperature": 1.0,
"max_completion_tokens": 2048,
"top_p": 1.0,
"seed": 42
}
}
],
"first_id": "outputitem_67e5796c28e081909917bf79f6e6214d",
"last_id": "outputitem_67e5796c28e081909917bf79f6e6214d",
"has_more": true
}
/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}:
get:
operationId: getEvalRunOutputItem
tags:
- Evals
summary: |
Get an evaluation run output item by ID.
parameters:
- name: eval_id
in: path
required: true
schema:
type: string
description: The ID of the evaluation to retrieve runs for.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run to retrieve.
- name: output_item_id
in: path
required: true
schema:
type: string
description: The ID of the output item to retrieve.
responses:
"200":
description: The evaluation run output item
content:
application/json:
schema:
$ref: "#/components/schemas/EvalRunOutputItem"
x-oaiMeta:
name: Get an output item of an eval run
group: evals
returns: The
[EvalRunOutputItem](/docs/api-reference/evals/run-output-item-object)
object matching the specified ID.
path: get
examples:
request:
curl: |
curl https://api.openai.com/v1/evals/eval_67abd54d9b0081909a86353f6fb9317a/runs/evalrun_67abd54d60ec8190832b46859da808f7/output_items/outputitem_67abd55eb6548190bb580745d5644a33 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "eval.run.output_item",
"id": "outputitem_67e5796c28e081909917bf79f6e6214d",
"created_at": 1743092076,
"run_id": "evalrun_67abd54d60ec8190832b46859da808f7",
"eval_id": "eval_67abd54d9b0081909a86353f6fb9317a",
"status": "pass",
"datasource_item_id": 5,
"datasource_item": {
"input": "Stock Markets Rally After Positive Economic Data Released",
"ground_truth": "Markets"
},
"results": [
{
"name": "String check-a2486074-d803-4445-b431-ad2262e85d47",
"sample": null,
"passed": true,
"score": 1.0
}
],
"sample": {
"input": [
{
"role": "developer",
"content": "Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\" \n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\" \n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\" \n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\" \n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\" \n**Output**: \"Sports\" \n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
},
{
"role": "user",
"content": "Stock Markets Rally After Positive Economic Data Released",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
}
],
"output": [
{
"role": "assistant",
"content": "Markets",
"tool_call_id": null,
"tool_calls": null,
"function_call": null
}
],
"finish_reason": "stop",
"model": "gpt-4o-mini-2024-07-18",
"usage": {
"total_tokens": 325,
"completion_tokens": 2,
"prompt_tokens": 323,
"cached_tokens": 0
},
"error": null,
"temperature": 1.0,
"max_completion_tokens": 2048,
"top_p": 1.0,
"seed": 42
}
}
/files:
get:
operationId: listFiles
tags:
- Files
summary: Returns a list of files.
parameters:
- in: query
name: purpose
required: false
schema:
type: string
description: Only return files with the given purpose.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 10,000, and the default is 10,000.
required: false
schema:
type: integer
default: 10000
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListFilesResponse"
x-oaiMeta:
name: List files
group: files
returns: A list of [File](/docs/api-reference/files/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.files.list()
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const list = await openai.files.list();
for await (const file of list) {
console.log(file);
}
}
main();
response: |
{
"data": [
{
"id": "file-abc123",
"object": "file",
"bytes": 175,
"created_at": 1613677385,
"filename": "salesOverview.pdf",
"purpose": "assistants",
},
{
"id": "file-abc123",
"object": "file",
"bytes": 140,
"created_at": 1613779121,
"filename": "puppy.jsonl",
"purpose": "fine-tune",
}
],
"object": "list"
}
post:
operationId: createFile
tags:
- Files
summary: >
Upload a file that can be used across various endpoints. Individual
files can be up to 512 MB, and the size of all files uploaded by one
organization can be up to 100 GB.
The Assistants API supports files up to 2 million tokens and of specific
file types. See the [Assistants Tools guide](/docs/assistants/tools) for
details.
The Fine-tuning API only supports `.jsonl` files. The input also has
certain required formats for fine-tuning
[chat](/docs/api-reference/fine-tuning/chat-input) or
[completions](/docs/api-reference/fine-tuning/completions-input) models.
The Batch API only supports `.jsonl` files up to 200 MB in size. The
input also has a specific required
[format](/docs/api-reference/batch/request-input).
Please [contact us](https://help.openai.com/) if you need to increase
these storage limits.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/CreateFileRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OpenAIFile"
x-oaiMeta:
name: Upload file
group: files
returns: The uploaded [File](/docs/api-reference/files/object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="fine-tune" \
-F file="@mydata.jsonl"
python: |
from openai import OpenAI
client = OpenAI()
client.files.create(
file=open("mydata.jsonl", "rb"),
purpose="fine-tune"
)
node.js: |-
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const file = await openai.files.create({
file: fs.createReadStream("mydata.jsonl"),
purpose: "fine-tune",
});
console.log(file);
}
main();
response: |
{
"id": "file-abc123",
"object": "file",
"bytes": 120000,
"created_at": 1677610602,
"filename": "mydata.jsonl",
"purpose": "fine-tune",
}
/files/{file_id}:
delete:
operationId: deleteFile
tags:
- Files
summary: Delete a file.
parameters:
- in: path
name: file_id
required: true
schema:
type: string
description: The ID of the file to use for this request.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteFileResponse"
x-oaiMeta:
name: Delete file
group: files
returns: Deletion status.
examples:
request:
curl: |
curl https://api.openai.com/v1/files/file-abc123 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.files.delete("file-abc123")
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const file = await openai.files.del("file-abc123");
console.log(file);
}
main();
response: |
{
"id": "file-abc123",
"object": "file",
"deleted": true
}
get:
operationId: retrieveFile
tags:
- Files
summary: Returns information about a specific file.
parameters:
- in: path
name: file_id
required: true
schema:
type: string
description: The ID of the file to use for this request.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OpenAIFile"
x-oaiMeta:
name: Retrieve file
group: files
returns: The [File](/docs/api-reference/files/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/files/file-abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.files.retrieve("file-abc123")
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const file = await openai.files.retrieve("file-abc123");
console.log(file);
}
main();
response: |
{
"id": "file-abc123",
"object": "file",
"bytes": 120000,
"created_at": 1677610602,
"filename": "mydata.jsonl",
"purpose": "fine-tune",
}
/files/{file_id}/content:
get:
operationId: downloadFile
tags:
- Files
summary: Returns the contents of the specified file.
parameters:
- in: path
name: file_id
required: true
schema:
type: string
description: The ID of the file to use for this request.
responses:
"200":
description: OK
content:
application/json:
schema:
type: string
x-oaiMeta:
name: Retrieve file content
group: files
returns: The file content.
examples:
request:
curl: |
curl https://api.openai.com/v1/files/file-abc123/content \
-H "Authorization: Bearer $OPENAI_API_KEY" > file.jsonl
python: |
from openai import OpenAI
client = OpenAI()
content = client.files.content("file-abc123")
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const file = await openai.files.content("file-abc123");
console.log(file);
}
main();
/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions:
get:
operationId: listFineTuningCheckpointPermissions
tags:
- Fine-tuning
summary: >
**NOTE:** This endpoint requires an [admin API key](../admin-api-keys).
Organization owners can use this endpoint to view all permissions for a
fine-tuned model checkpoint.
parameters:
- in: path
name: fine_tuned_model_checkpoint
required: true
schema:
type: string
example: ft-AF1WoRqd3aJAHsqc9NY7iL8F
description: |
The ID of the fine-tuned model checkpoint to get permissions for.
- name: project_id
in: query
description: The ID of the project to get permissions for.
required: false
schema:
type: string
- name: after
in: query
description: Identifier for the last permission ID from the previous pagination
request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of permissions to retrieve.
required: false
schema:
type: integer
default: 10
- name: order
in: query
description: The order in which to retrieve permissions.
required: false
schema:
type: string
enum:
- ascending
- descending
default: descending
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListFineTuningCheckpointPermissionResponse"
x-oaiMeta:
name: List checkpoint permissions
group: fine-tuning
returns: A list of fine-tuned model checkpoint [permission
objects](/docs/api-reference/fine-tuning/permission-object) for a
fine-tuned model checkpoint.
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/checkpoints/ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd/permissions \
-H "Authorization: Bearer $OPENAI_API_KEY"
response: |
{
"object": "list",
"data": [
{
"object": "checkpoint.permission",
"id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"created_at": 1721764867,
"project_id": "proj_abGMw1llN8IrBb6SvvY5A1iH"
},
{
"object": "checkpoint.permission",
"id": "cp_enQCFmOTGj3syEpYVhBRLTSy",
"created_at": 1721764800,
"project_id": "proj_iqGMw1llN8IrBb6SvvY5A1oF"
},
],
"first_id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"last_id": "cp_enQCFmOTGj3syEpYVhBRLTSy",
"has_more": false
}
post:
operationId: createFineTuningCheckpointPermission
tags:
- Fine-tuning
summary: >
**NOTE:** Calling this endpoint requires an [admin API
key](../admin-api-keys).
This enables organization owners to share fine-tuned models with other
projects in their organization.
parameters:
- in: path
name: fine_tuned_model_checkpoint
required: true
schema:
type: string
example: ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd
description: >
The ID of the fine-tuned model checkpoint to create a permission for.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateFineTuningCheckpointPermissionRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListFineTuningCheckpointPermissionResponse"
x-oaiMeta:
name: Create checkpoint permissions
group: fine-tuning
returns: A list of fine-tuned model checkpoint [permission
objects](/docs/api-reference/fine-tuning/permission-object) for a
fine-tuned model checkpoint.
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/checkpoints/ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd/permissions \
-H "Authorization: Bearer $OPENAI_API_KEY"
-d '{"project_ids": ["proj_abGMw1llN8IrBb6SvvY5A1iH"]}'
response: |
{
"object": "list",
"data": [
{
"object": "checkpoint.permission",
"id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"created_at": 1721764867,
"project_id": "proj_abGMw1llN8IrBb6SvvY5A1iH"
}
],
"first_id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"last_id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"has_more": false
}
/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions/{permission_id}:
delete:
operationId: deleteFineTuningCheckpointPermission
tags:
- Fine-tuning
summary: >
**NOTE:** This endpoint requires an [admin API key](../admin-api-keys).
Organization owners can use this endpoint to delete a permission for a
fine-tuned model checkpoint.
parameters:
- in: path
name: fine_tuned_model_checkpoint
required: true
schema:
type: string
example: ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd
description: >
The ID of the fine-tuned model checkpoint to delete a permission for.
- in: path
name: permission_id
required: true
schema:
type: string
example: cp_zc4Q7MP6XxulcVzj4MZdwsAB
description: |
The ID of the fine-tuned model checkpoint permission to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteFineTuningCheckpointPermissionResponse"
x-oaiMeta:
name: Delete checkpoint permission
group: fine-tuning
returns: The deletion status of the fine-tuned model checkpoint [permission
object](/docs/api-reference/fine-tuning/permission-object).
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/checkpoints/ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd/permissions/cp_zc4Q7MP6XxulcVzj4MZdwsAB \
-H "Authorization: Bearer $OPENAI_API_KEY"
response: |
{
"object": "checkpoint.permission",
"id": "cp_zc4Q7MP6XxulcVzj4MZdwsAB",
"deleted": true
}
/fine_tuning/jobs:
post:
operationId: createFineTuningJob
tags:
- Fine-tuning
summary: >
Creates a fine-tuning job which begins the process of creating a new
model from a given dataset.
Response includes details of the enqueued job including job status and
the name of the fine-tuned models once complete.
[Learn more about fine-tuning](/docs/guides/fine-tuning)
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateFineTuningJobRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FineTuningJob"
x-oaiMeta:
name: Create fine-tuning job
group: fine-tuning
returns: A [fine-tuning.job](/docs/api-reference/fine-tuning/object) object.
examples:
- title: Default
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-BK7bzQj3FfZFXr7DbL6xJwfo",
"model": "gpt-4o-mini"
}'
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-4o-mini"
)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const fineTune = await openai.fineTuning.jobs.create({
training_file: "file-abc123"
});
console.log(fineTune);
}
main();
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": null,
"training_file": "file-abc123",
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
}
}
},
"metadata": null
}
- title: Epochs
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-abc123",
"model": "gpt-4o-mini",
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"n_epochs": 2
}
}
}
}'
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-4o-mini",
method={
"type": "supervised",
"supervised": {
"hyperparameters": {
"n_epochs": 2
}
}
}
)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const fineTune = await openai.fineTuning.jobs.create({
training_file: "file-abc123",
model: "gpt-4o-mini",
method: {
type: "supervised",
supervised: {
hyperparameters: {
n_epochs: 2
}
}
}
});
console.log(fineTune);
}
main();
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": null,
"training_file": "file-abc123",
"hyperparameters": {"n_epochs": 2},
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": 2,
}
}
},
"metadata": null
}
- title: Validation file
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-abc123",
"validation_file": "file-abc123",
"model": "gpt-4o-mini"
}'
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
validation_file="file-def456",
model="gpt-4o-mini"
)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const fineTune = await openai.fineTuning.jobs.create({
training_file: "file-abc123",
validation_file: "file-abc123"
});
console.log(fineTune);
}
main();
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": "file-abc123",
"training_file": "file-abc123",
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
}
}
},
"metadata": null
}
- title: DPO
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-abc123",
"validation_file": "file-abc123",
"model": "gpt-4o-mini",
"method": {
"type": "dpo",
"dpo": {
"hyperparameters": {
"beta": 0.1,
}
}
}
}'
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": "file-abc123",
"training_file": "file-abc123",
"method": {
"type": "dpo",
"dpo": {
"hyperparameters": {
"beta": 0.1,
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
}
}
},
"metadata": null
}
- title: W&B Integration
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-abc123",
"validation_file": "file-abc123",
"model": "gpt-4o-mini",
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"name": "ft-run-display-name"
"tags": [
"first-experiment", "v2"
]
}
}
]
}'
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": "file-abc123",
"training_file": "file-abc123",
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": None,
"run_id": "ftjob-abc123"
}
}
],
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
}
}
},
"metadata": null
}
get:
operationId: listPaginatedFineTuningJobs
tags:
- Fine-tuning
summary: |
List your organization's fine-tuning jobs
parameters:
- name: after
in: query
description: Identifier for the last job from the previous pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of fine-tuning jobs to retrieve.
required: false
schema:
type: integer
default: 20
- in: query
name: metadata
required: false
schema:
type: object
nullable: true
additionalProperties:
type: string
style: deepObject
explode: true
description: >
Optional metadata filter. To filter, use the syntax `metadata[k]=v`.
Alternatively, set `metadata=null` to indicate no metadata.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListPaginatedFineTuningJobsResponse"
x-oaiMeta:
name: List fine-tuning jobs
group: fine-tuning
returns: A list of paginated [fine-tuning
job](/docs/api-reference/fine-tuning/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs?limit=2&metadata[key]=value \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.list()
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const list = await openai.fineTuning.jobs.list();
for await (const fineTune of list) {
console.log(fineTune);
}
}
main();
response: |
{
"object": "list",
"data": [
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "queued",
"validation_file": null,
"training_file": "file-abc123",
"metadata": {
"key": "value"
}
},
{ ... },
{ ... }
], "has_more": true
}
/fine_tuning/jobs/{fine_tuning_job_id}:
get:
operationId: retrieveFineTuningJob
tags:
- Fine-tuning
summary: |
Get info about a fine-tuning job.
[Learn more about fine-tuning](/docs/guides/fine-tuning)
parameters:
- in: path
name: fine_tuning_job_id
required: true
schema:
type: string
example: ft-AF1WoRqd3aJAHsqc9NY7iL8F
description: |
The ID of the fine-tuning job.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FineTuningJob"
x-oaiMeta:
name: Retrieve fine-tuning job
group: fine-tuning
returns: The [fine-tuning](/docs/api-reference/fine-tuning/object) object with
the given ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs/ft-AF1WoRqd3aJAHsqc9NY7iL8F \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.retrieve("ftjob-abc123")
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const fineTune = await openai.fineTuning.jobs.retrieve("ftjob-abc123");
console.log(fineTune);
}
main();
response: >
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "davinci-002",
"created_at": 1692661014,
"finished_at": 1692661190,
"fine_tuned_model": "ft:davinci-002:my-org:custom_suffix:7q8mpxmy",
"organization_id": "org-123",
"result_files": [
"file-abc123"
],
"status": "succeeded",
"validation_file": null,
"training_file": "file-abc123",
"hyperparameters": {
"n_epochs": 4,
"batch_size": 1,
"learning_rate_multiplier": 1.0
},
"trained_tokens": 5768,
"integrations": [],
"seed": 0,
"estimated_finish": 0,
"method": {
"type": "supervised",
"supervised": {
"hyperparameters": {
"n_epochs": 4,
"batch_size": 1,
"learning_rate_multiplier": 1.0
}
}
}
}
/fine_tuning/jobs/{fine_tuning_job_id}/cancel:
post:
operationId: cancelFineTuningJob
tags:
- Fine-tuning
summary: |
Immediately cancel a fine-tune job.
parameters:
- in: path
name: fine_tuning_job_id
required: true
schema:
type: string
example: ft-AF1WoRqd3aJAHsqc9NY7iL8F
description: |
The ID of the fine-tuning job to cancel.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FineTuningJob"
x-oaiMeta:
name: Cancel fine-tuning
group: fine-tuning
returns: The cancelled [fine-tuning](/docs/api-reference/fine-tuning/object)
object.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/cancel \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.cancel("ftjob-abc123")
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const fineTune = await openai.fineTuning.jobs.cancel("ftjob-abc123");
console.log(fineTune);
}
main();
response: |
{
"object": "fine_tuning.job",
"id": "ftjob-abc123",
"model": "gpt-4o-mini-2024-07-18",
"created_at": 1721764800,
"fine_tuned_model": null,
"organization_id": "org-123",
"result_files": [],
"status": "cancelled",
"validation_file": "file-abc123",
"training_file": "file-abc123"
}
/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints:
get:
operationId: listFineTuningJobCheckpoints
tags:
- Fine-tuning
summary: |
List checkpoints for a fine-tuning job.
parameters:
- in: path
name: fine_tuning_job_id
required: true
schema:
type: string
example: ft-AF1WoRqd3aJAHsqc9NY7iL8F
description: |
The ID of the fine-tuning job to get checkpoints for.
- name: after
in: query
description: Identifier for the last checkpoint ID from the previous pagination
request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of checkpoints to retrieve.
required: false
schema:
type: integer
default: 10
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListFineTuningJobCheckpointsResponse"
x-oaiMeta:
name: List fine-tuning checkpoints
group: fine-tuning
returns: A list of fine-tuning [checkpoint
objects](/docs/api-reference/fine-tuning/checkpoint-object) for a
fine-tuning job.
examples:
request:
curl: |
curl https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/checkpoints \
-H "Authorization: Bearer $OPENAI_API_KEY"
response: >
{
"object": "list"
"data": [
{
"object": "fine_tuning.job.checkpoint",
"id": "ftckpt_zc4Q7MP6XxulcVzj4MZdwsAB",
"created_at": 1721764867,
"fine_tuned_model_checkpoint": "ft:gpt-4o-mini-2024-07-18:my-org:custom-suffix:96olL566:ckpt-step-2000",
"metrics": {
"full_valid_loss": 0.134,
"full_valid_mean_token_accuracy": 0.874
},
"fine_tuning_job_id": "ftjob-abc123",
"step_number": 2000,
},
{
"object": "fine_tuning.job.checkpoint",
"id": "ftckpt_enQCFmOTGj3syEpYVhBRLTSy",
"created_at": 1721764800,
"fine_tuned_model_checkpoint": "ft:gpt-4o-mini-2024-07-18:my-org:custom-suffix:7q8mpxmy:ckpt-step-1000",
"metrics": {
"full_valid_loss": 0.167,
"full_valid_mean_token_accuracy": 0.781
},
"fine_tuning_job_id": "ftjob-abc123",
"step_number": 1000,
},
],
"first_id": "ftckpt_zc4Q7MP6XxulcVzj4MZdwsAB",
"last_id": "ftckpt_enQCFmOTGj3syEpYVhBRLTSy",
"has_more": true
}
/fine_tuning/jobs/{fine_tuning_job_id}/events:
get:
operationId: listFineTuningEvents
tags:
- Fine-tuning
summary: |
Get status updates for a fine-tuning job.
parameters:
- in: path
name: fine_tuning_job_id
required: true
schema:
type: string
example: ft-AF1WoRqd3aJAHsqc9NY7iL8F
description: |
The ID of the fine-tuning job to get events for.
- name: after
in: query
description: Identifier for the last event from the previous pagination request.
required: false
schema:
type: string
- name: limit
in: query
description: Number of events to retrieve.
required: false
schema:
type: integer
default: 20
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListFineTuningJobEventsResponse"
x-oaiMeta:
name: List fine-tuning events
group: fine-tuning
returns: A list of fine-tuning event objects.
examples:
request:
curl: >
curl
https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/events \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.list_events(
fine_tuning_job_id="ftjob-abc123",
limit=2
)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const list = await openai.fineTuning.list_events(id="ftjob-abc123", limit=2);
for await (const fineTune of list) {
console.log(fineTune);
}
}
main();
response: >
{
"object": "list",
"data": [
{
"object": "fine_tuning.job.event",
"id": "ft-event-ddTJfwuMVpfLXseO0Am0Gqjm",
"created_at": 1721764800,
"level": "info",
"message": "Fine tuning job successfully completed",
"data": null,
"type": "message"
},
{
"object": "fine_tuning.job.event",
"id": "ft-event-tyiGuB72evQncpH87xe505Sv",
"created_at": 1721764800,
"level": "info",
"message": "New fine-tuned model created: ft:gpt-4o-mini:openai::7p4lURel",
"data": null,
"type": "message"
}
],
"has_more": true
}
/images/edits:
post:
operationId: createImageEdit
tags:
- Images
summary: Creates an edited or extended image given one or more source images and
a prompt. This endpoint only supports `gpt-image-1` and `dall-e-2`.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/CreateImageEditRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ImagesResponse"
x-oaiMeta:
name: Create image edit
group: images
returns: Returns a list of [image](/docs/api-reference/images/object) objects.
examples:
request:
curl: >
curl -s -D >(grep -i x-request-id >&2) \
-o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
-X POST "https://api.openai.com/v1/images/edits" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-1" \
-F "image[]=@body-lotion.png" \
-F "image[]=@bath-bomb.png" \
-F "image[]=@incense-kit.png" \
-F "image[]=@soap.png" \
-F 'prompt=Create a lovely gift basket with these four items in it'
python: >
import base64
from openai import OpenAI
client = OpenAI()
prompt = """
Generate a photorealistic image of a gift basket on a white
background
labeled 'Relax & Unwind' with a ribbon and handwriting-like font,
containing all the items in the reference pictures.
"""
result = client.images.edit(
model="gpt-image-1",
image=[
open("body-lotion.png", "rb"),
open("bath-bomb.png", "rb"),
open("incense-kit.png", "rb"),
open("soap.png", "rb"),
],
prompt=prompt
)
image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
# Save the image to a file
with open("gift-basket.png", "wb") as f:
f.write(image_bytes)
node.js: >
import fs from "fs";
import OpenAI, { toFile } from "openai";
const client = new OpenAI();
const imageFiles = [
"bath-bomb.png",
"body-lotion.png",
"incense-kit.png",
"soap.png",
];
const images = await Promise.all(
imageFiles.map(async (file) =>
await toFile(fs.createReadStream(file), null, {
type: "image/png",
})
),
);
const rsp = await client.images.edit({
model: "gpt-image-1",
image: images,
prompt: "Create a lovely gift basket with these four items in it",
});
// Save the image to a file
const image_base64 = rsp.data[0].b64_json;
const image_bytes = Buffer.from(image_base64, "base64");
fs.writeFileSync("basket.png", image_bytes);
response: |
{
"created": 1713833628,
"data": [
{
"b64_json": "..."
}
],
"usage": {
"total_tokens": 100,
"input_tokens": 50,
"output_tokens": 50,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 40
}
}
}
/images/generations:
post:
operationId: createImage
tags:
- Images
summary: |
Creates an image given a prompt. [Learn more](/docs/guides/images).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateImageRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ImagesResponse"
x-oaiMeta:
name: Create image
group: images
returns: Returns a list of [image](/docs/api-reference/images/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-image-1",
"prompt": "A cute baby sea otter",
"n": 1,
"size": "1024x1024"
}'
python: |
import base64
from openai import OpenAI
client = OpenAI()
img = client.images.generate(
model="gpt-image-1",
prompt="A cute baby sea otter",
n=1,
size="1024x1024"
)
image_bytes = base64.b64decode(img.data[0].b64_json)
with open("output.png", "wb") as f:
f.write(image_bytes)
node.js: |
import OpenAI from "openai";
import { writeFile } from "fs/promises";
const client = new OpenAI();
const img = await client.images.generate({
model: "gpt-image-1",
prompt: "A cute baby sea otter",
n: 1,
size: "1024x1024"
});
const imageBuffer = Buffer.from(img.data[0].b64_json, "base64");
await writeFile("output.png", imageBuffer);
response: |
{
"created": 1713833628,
"data": [
{
"b64_json": "..."
}
],
"usage": {
"total_tokens": 100,
"input_tokens": 50,
"output_tokens": 50,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 40
}
}
}
/images/variations:
post:
operationId: createImageVariation
tags:
- Images
summary: Creates a variation of a given image. This endpoint only supports
`dall-e-2`.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/CreateImageVariationRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ImagesResponse"
x-oaiMeta:
name: Create image variation
group: images
returns: Returns a list of [image](/docs/api-reference/images/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/images/variations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F image="@otter.png" \
-F n=2 \
-F size="1024x1024"
python: |
from openai import OpenAI
client = OpenAI()
response = client.images.create_variation(
image=open("image_edit_original.png", "rb"),
n=2,
size="1024x1024"
)
node.js: |-
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const image = await openai.images.createVariation({
image: fs.createReadStream("otter.png"),
});
console.log(image.data);
}
main();
csharp: >
using System;
using OpenAI.Images;
ImageClient client = new(
model: "dall-e-2",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
GeneratedImage image =
client.GenerateImageVariation(imageFilePath: "otter.png");
Console.WriteLine(image.ImageUri);
response: |
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
/models:
get:
operationId: listModels
tags:
- Models
summary: Lists the currently available models, and provides basic information
about each one such as the owner and availability.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListModelsResponse"
x-oaiMeta:
name: List models
group: models
returns: A list of [model](/docs/api-reference/models/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.models.list()
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const list = await openai.models.list();
for await (const model of list) {
console.log(model);
}
}
main();
csharp: |
using System;
using OpenAI.Models;
OpenAIModelClient client = new(
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
foreach (var model in client.GetModels().Value)
{
Console.WriteLine(model.Id);
}
response: |
{
"object": "list",
"data": [
{
"id": "model-id-0",
"object": "model",
"created": 1686935002,
"owned_by": "organization-owner"
},
{
"id": "model-id-1",
"object": "model",
"created": 1686935002,
"owned_by": "organization-owner",
},
{
"id": "model-id-2",
"object": "model",
"created": 1686935002,
"owned_by": "openai"
},
],
"object": "list"
}
/models/{model}:
get:
operationId: retrieveModel
tags:
- Models
summary: Retrieves a model instance, providing basic information about the model
such as the owner and permissioning.
parameters:
- in: path
name: model
required: true
schema:
type: string
example: gpt-4o-mini
description: The ID of the model to use for this request
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Model"
x-oaiMeta:
name: Retrieve model
group: models
returns: The [model](/docs/api-reference/models/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/models/VAR_chat_model_id \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.models.retrieve("VAR_chat_model_id")
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const model = await openai.models.retrieve("VAR_chat_model_id");
console.log(model);
}
main();
csharp: |
using System;
using System.ClientModel;
using OpenAI.Models;
OpenAIModelClient client = new(
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
ClientResult<OpenAIModel> model = client.GetModel("babbage-002");
Console.WriteLine(model.Value.Id);
response: |
{
"id": "VAR_chat_model_id",
"object": "model",
"created": 1686935002,
"owned_by": "openai"
}
delete:
operationId: deleteModel
tags:
- Models
summary: Delete a fine-tuned model. You must have the Owner role in your
organization to delete a model.
parameters:
- in: path
name: model
required: true
schema:
type: string
example: ft:gpt-4o-mini:acemeco:suffix:abc123
description: The model to delete
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteModelResponse"
x-oaiMeta:
name: Delete a fine-tuned model
group: models
returns: Deletion status.
examples:
request:
curl: |
curl https://api.openai.com/v1/models/ft:gpt-4o-mini:acemeco:suffix:abc123 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"
python: |
from openai import OpenAI
client = OpenAI()
client.models.delete("ft:gpt-4o-mini:acemeco:suffix:abc123")
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const model = await openai.models.del("ft:gpt-4o-mini:acemeco:suffix:abc123");
console.log(model);
}
main();
csharp: >
using System;
using System.ClientModel;
using OpenAI.Models;
OpenAIModelClient client = new(
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
ClientResult success =
client.DeleteModel("ft:gpt-4o-mini:acemeco:suffix:abc123");
Console.WriteLine(success);
response: |
{
"id": "ft:gpt-4o-mini:acemeco:suffix:abc123",
"object": "model",
"deleted": true
}
/moderations:
post:
operationId: createModeration
tags:
- Moderations
summary: |
Classifies if text and/or image inputs are potentially harmful. Learn
more in the [moderation guide](/docs/guides/moderation).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateModerationRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CreateModerationResponse"
x-oaiMeta:
name: Create moderation
group: moderations
returns: A [moderation](/docs/api-reference/moderations/object) object.
examples:
- title: Single string
request:
curl: |
curl https://api.openai.com/v1/moderations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"input": "I want to kill them."
}'
python: >
from openai import OpenAI
client = OpenAI()
moderation = client.moderations.create(input="I want to kill
them.")
print(moderation)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const moderation = await openai.moderations.create({ input: "I want to kill them." });
console.log(moderation);
}
main();
csharp: >
using System;
using System.ClientModel;
using OpenAI.Moderations;
ModerationClient client = new(
model: "omni-moderation-latest",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
ClientResult<ModerationResult> moderation =
client.ClassifyText("I want to kill them.");
response: |
{
"id": "modr-AB8CjOTu2jiq12hp1AQPfeqFWaORR",
"model": "text-moderation-007",
"results": [
{
"flagged": true,
"categories": {
"sexual": false,
"hate": false,
"harassment": true,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"harassment/threatening": true,
"violence": true
},
"category_scores": {
"sexual": 0.000011726012417057063,
"hate": 0.22706663608551025,
"harassment": 0.5215635299682617,
"self-harm": 2.227119921371923e-6,
"sexual/minors": 7.107352217872176e-8,
"hate/threatening": 0.023547329008579254,
"violence/graphic": 0.00003391829886822961,
"self-harm/intent": 1.646940972932498e-6,
"self-harm/instructions": 1.1198755256458526e-9,
"harassment/threatening": 0.5694745779037476,
"violence": 0.9971134662628174
}
}
]
}
- title: Image and text
request:
curl: >
curl https://api.openai.com/v1/moderations \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "omni-moderation-latest",
"input": [
{ "type": "text", "text": "...text to classify goes here..." },
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png"
}
}
]
}'
python: >
from openai import OpenAI
client = OpenAI()
response = client.moderations.create(
model="omni-moderation-latest",
input=[
{"type": "text", "text": "...text to classify goes here..."},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png",
# can also use base64 encoded image URLs
# "url": "data:image/jpeg;base64,abcdefg..."
}
},
],
)
print(response)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
const moderation = await openai.moderations.create({
model: "omni-moderation-latest",
input: [
{ type: "text", text: "...text to classify goes here..." },
{
type: "image_url",
image_url: {
url: "https://example.com/image.png"
// can also use base64 encoded image URLs
// url: "data:image/jpeg;base64,abcdefg..."
}
}
],
});
console.log(moderation);
response: |
{
"id": "modr-0d9740456c391e43c445bf0f010940c7",
"model": "omni-moderation-latest",
"results": [
{
"flagged": true,
"categories": {
"harassment": true,
"harassment/threatening": true,
"sexual": false,
"hate": false,
"hate/threatening": false,
"illicit": false,
"illicit/violent": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"self-harm": false,
"sexual/minors": false,
"violence": true,
"violence/graphic": true
},
"category_scores": {
"harassment": 0.8189693396524255,
"harassment/threatening": 0.804985420696006,
"sexual": 1.573112165348997e-6,
"hate": 0.007562942636942845,
"hate/threatening": 0.004208854591835476,
"illicit": 0.030535955153511665,
"illicit/violent": 0.008925306722380033,
"self-harm/intent": 0.00023023930975076432,
"self-harm/instructions": 0.0002293869201073356,
"self-harm": 0.012598046106750154,
"sexual/minors": 2.212566909570261e-8,
"violence": 0.9999992735124786,
"violence/graphic": 0.843064871157054
},
"category_applied_input_types": {
"harassment": [
"text"
],
"harassment/threatening": [
"text"
],
"sexual": [
"text",
"image"
],
"hate": [
"text"
],
"hate/threatening": [
"text"
],
"illicit": [
"text"
],
"illicit/violent": [
"text"
],
"self-harm/intent": [
"text",
"image"
],
"self-harm/instructions": [
"text",
"image"
],
"self-harm": [
"text",
"image"
],
"sexual/minors": [
"text"
],
"violence": [
"text",
"image"
],
"violence/graphic": [
"text",
"image"
]
}
}
]
}
/organization/admin_api_keys:
get:
summary: List organization API keys
operationId: admin-api-keys-list
description: Retrieve a paginated list of organization admin API keys.
parameters:
- in: query
name: after
required: false
schema:
type: string
nullable: true
description: Return keys with IDs that come after this ID in the pagination
order.
- in: query
name: order
required: false
schema:
type: string
enum:
- asc
- desc
default: asc
description: Order results by creation time, ascending or descending.
- in: query
name: limit
required: false
schema:
type: integer
default: 20
description: Maximum number of keys to return.
responses:
"200":
description: A list of organization API keys.
content:
application/json:
schema:
$ref: "#/components/schemas/ApiKeyList"
x-oaiMeta:
name: List all organization and project API keys.
group: administration
returns: A list of admin and project API key objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/admin_api_keys?after=key_abc&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.admin_api_key",
"id": "key_abc",
"name": "Main Admin Key",
"redacted_value": "sk-admin...def",
"created_at": 1711471533,
"last_used_at": 1711471534,
"owner": {
"type": "service_account",
"object": "organization.service_account",
"id": "sa_456",
"name": "My Service Account",
"created_at": 1711471533,
"role": "member"
}
}
],
"first_id": "key_abc",
"last_id": "key_abc",
"has_more": false
}
post:
summary: Create an organization admin API key
operationId: admin-api-keys-create
description: Create a new admin-level API key for the organization.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
example: New Admin Key
responses:
"200":
description: The newly created admin API key.
content:
application/json:
schema:
$ref: "#/components/schemas/AdminApiKey"
x-oaiMeta:
name: Create admin API key
group: administration
returns: The created [AdminApiKey](/docs/api-reference/admin-api-keys/object)
object.
examples:
request:
curl: >
curl -X POST https://api.openai.com/v1/organization/admin_api_keys
\
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "New Admin Key"
}'
response: |
{
"object": "organization.admin_api_key",
"id": "key_xyz",
"name": "New Admin Key",
"redacted_value": "sk-admin...xyz",
"created_at": 1711471533,
"last_used_at": 1711471534,
"owner": {
"type": "user",
"object": "organization.user",
"id": "user_123",
"name": "John Doe",
"created_at": 1711471533,
"role": "owner"
},
"value": "sk-admin-1234abcd"
}
/organization/admin_api_keys/{key_id}:
get:
summary: Retrieve a single organization API key
operationId: admin-api-keys-get
description: Get details for a specific organization API key by its ID.
parameters:
- in: path
name: key_id
required: true
schema:
type: string
description: The ID of the API key.
responses:
"200":
description: Details of the requested API key.
content:
application/json:
schema:
$ref: "#/components/schemas/AdminApiKey"
x-oaiMeta:
name: Retrieve admin API key
group: administration
returns: The requested [AdminApiKey](/docs/api-reference/admin-api-keys/object)
object.
examples:
request:
curl: >
curl https://api.openai.com/v1/organization/admin_api_keys/key_abc
\
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.admin_api_key",
"id": "key_abc",
"name": "Main Admin Key",
"redacted_value": "sk-admin...xyz",
"created_at": 1711471533,
"last_used_at": 1711471534,
"owner": {
"type": "user",
"object": "organization.user",
"id": "user_123",
"name": "John Doe",
"created_at": 1711471533,
"role": "owner"
}
}
delete:
summary: Delete an organization admin API key
operationId: admin-api-keys-delete
description: Delete the specified admin API key.
parameters:
- in: path
name: key_id
required: true
schema:
type: string
description: The ID of the API key to be deleted.
responses:
"200":
description: Confirmation that the API key was deleted.
content:
application/json:
schema:
type: object
properties:
id:
type: string
example: key_abc
object:
type: string
example: organization.admin_api_key.deleted
deleted:
type: boolean
example: true
x-oaiMeta:
name: Delete admin API key
group: administration
returns: A confirmation object indicating the key was deleted.
examples:
request:
curl: >
curl -X DELETE
https://api.openai.com/v1/organization/admin_api_keys/key_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"id": "key_abc",
"object": "organization.admin_api_key.deleted",
"deleted": true
}
/organization/audit_logs:
get:
summary: List user actions and configuration changes within this organization.
operationId: list-audit-logs
tags:
- Audit Logs
parameters:
- name: effective_at
in: query
description: Return only events whose `effective_at` (Unix seconds) is in this
range.
required: false
schema:
type: object
properties:
gt:
type: integer
description: Return only events whose `effective_at` (Unix seconds) is greater
than this value.
gte:
type: integer
description: Return only events whose `effective_at` (Unix seconds) is greater
than or equal to this value.
lt:
type: integer
description: Return only events whose `effective_at` (Unix seconds) is less than
this value.
lte:
type: integer
description: Return only events whose `effective_at` (Unix seconds) is less than
or equal to this value.
- name: project_ids[]
in: query
description: Return only events for these projects.
required: false
schema:
type: array
items:
type: string
- name: event_types[]
in: query
description: Return only events with a `type` in one of these values. For
example, `project.created`. For all options, see the documentation
for the [audit log object](/docs/api-reference/audit-logs/object).
required: false
schema:
type: array
items:
$ref: "#/components/schemas/AuditLogEventType"
- name: actor_ids[]
in: query
description: Return only events performed by these actors. Can be a user ID, a
service account ID, or an api key tracking ID.
required: false
schema:
type: array
items:
type: string
- name: actor_emails[]
in: query
description: Return only events performed by users with these emails.
required: false
schema:
type: array
items:
type: string
- name: resource_ids[]
in: query
description: Return only events performed on these targets. For example, a
project ID updated.
required: false
schema:
type: array
items:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
responses:
"200":
description: Audit logs listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListAuditLogsResponse"
x-oaiMeta:
name: List audit logs
group: audit-logs
returns: A list of paginated [Audit Log](/docs/api-reference/audit-logs/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/audit_logs \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "list",
"data": [
{
"id": "audit_log-xxx_yyyymmdd",
"type": "project.archived",
"effective_at": 1722461446,
"actor": {
"type": "api_key",
"api_key": {
"type": "user",
"user": {
"id": "user-xxx",
"email": "user@example.com"
}
}
},
"project.archived": {
"id": "proj_abc"
},
},
{
"id": "audit_log-yyy__20240101",
"type": "api_key.updated",
"effective_at": 1720804190,
"actor": {
"type": "session",
"session": {
"user": {
"id": "user-xxx",
"email": "user@example.com"
},
"ip_address": "127.0.0.1",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"ja3": "a497151ce4338a12c4418c44d375173e",
"ja4": "q13d0313h3_55b375c5d22e_c7319ce65786",
"ip_address_details": {
"country": "US",
"city": "San Francisco",
"region": "California",
"region_code": "CA",
"asn": "1234",
"latitude": "37.77490",
"longitude": "-122.41940"
}
}
},
"api_key.updated": {
"id": "key_xxxx",
"data": {
"scopes": ["resource_2.operation_2"]
}
},
}
],
"first_id": "audit_log-xxx__20240101",
"last_id": "audit_log_yyy__20240101",
"has_more": true
}
/organization/certificates:
get:
summary: List uploaded certificates for this organization.
operationId: listOrganizationCertificates
tags:
- Certificates
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
responses:
"200":
description: Certificates listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: List organization certificates
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/certificates \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY"
response: |
{
"object": "list",
"data": [
{
"object": "organization.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
"first_id": "cert_abc",
"last_id": "cert_abc",
"has_more": false
}
post:
summary: >
Upload a certificate to the organization. This does **not**
automatically activate the certificate.
Organizations can upload up to 50 certificates.
operationId: uploadCertificate
tags:
- Certificates
requestBody:
description: The certificate upload payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UploadCertificateRequest"
responses:
"200":
description: Certificate uploaded successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Certificate"
x-oaiMeta:
name: Upload certificate
group: administration
returns: A single [Certificate](/docs/api-reference/certificates/object) object.
examples:
request:
curl: >
curl -X POST https://api.openai.com/v1/organization/certificates \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Example Certificate",
"certificate": "-----BEGIN CERTIFICATE-----\\nMIIDeT...\\n-----END CERTIFICATE-----"
}'
response: |
{
"object": "certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
}
/organization/certificates/activate:
post:
summary: >
Activate certificates at the organization level.
You can atomically and idempotently activate up to 10 certificates at a
time.
operationId: activateOrganizationCertificates
tags:
- Certificates
requestBody:
description: The certificate activation payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ToggleCertificatesRequest"
responses:
"200":
description: Certificates activated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: Activate certificates for organization
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects that were activated.
examples:
request:
curl: >
curl https://api.openai.com/v1/organization/certificates/activate
\
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": ["cert_abc", "cert_def"]
}'
response: |
{
"object": "organization.certificate.activation",
"data": [
{
"object": "organization.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
{
"object": "organization.certificate",
"id": "cert_def",
"name": "My Example Certificate 2",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
}
/organization/certificates/deactivate:
post:
summary: >
Deactivate certificates at the organization level.
You can atomically and idempotently deactivate up to 10 certificates at
a time.
operationId: deactivateOrganizationCertificates
tags:
- Certificates
requestBody:
description: The certificate deactivation payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ToggleCertificatesRequest"
responses:
"200":
description: Certificates deactivated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: Deactivate certificates for organization
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects that were deactivated.
examples:
request:
curl: >
curl
https://api.openai.com/v1/organization/certificates/deactivate \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": ["cert_abc", "cert_def"]
}'
response: |
{
"object": "organization.certificate.deactivation",
"data": [
{
"object": "organization.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": false,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
{
"object": "organization.certificate",
"id": "cert_def",
"name": "My Example Certificate 2",
"active": false,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
}
/organization/certificates/{certificate_id}:
get:
summary: |
Get a certificate that has been uploaded to the organization.
You can get a certificate regardless of whether it is active or not.
operationId: getCertificate
tags:
- Certificates
parameters:
- name: cert_id
in: path
description: Unique ID of the certificate to retrieve.
required: true
schema:
type: string
- name: include
in: query
description: A list of additional fields to include in the response. Currently
the only supported value is `content` to fetch the PEM content of
the certificate.
required: false
schema:
type: array
items:
type: string
enum:
- content
responses:
"200":
description: Certificate retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Certificate"
x-oaiMeta:
name: Get certificate
group: administration
returns: A single [Certificate](/docs/api-reference/certificates/object) object.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/certificates/cert_abc?include[]=content" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY"
response: >
{
"object": "certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"created_at": 1234567,
"certificate_details": {
"valid_at": 1234567,
"expires_at": 12345678,
"content": "-----BEGIN CERTIFICATE-----MIIDeT...-----END CERTIFICATE-----"
}
}
post:
summary: |
Modify a certificate. Note that only the name can be modified.
operationId: modifyCertificate
tags:
- Certificates
requestBody:
description: The certificate modification payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ModifyCertificateRequest"
responses:
"200":
description: Certificate modified successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Certificate"
x-oaiMeta:
name: Modify certificate
group: administration
returns: The updated [Certificate](/docs/api-reference/certificates/object)
object.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/organization/certificates/cert_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Renamed Certificate"
}'
response: |
{
"object": "certificate",
"id": "cert_abc",
"name": "Renamed Certificate",
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
}
delete:
summary: |
Delete a certificate from the organization.
The certificate must be inactive for the organization and all projects.
operationId: deleteCertificate
tags:
- Certificates
responses:
"200":
description: Certificate deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteCertificateResponse"
x-oaiMeta:
name: Delete certificate
group: administration
returns: A confirmation object indicating the certificate was deleted.
examples:
request:
curl: >
curl -X DELETE
https://api.openai.com/v1/organization/certificates/cert_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY"
response: |
{
"object": "certificate.deleted",
"id": "cert_abc"
}
/organization/costs:
get:
summary: Get costs details for the organization.
operationId: usage-costs
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently only `1d` is
supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1d
default: 1d
- name: project_ids
in: query
description: Return only costs for these projects.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the costs by the specified fields. Support fields include
`project_id`, `line_item` and any combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- line_item
- name: limit
in: query
description: >
A limit on the number of buckets to be returned. Limit can range
between 1 and 180, and the default is 7.
required: false
schema:
type: integer
default: 7
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Costs data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Costs
group: usage-costs
returns: A list of paginated, time bucketed
[Costs](/docs/api-reference/usage/costs_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/costs?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.costs.result",
"amount": {
"value": 0.06,
"currency": "usd"
},
"line_item": null,
"project_id": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/invites:
get:
summary: Returns a list of invites in the organization.
operationId: list-invites
tags:
- Invites
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
responses:
"200":
description: Invites listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/InviteListResponse"
x-oaiMeta:
name: List invites
group: administration
returns: A list of [Invite](/docs/api-reference/invite/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/invites?after=invite-abc&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.invite",
"id": "invite-abc",
"email": "user@example.com",
"role": "owner",
"status": "accepted",
"invited_at": 1711471533,
"expires_at": 1711471533,
"accepted_at": 1711471533
}
],
"first_id": "invite-abc",
"last_id": "invite-abc",
"has_more": false
}
post:
summary: Create an invite for a user to the organization. The invite must be
accepted by the user before they have access to the organization.
operationId: inviteUser
tags:
- Invites
requestBody:
description: The invite request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InviteRequest"
responses:
"200":
description: User invited successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Invite"
x-oaiMeta:
name: Create invite
group: administration
returns: The created [Invite](/docs/api-reference/invite/object) object.
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/organization/invites \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "anotheruser@example.com",
"role": "reader",
"projects": [
{
"id": "project-xyz",
"role": "member"
},
{
"id": "project-abc",
"role": "owner"
}
]
}'
response: |
{
"object": "organization.invite",
"id": "invite-def",
"email": "anotheruser@example.com",
"role": "reader",
"status": "pending",
"invited_at": 1711471533,
"expires_at": 1711471533,
"accepted_at": null,
"projects": [
{
"id": "project-xyz",
"role": "member"
},
{
"id": "project-abc",
"role": "owner"
}
]
}
/organization/invites/{invite_id}:
get:
summary: Retrieves an invite.
operationId: retrieve-invite
tags:
- Invites
parameters:
- in: path
name: invite_id
required: true
schema:
type: string
description: The ID of the invite to retrieve.
responses:
"200":
description: Invite retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Invite"
x-oaiMeta:
name: Retrieve invite
group: administration
returns: The [Invite](/docs/api-reference/invite/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/invites/invite-abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.invite",
"id": "invite-abc",
"email": "user@example.com",
"role": "owner",
"status": "accepted",
"invited_at": 1711471533,
"expires_at": 1711471533,
"accepted_at": 1711471533
}
delete:
summary: Delete an invite. If the invite has already been accepted, it cannot be
deleted.
operationId: delete-invite
tags:
- Invites
parameters:
- in: path
name: invite_id
required: true
schema:
type: string
description: The ID of the invite to delete.
responses:
"200":
description: Invite deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/InviteDeleteResponse"
x-oaiMeta:
name: Delete invite
group: administration
returns: Confirmation that the invite has been deleted
examples:
request:
curl: >
curl -X DELETE
https://api.openai.com/v1/organization/invites/invite-abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.invite.deleted",
"id": "invite-abc",
"deleted": true
}
/organization/projects:
get:
summary: Returns a list of projects.
operationId: list-projects
tags:
- Projects
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
- name: include_archived
in: query
schema:
type: boolean
default: false
description: If `true` returns all projects including those that have been
`archived`. Archived projects are not included by default.
responses:
"200":
description: Projects listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectListResponse"
x-oaiMeta:
name: List projects
group: administration
returns: A list of [Project](/docs/api-reference/projects/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects?after=proj_abc&limit=20&include_archived=false \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"id": "proj_abc",
"object": "organization.project",
"name": "Project example",
"created_at": 1711471533,
"archived_at": null,
"status": "active"
}
],
"first_id": "proj-abc",
"last_id": "proj-xyz",
"has_more": false
}
post:
summary: Create a new project in the organization. Projects can be created and
archived, but cannot be deleted.
operationId: create-project
tags:
- Projects
requestBody:
description: The project create request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectCreateRequest"
responses:
"200":
description: Project created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Project"
x-oaiMeta:
name: Create project
group: administration
returns: The created [Project](/docs/api-reference/projects/object) object.
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/organization/projects \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Project ABC"
}'
response: |
{
"id": "proj_abc",
"object": "organization.project",
"name": "Project ABC",
"created_at": 1711471533,
"archived_at": null,
"status": "active"
}
/organization/projects/{project_id}:
get:
summary: Retrieves a project.
operationId: retrieve-project
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
responses:
"200":
description: Project retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Project"
x-oaiMeta:
name: Retrieve project
group: administration
description: Retrieve a project.
returns: The [Project](/docs/api-reference/projects/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"id": "proj_abc",
"object": "organization.project",
"name": "Project example",
"created_at": 1711471533,
"archived_at": null,
"status": "active"
}
post:
summary: Modifies a project in the organization.
operationId: modify-project
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
requestBody:
description: The project update request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUpdateRequest"
responses:
"200":
description: Project updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Project"
"400":
description: Error response when updating the default project.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Modify project
group: administration
returns: The updated [Project](/docs/api-reference/projects/object) object.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/organization/projects/proj_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Project DEF"
}'
/organization/projects/{project_id}/api_keys:
get:
summary: Returns a list of API keys in the project.
operationId: list-project-api-keys
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
responses:
"200":
description: Project API keys listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectApiKeyListResponse"
x-oaiMeta:
name: List project API keys
group: administration
returns: A list of [ProjectApiKey](/docs/api-reference/project-api-keys/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/api_keys?after=key_abc&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.project.api_key",
"redacted_value": "sk-abc...def",
"name": "My API Key",
"created_at": 1711471533,
"last_used_at": 1711471534,
"id": "key_abc",
"owner": {
"type": "user",
"user": {
"object": "organization.project.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
}
}
],
"first_id": "key_abc",
"last_id": "key_xyz",
"has_more": false
}
/organization/projects/{project_id}/api_keys/{key_id}:
get:
summary: Retrieves an API key in the project.
operationId: retrieve-project-api-key
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: key_id
in: path
description: The ID of the API key.
required: true
schema:
type: string
responses:
"200":
description: Project API key retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectApiKey"
x-oaiMeta:
name: Retrieve project API key
group: administration
returns: The [ProjectApiKey](/docs/api-reference/project-api-keys/object) object
matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/api_keys/key_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.api_key",
"redacted_value": "sk-abc...def",
"name": "My API Key",
"created_at": 1711471533,
"last_used_at": 1711471534,
"id": "key_abc",
"owner": {
"type": "user",
"user": {
"object": "organization.project.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
}
}
delete:
summary: Deletes an API key from the project.
operationId: delete-project-api-key
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: key_id
in: path
description: The ID of the API key.
required: true
schema:
type: string
responses:
"200":
description: Project API key deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectApiKeyDeleteResponse"
"400":
description: Error response for various conditions.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Delete project API key
group: administration
returns: Confirmation of the key's deletion or an error if the key belonged to a
service account
examples:
request:
curl: |
curl -X DELETE https://api.openai.com/v1/organization/projects/proj_abc/api_keys/key_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.api_key.deleted",
"id": "key_abc",
"deleted": true
}
/organization/projects/{project_id}/archive:
post:
summary: Archives a project in the organization. Archived projects cannot be
used or updated.
operationId: archive-project
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
responses:
"200":
description: Project archived successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/Project"
x-oaiMeta:
name: Archive project
group: administration
returns: The archived [Project](/docs/api-reference/projects/object) object.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/organization/projects/proj_abc/archive \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"id": "proj_abc",
"object": "organization.project",
"name": "Project DEF",
"created_at": 1711471533,
"archived_at": 1711471533,
"status": "archived"
}
/organization/projects/{project_id}/certificates:
get:
summary: List certificates for this project.
operationId: listProjectCertificates
tags:
- Certificates
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
responses:
"200":
description: Certificates listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: List project certificates
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/certificates \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY"
response: |
{
"object": "list",
"data": [
{
"object": "organization.project.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
"first_id": "cert_abc",
"last_id": "cert_abc",
"has_more": false
}
/organization/projects/{project_id}/certificates/activate:
post:
summary: >
Activate certificates at the project level.
You can atomically and idempotently activate up to 10 certificates at a
time.
operationId: activateProjectCertificates
tags:
- Certificates
requestBody:
description: The certificate activation payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ToggleCertificatesRequest"
responses:
"200":
description: Certificates activated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: Activate certificates for project
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects that were activated.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/certificates/activate \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": ["cert_abc", "cert_def"]
}'
response: |
{
"object": "organization.project.certificate.activation",
"data": [
{
"object": "organization.project.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
{
"object": "organization.project.certificate",
"id": "cert_def",
"name": "My Example Certificate 2",
"active": true,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
}
/organization/projects/{project_id}/certificates/deactivate:
post:
summary: >
Deactivate certificates at the project level.
You can atomically and idempotently deactivate up to 10 certificates at
a time.
operationId: deactivateProjectCertificates
tags:
- Certificates
requestBody:
description: The certificate deactivation payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ToggleCertificatesRequest"
responses:
"200":
description: Certificates deactivated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ListCertificatesResponse"
x-oaiMeta:
name: Deactivate certificates for project
group: administration
returns: A list of [Certificate](/docs/api-reference/certificates/object)
objects that were deactivated.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/certificates/deactivate \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": ["cert_abc", "cert_def"]
}'
response: |
{
"object": "organization.project.certificate.deactivation",
"data": [
{
"object": "organization.project.certificate",
"id": "cert_abc",
"name": "My Example Certificate",
"active": false,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
{
"object": "organization.project.certificate",
"id": "cert_def",
"name": "My Example Certificate 2",
"active": false,
"created_at": 1234567,
"certificate_details": {
"valid_at": 12345667,
"expires_at": 12345678
}
},
],
}
/organization/projects/{project_id}/rate_limits:
get:
summary: Returns the rate limits per model for a project.
operationId: list-project-rate-limits
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: limit
in: query
description: |
A limit on the number of objects to be returned. The default is 100.
required: false
schema:
type: integer
default: 100
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, beginning with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
required: false
schema:
type: string
responses:
"200":
description: Project rate limits listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectRateLimitListResponse"
x-oaiMeta:
name: List project rate limits
group: administration
returns: A list of
[ProjectRateLimit](/docs/api-reference/project-rate-limits/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/rate_limits?after=rl_xxx&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "project.rate_limit",
"id": "rl-ada",
"model": "ada",
"max_requests_per_1_minute": 600,
"max_tokens_per_1_minute": 150000,
"max_images_per_1_minute": 10
}
],
"first_id": "rl-ada",
"last_id": "rl-ada",
"has_more": false
}
error_response: |
{
"code": 404,
"message": "The project {project_id} was not found"
}
/organization/projects/{project_id}/rate_limits/{rate_limit_id}:
post:
summary: Updates a project rate limit.
operationId: update-project-rate-limits
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: rate_limit_id
in: path
description: The ID of the rate limit.
required: true
schema:
type: string
requestBody:
description: The project rate limit update request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectRateLimitUpdateRequest"
responses:
"200":
description: Project rate limit updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectRateLimit"
"400":
description: Error response for various conditions.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Modify project rate limit
group: administration
returns: The updated
[ProjectRateLimit](/docs/api-reference/project-rate-limits/object)
object.
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/organization/projects/proj_abc/rate_limits/rl_xxx \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_requests_per_1_minute": 500
}'
response: |
{
"object": "project.rate_limit",
"id": "rl-ada",
"model": "ada",
"max_requests_per_1_minute": 600,
"max_tokens_per_1_minute": 150000,
"max_images_per_1_minute": 10
}
error_response: |
{
"code": 404,
"message": "The project {project_id} was not found"
}
/organization/projects/{project_id}/service_accounts:
get:
summary: Returns a list of service accounts in the project.
operationId: list-project-service-accounts
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
responses:
"200":
description: Project service accounts listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectServiceAccountListResponse"
"400":
description: Error response when project is archived.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: List project service accounts
group: administration
returns: A list of
[ProjectServiceAccount](/docs/api-reference/project-service-accounts/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/service_accounts?after=custom_id&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.project.service_account",
"id": "svc_acct_abc",
"name": "Service Account",
"role": "owner",
"created_at": 1711471533
}
],
"first_id": "svc_acct_abc",
"last_id": "svc_acct_xyz",
"has_more": false
}
post:
summary: Creates a new service account in the project. This also returns an
unredacted API key for the service account.
operationId: create-project-service-account
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
requestBody:
description: The project service account create request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectServiceAccountCreateRequest"
responses:
"200":
description: Project service account created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectServiceAccountCreateResponse"
"400":
description: Error response when project is archived.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Create project service account
group: administration
returns: The created
[ProjectServiceAccount](/docs/api-reference/project-service-accounts/object)
object.
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/organization/projects/proj_abc/service_accounts \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Production App"
}'
response: |
{
"object": "organization.project.service_account",
"id": "svc_acct_abc",
"name": "Production App",
"role": "member",
"created_at": 1711471533,
"api_key": {
"object": "organization.project.service_account.api_key",
"value": "sk-abcdefghijklmnop123",
"name": "Secret Key",
"created_at": 1711471533,
"id": "key_abc"
}
}
/organization/projects/{project_id}/service_accounts/{service_account_id}:
get:
summary: Retrieves a service account in the project.
operationId: retrieve-project-service-account
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: service_account_id
in: path
description: The ID of the service account.
required: true
schema:
type: string
responses:
"200":
description: Project service account retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectServiceAccount"
x-oaiMeta:
name: Retrieve project service account
group: administration
returns: The
[ProjectServiceAccount](/docs/api-reference/project-service-accounts/object)
object matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/service_accounts/svc_acct_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.service_account",
"id": "svc_acct_abc",
"name": "Service Account",
"role": "owner",
"created_at": 1711471533
}
delete:
summary: Deletes a service account from the project.
operationId: delete-project-service-account
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: service_account_id
in: path
description: The ID of the service account.
required: true
schema:
type: string
responses:
"200":
description: Project service account deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectServiceAccountDeleteResponse"
x-oaiMeta:
name: Delete project service account
group: administration
returns: Confirmation of service account being deleted, or an error in case of
an archived project, which has no service accounts
examples:
request:
curl: |
curl -X DELETE https://api.openai.com/v1/organization/projects/proj_abc/service_accounts/svc_acct_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.service_account.deleted",
"id": "svc_acct_abc",
"deleted": true
}
/organization/projects/{project_id}/users:
get:
summary: Returns a list of users in the project.
operationId: list-project-users
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
responses:
"200":
description: Project users listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUserListResponse"
"400":
description: Error response when project is archived.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: List project users
group: administration
returns: A list of [ProjectUser](/docs/api-reference/project-users/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/users?after=user_abc&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.project.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
],
"first_id": "user-abc",
"last_id": "user-xyz",
"has_more": false
}
post:
summary: Adds a user to the project. Users must already be members of the
organization to be added to a project.
operationId: create-project-user
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
tags:
- Projects
requestBody:
description: The project user create request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUserCreateRequest"
responses:
"200":
description: User added to project successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUser"
"400":
description: Error response for various conditions.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Create project user
group: administration
returns: The created [ProjectUser](/docs/api-reference/project-users/object)
object.
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/organization/projects/proj_abc/users \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "user_abc",
"role": "member"
}'
response: |
{
"object": "organization.project.user",
"id": "user_abc",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
/organization/projects/{project_id}/users/{user_id}:
get:
summary: Retrieves a user in the project.
operationId: retrieve-project-user
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
responses:
"200":
description: Project user retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUser"
x-oaiMeta:
name: Retrieve project user
group: administration
returns: The [ProjectUser](/docs/api-reference/project-users/object) object
matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/projects/proj_abc/users/user_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
post:
summary: Modifies a user's role in the project.
operationId: modify-project-user
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
requestBody:
description: The project user update request payload.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUserUpdateRequest"
responses:
"200":
description: Project user's role updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUser"
"400":
description: Error response for various conditions.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Modify project user
group: administration
returns: The updated [ProjectUser](/docs/api-reference/project-users/object)
object.
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/organization/projects/proj_abc/users/user_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "owner"
}'
response: |
{
"object": "organization.project.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
delete:
summary: Deletes a user from the project.
operationId: delete-project-user
tags:
- Projects
parameters:
- name: project_id
in: path
description: The ID of the project.
required: true
schema:
type: string
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
responses:
"200":
description: Project user deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUserDeleteResponse"
"400":
description: Error response for various conditions.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
x-oaiMeta:
name: Delete project user
group: administration
returns: Confirmation that project has been deleted or an error in case of an
archived project, which has no users
examples:
request:
curl: |
curl -X DELETE https://api.openai.com/v1/organization/projects/proj_abc/users/user_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.project.user.deleted",
"id": "user_abc",
"deleted": true
}
/organization/usage/audio_speeches:
get:
summary: Get audio speeches usage details for the organization.
operationId: usage-audio-speeches
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Audio speeches
group: usage-audio-speeches
returns: A list of paginated, time bucketed [Audio speeches
usage](/docs/api-reference/usage/audio_speeches_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/audio_speeches?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.audio_speeches.result",
"characters": 45,
"num_model_requests": 1,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/audio_transcriptions:
get:
summary: Get audio transcriptions usage details for the organization.
operationId: usage-audio-transcriptions
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Audio transcriptions
group: usage-audio-transcriptions
returns: A list of paginated, time bucketed [Audio transcriptions
usage](/docs/api-reference/usage/audio_transcriptions_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/audio_transcriptions?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.audio_transcriptions.result",
"seconds": 20,
"num_model_requests": 1,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/code_interpreter_sessions:
get:
summary: Get code interpreter sessions usage details for the organization.
operationId: usage-code-interpreter-sessions
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Code interpreter sessions
group: usage-code-interpreter-sessions
returns: A list of paginated, time bucketed [Code interpreter sessions
usage](/docs/api-reference/usage/code_interpreter_sessions_object)
objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/code_interpreter_sessions?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.code_interpreter_sessions.result",
"num_sessions": 1,
"project_id": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/completions:
get:
summary: Get completions usage details for the organization.
operationId: usage-completions
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: batch
in: query
description: >
If `true`, return batch jobs only. If `false`, return non-batch jobs
only. By default, return both.
required: false
schema:
type: boolean
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model`, `batch` or
any combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- batch
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Completions
group: usage-completions
returns: A list of paginated, time bucketed [Completions
usage](/docs/api-reference/usage/completions_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/completions?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.completions.result",
"input_tokens": 1000,
"output_tokens": 500,
"input_cached_tokens": 800,
"input_audio_tokens": 0,
"output_audio_tokens": 0,
"num_model_requests": 5,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null,
"batch": null
}
]
}
],
"has_more": true,
"next_page": "page_AAAAAGdGxdEiJdKOAAAAAGcqsYA="
}
/organization/usage/embeddings:
get:
summary: Get embeddings usage details for the organization.
operationId: usage-embeddings
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Embeddings
group: usage-embeddings
returns: A list of paginated, time bucketed [Embeddings
usage](/docs/api-reference/usage/embeddings_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/embeddings?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.embeddings.result",
"input_tokens": 16,
"num_model_requests": 2,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/images:
get:
summary: Get images usage details for the organization.
operationId: usage-images
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: sources
in: query
description: Return only usages for these sources. Possible values are
`image.generation`, `image.edit`, `image.variation` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- image.generation
- image.edit
- image.variation
- name: sizes
in: query
description: Return only usages for these image sizes. Possible values are
`256x256`, `512x512`, `1024x1024`, `1792x1792`, `1024x1792` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- 256x256
- 512x512
- 1024x1024
- 1792x1792
- 1024x1792
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model`, `size`,
`source` or any combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- size
- source
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Images
group: usage-images
returns: A list of paginated, time bucketed [Images
usage](/docs/api-reference/usage/images_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/images?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.images.result",
"images": 2,
"num_model_requests": 2,
"size": null,
"source": null,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/moderations:
get:
summary: Get moderations usage details for the organization.
operationId: usage-moderations
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: user_ids
in: query
description: Return only usage for these users.
required: false
schema:
type: array
items:
type: string
- name: api_key_ids
in: query
description: Return only usage for these API keys.
required: false
schema:
type: array
items:
type: string
- name: models
in: query
description: Return only usage for these models.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`, `user_id`, `api_key_id`, `model` or any
combination of them.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- user_id
- api_key_id
- model
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Moderations
group: usage-moderations
returns: A list of paginated, time bucketed [Moderations
usage](/docs/api-reference/usage/moderations_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/moderations?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.moderations.result",
"input_tokens": 16,
"num_model_requests": 2,
"project_id": null,
"user_id": null,
"api_key_id": null,
"model": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/usage/vector_stores:
get:
summary: Get vector stores usage details for the organization.
operationId: usage-vector-stores
tags:
- Usage
parameters:
- name: start_time
in: query
description: Start time (Unix seconds) of the query time range, inclusive.
required: true
schema:
type: integer
- name: end_time
in: query
description: End time (Unix seconds) of the query time range, exclusive.
required: false
schema:
type: integer
- name: bucket_width
in: query
description: Width of each time bucket in response. Currently `1m`, `1h` and
`1d` are supported, default to `1d`.
required: false
schema:
type: string
enum:
- 1m
- 1h
- 1d
default: 1d
- name: project_ids
in: query
description: Return only usage for these projects.
required: false
schema:
type: array
items:
type: string
- name: group_by
in: query
description: Group the usage data by the specified fields. Support fields
include `project_id`.
required: false
schema:
type: array
items:
type: string
enum:
- project_id
- name: limit
in: query
description: |
Specifies the number of buckets to return.
- `bucket_width=1d`: default: 7, max: 31
- `bucket_width=1h`: default: 24, max: 168
- `bucket_width=1m`: default: 60, max: 1440
required: false
schema:
type: integer
- name: page
in: query
description: A cursor for use in pagination. Corresponding to the `next_page`
field from the previous response.
schema:
type: string
responses:
"200":
description: Usage data retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UsageResponse"
x-oaiMeta:
name: Vector stores
group: usage-vector-stores
returns: A list of paginated, time bucketed [Vector stores
usage](/docs/api-reference/usage/vector_stores_object) objects.
examples:
request:
curl: |
curl "https://api.openai.com/v1/organization/usage/vector_stores?start_time=1730419200&limit=1" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: >
{
"object": "page",
"data": [
{
"object": "bucket",
"start_time": 1730419200,
"end_time": 1730505600,
"results": [
{
"object": "organization.usage.vector_stores.result",
"usage_bytes": 1024,
"project_id": null
}
]
}
],
"has_more": false,
"next_page": null
}
/organization/users:
get:
summary: Lists all of the users in the organization.
operationId: list-users
tags:
- Users
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
required: false
schema:
type: string
- name: emails
in: query
description: Filter by the email address of users.
required: false
schema:
type: array
items:
type: string
responses:
"200":
description: Users listed successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UserListResponse"
x-oaiMeta:
name: List users
group: administration
returns: A list of [User](/docs/api-reference/users/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/users?after=user_abc&limit=20 \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "list",
"data": [
{
"object": "organization.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
],
"first_id": "user-abc",
"last_id": "user-xyz",
"has_more": false
}
/organization/users/{user_id}:
get:
summary: Retrieves a user by their identifier.
operationId: retrieve-user
tags:
- Users
parameters:
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
responses:
"200":
description: User retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/User"
x-oaiMeta:
name: Retrieve user
group: administration
returns: The [User](/docs/api-reference/users/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/organization/users/user_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
post:
summary: Modifies a user's role in the organization.
operationId: modify-user
tags:
- Users
parameters:
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
requestBody:
description: The new user role to modify. This must be one of `owner` or `member`.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UserRoleUpdateRequest"
responses:
"200":
description: User role updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/User"
x-oaiMeta:
name: Modify user
group: administration
returns: The updated [User](/docs/api-reference/users/object) object.
examples:
request:
curl: >
curl -X POST https://api.openai.com/v1/organization/users/user_abc
\
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "owner"
}'
response: |
{
"object": "organization.user",
"id": "user_abc",
"name": "First Last",
"email": "user@example.com",
"role": "owner",
"added_at": 1711471533
}
delete:
summary: Deletes a user from the organization.
operationId: delete-user
tags:
- Users
parameters:
- name: user_id
in: path
description: The ID of the user.
required: true
schema:
type: string
responses:
"200":
description: User deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/UserDeleteResponse"
x-oaiMeta:
name: Delete user
group: administration
returns: Confirmation of the deleted user
examples:
request:
curl: >
curl -X DELETE
https://api.openai.com/v1/organization/users/user_abc \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
response: |
{
"object": "organization.user.deleted",
"id": "user_abc",
"deleted": true
}
/realtime/sessions:
post:
summary: >
Create an ephemeral API token for use in client-side applications with
the
Realtime API. Can be configured with the same session parameters as the
`session.update` client event.
It responds with a session object, plus a `client_secret` key which
contains
a usable ephemeral API token that can be used to authenticate browser
clients
for the Realtime API.
operationId: create-realtime-session
tags:
- Realtime
requestBody:
description: Create an ephemeral API key with the given session configuration.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/RealtimeSessionCreateRequest"
responses:
"200":
description: Session created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/RealtimeSessionCreateResponse"
x-oaiMeta:
name: Create session
group: realtime
returns: The created Realtime session object, plus an ephemeral key
examples:
request:
curl: |
curl -X POST https://api.openai.com/v1/realtime/sessions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-realtime-preview",
"modalities": ["audio", "text"],
"instructions": "You are a friendly assistant."
}'
response: |
{
"id": "sess_001",
"object": "realtime.session",
"model": "gpt-4o-realtime-preview",
"modalities": ["audio", "text"],
"instructions": "You are a friendly assistant.",
"voice": "alloy",
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
"input_audio_transcription": {
"model": "whisper-1"
},
"turn_detection": null,
"tools": [],
"tool_choice": "none",
"temperature": 0.7,
"max_response_output_tokens": 200,
"client_secret": {
"value": "ek_abc123",
"expires_at": 1234567890
}
}
/realtime/transcription_sessions:
post:
summary: >
Create an ephemeral API token for use in client-side applications with
the
Realtime API specifically for realtime transcriptions.
Can be configured with the same session parameters as the
`transcription_session.update` client event.
It responds with a session object, plus a `client_secret` key which
contains
a usable ephemeral API token that can be used to authenticate browser
clients
for the Realtime API.
operationId: create-realtime-transcription-session
tags:
- Realtime
requestBody:
description: Create an ephemeral API key with the given session configuration.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/RealtimeTranscriptionSessionCreateRequest"
responses:
"200":
description: Session created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/RealtimeTranscriptionSessionCreateResponse"
x-oaiMeta:
name: Create transcription session
group: realtime
returns: The created [Realtime transcription session
object](/docs/api-reference/realtime-sessions/transcription_session_object),
plus an ephemeral key
examples:
request:
curl: >
curl -X POST
https://api.openai.com/v1/realtime/transcription_sessions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
response: |
{
"id": "sess_BBwZc7cFV3XizEyKGDCGL",
"object": "realtime.transcription_session",
"modalities": ["audio", "text"],
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 200
},
"input_audio_format": "pcm16",
"input_audio_transcription": {
"model": "gpt-4o-transcribe",
"language": null,
"prompt": ""
},
"client_secret": null
}
/responses:
post:
operationId: createResponse
tags:
- Responses
summary: >
Creates a model response. Provide [text](/docs/guides/text) or
[image](/docs/guides/images) inputs to generate
[text](/docs/guides/text)
or [JSON](/docs/guides/structured-outputs) outputs. Have the model call
your own [custom code](/docs/guides/function-calling) or use built-in
[tools](/docs/guides/tools) like [web
search](/docs/guides/tools-web-search)
or [file search](/docs/guides/tools-file-search) to use your own data
as input for the model's response.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateResponse"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Response"
text/event-stream:
schema:
$ref: "#/components/schemas/ResponseStreamEvent"
x-oaiMeta:
name: Create a model response
group: responses
returns: |
Returns a [Response](/docs/api-reference/responses/object) object.
path: create
examples:
- title: Text input
request:
curl: >
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"input": "Tell me a three sentence bedtime story about a unicorn."
}'
javascript: >
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-4.1",
input: "Tell me a three sentence bedtime story about a unicorn."
});
console.log(response);
python: >
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
input="Tell me a three sentence bedtime story about a unicorn."
)
print(response)
csharp: >
using System;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
OpenAIResponse response = client.CreateResponse("Tell me a three
sentence bedtime story about a unicorn.");
Console.WriteLine(response.GetOutputText());
response: >
{
"id": "resp_67ccd2bed1ec8190b14f964abc0542670bb6a6b452d3795b",
"object": "response",
"created_at": 1741476542,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4.1-2025-04-14",
"output": [
{
"type": "message",
"id": "msg_67ccd2bf17f0819081ff3bb2cf6508e60bb6a6b452d3795b",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "In a peaceful grove beneath a silver moon, a unicorn named Lumina discovered a hidden pool that reflected the stars. As she dipped her horn into the water, the pool began to shimmer, revealing a pathway to a magical realm of endless night skies. Filled with wonder, Lumina whispered a wish for all who dream to find their own hidden magic, and as she glanced back, her hoofprints sparkled like stardust.",
"annotations": []
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 36,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 87,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 123
},
"user": null,
"metadata": {}
}
- title: Image input
request:
curl: >
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"input": [
{
"role": "user",
"content": [
{"type": "input_text", "text": "what is in this image?"},
{
"type": "input_image",
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
}
]
}
]
}'
javascript: >
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-4.1",
input: [
{
role: "user",
content: [
{ type: "input_text", text: "what is in this image?" },
{
type: "input_image",
image_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
},
],
},
],
});
console.log(response);
python: >
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
input=[
{
"role": "user",
"content": [
{ "type": "input_text", "text": "what is in this image?" },
{
"type": "input_image",
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
}
]
}
]
)
print(response)
csharp: >
using System;
using System.Collections.Generic;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
List<ResponseItem> inputItems =
[
ResponseItem.CreateUserMessageItem(
[
ResponseContentPart.CreateInputTextPart("What is in this image?"),
ResponseContentPart.CreateInputImagePart(new Uri("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"))
]
)
];
OpenAIResponse response = client.CreateResponse(inputItems);
Console.WriteLine(response.GetOutputText());
response: >
{
"id": "resp_67ccd3a9da748190baa7f1570fe91ac604becb25c45c1d41",
"object": "response",
"created_at": 1741476777,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4.1-2025-04-14",
"output": [
{
"type": "message",
"id": "msg_67ccd3acc8d48190a77525dc6de64b4104becb25c45c1d41",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The image depicts a scenic landscape with a wooden boardwalk or pathway leading through lush, green grass under a blue sky with some clouds. The setting suggests a peaceful natural area, possibly a park or nature reserve. There are trees and shrubs in the background.",
"annotations": []
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 328,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 52,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 380
},
"user": null,
"metadata": {}
}
- title: Web search
request:
curl: |
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [{ "type": "web_search_preview" }],
"input": "What was a positive news story from today?"
}'
javascript: |
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-4.1",
tools: [{ type: "web_search_preview" }],
input: "What was a positive news story from today?",
});
console.log(response);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
tools=[{ "type": "web_search_preview" }],
input="What was a positive news story from today?",
)
print(response)
csharp: >
using System;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
string userInputText = "What was a positive news story from
today?";
ResponseCreationOptions options = new()
{
Tools =
{
ResponseTool.CreateWebSearchTool()
},
};
OpenAIResponse response = client.CreateResponse(userInputText,
options);
Console.WriteLine(response.GetOutputText());
response: >
{
"id": "resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c",
"object": "response",
"created_at": 1741484430,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4.1-2025-04-14",
"output": [
{
"type": "web_search_call",
"id": "ws_67ccf18f64008190a39b619f4c8455ef087bb177ab789d5c",
"status": "completed"
},
{
"type": "message",
"id": "msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "As of today, March 9, 2025, one notable positive news story...",
"annotations": [
{
"type": "url_citation",
"start_index": 442,
"end_index": 557,
"url": "https://.../?utm_source=chatgpt.com",
"title": "..."
},
{
"type": "url_citation",
"start_index": 962,
"end_index": 1077,
"url": "https://.../?utm_source=chatgpt.com",
"title": "..."
},
{
"type": "url_citation",
"start_index": 1336,
"end_index": 1451,
"url": "https://.../?utm_source=chatgpt.com",
"title": "..."
}
]
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [
{
"type": "web_search_preview",
"domains": [],
"search_context_size": "medium",
"user_location": {
"type": "approximate",
"city": null,
"country": "US",
"region": null,
"timezone": null
}
}
],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 328,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 356,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 684
},
"user": null,
"metadata": {}
}
- title: File search
request:
curl: >
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [{
"type": "file_search",
"vector_store_ids": ["vs_1234567890"],
"max_num_results": 20
}],
"input": "What are the attributes of an ancient brown dragon?"
}'
javascript: >
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-4.1",
tools: [{
type: "file_search",
vector_store_ids: ["vs_1234567890"],
max_num_results: 20
}],
input: "What are the attributes of an ancient brown dragon?",
});
console.log(response);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
tools=[{
"type": "file_search",
"vector_store_ids": ["vs_1234567890"],
"max_num_results": 20
}],
input="What are the attributes of an ancient brown dragon?",
)
print(response)
csharp: >
using System;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
string userInputText = "What are the attributes of an ancient
brown dragon?";
ResponseCreationOptions options = new()
{
Tools =
{
ResponseTool.CreateFileSearchTool(
vectorStoreIds: ["vs_1234567890"],
maxResultCount: 20
)
},
};
OpenAIResponse response = client.CreateResponse(userInputText,
options);
Console.WriteLine(response.GetOutputText());
response: >
{
"id": "resp_67ccf4c55fc48190b71bd0463ad3306d09504fb6872380d7",
"object": "response",
"created_at": 1741485253,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4.1-2025-04-14",
"output": [
{
"type": "file_search_call",
"id": "fs_67ccf4c63cd08190887ef6464ba5681609504fb6872380d7",
"status": "completed",
"queries": [
"attributes of an ancient brown dragon"
],
"results": null
},
{
"type": "message",
"id": "msg_67ccf4c93e5c81909d595b369351a9d309504fb6872380d7",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The attributes of an ancient brown dragon include...",
"annotations": [
{
"type": "file_citation",
"index": 320,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 576,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 815,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 815,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 1030,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 1030,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 1156,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
},
{
"type": "file_citation",
"index": 1225,
"file_id": "file-4wDz5b167pAf72nx1h9eiN",
"filename": "dragons.pdf"
}
]
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [
{
"type": "file_search",
"filters": null,
"max_num_results": 20,
"ranking_options": {
"ranker": "auto",
"score_threshold": 0.0
},
"vector_store_ids": [
"vs_1234567890"
]
}
],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 18307,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 348,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 18655
},
"user": null,
"metadata": {}
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"instructions": "You are a helpful assistant.",
"input": "Hello!",
"stream": true
}'
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4.1",
instructions="You are a helpful assistant.",
input="Hello!",
stream=True
)
for event in response:
print(event)
javascript: |
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-4.1",
instructions: "You are a helpful assistant.",
input: "Hello!",
stream: true,
});
for await (const event of response) {
console.log(event);
}
csharp: >
using System;
using System.ClientModel;
using System.Threading.Tasks;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
string userInputText = "Hello!";
ResponseCreationOptions options = new()
{
Instructions = "You are a helpful assistant.",
};
AsyncCollectionResult<StreamingResponseUpdate> responseUpdates =
client.CreateResponseStreamingAsync(userInputText, options);
await foreach (StreamingResponseUpdate responseUpdate in
responseUpdates)
{
if (responseUpdate is StreamingResponseOutputTextDeltaUpdate outputTextDeltaUpdate)
{
Console.Write(outputTextDeltaUpdate.Delta);
}
}
response: |
event: response.created
data: {"type":"response.created","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"in_progress","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4.1-2025-04-14","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
event: response.in_progress
data: {"type":"response.in_progress","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"in_progress","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4.1-2025-04-14","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"in_progress","role":"assistant","content":[]}}
event: response.content_part.added
data: {"type":"response.content_part.added","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"part":{"type":"output_text","text":"","annotations":[]}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"delta":"Hi"}
...
event: response.output_text.done
data: {"type":"response.output_text.done","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"text":"Hi there! How can I assist you today?"}
event: response.content_part.done
data: {"type":"response.content_part.done","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"part":{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}}
event: response.output_item.done
data: {"type":"response.output_item.done","output_index":0,"item":{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}]}}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"completed","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4.1-2025-04-14","output":[{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}]}],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":37,"output_tokens":11,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":48},"user":null,"metadata":{}}}
- title: Functions
request:
curl: >
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"input": "What is the weather like in Boston today?",
"tools": [
{
"type": "function",
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location", "unit"]
}
}
],
"tool_choice": "auto"
}'
python: >
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location", "unit"],
}
}
]
response = client.responses.create(
model="gpt-4.1",
tools=tools,
input="What is the weather like in Boston today?",
tool_choice="auto"
)
print(response)
javascript: >
import OpenAI from "openai";
const openai = new OpenAI();
const tools = [
{
type: "function",
name: "get_current_weather",
description: "Get the current weather in a given location",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA",
},
unit: { type: "string", enum: ["celsius", "fahrenheit"] },
},
required: ["location", "unit"],
},
},
];
const response = await openai.responses.create({
model: "gpt-4.1",
tools: tools,
input: "What is the weather like in Boston today?",
tool_choice: "auto",
});
console.log(response);
csharp: >
using System;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "gpt-4.1",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
ResponseTool getCurrentWeatherFunctionTool =
ResponseTool.CreateFunctionTool(
functionName: "get_current_weather",
functionDescription: "Get the current weather in a given location",
functionParameters: BinaryData.FromString("""
{
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location", "unit"]
}
"""
)
);
string userInputText = "What is the weather like in Boston
today?";
ResponseCreationOptions options = new()
{
Tools =
{
getCurrentWeatherFunctionTool
},
ToolChoice = ResponseToolChoice.CreateAutoChoice(),
};
OpenAIResponse response = client.CreateResponse(userInputText,
options);
response: >
{
"id": "resp_67ca09c5efe0819096d0511c92b8c890096610f474011cc0",
"object": "response",
"created_at": 1741294021,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4.1-2025-04-14",
"output": [
{
"type": "function_call",
"id": "fc_67ca09c6bedc8190a7abfec07b1a1332096610f474011cc0",
"call_id": "call_unLAR8MvFNptuiZK6K6HCy5k",
"name": "get_current_weather",
"arguments": "{\"location\":\"Boston, MA\",\"unit\":\"celsius\"}",
"status": "completed"
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [
{
"type": "function",
"description": "Get the current weather in a given location",
"name": "get_current_weather",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location",
"unit"
]
},
"strict": true
}
],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 291,
"output_tokens": 23,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 314
},
"user": null,
"metadata": {}
}
- title: Reasoning
request:
curl: |
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "o3-mini",
"input": "How much wood would a woodchuck chuck?",
"reasoning": {
"effort": "high"
}
}'
javascript: |
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "o3-mini",
input: "How much wood would a woodchuck chuck?",
reasoning: {
effort: "high"
}
});
console.log(response);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="o3-mini",
input="How much wood would a woodchuck chuck?",
reasoning={
"effort": "high"
}
)
print(response)
csharp: >
using System;
using OpenAI.Responses;
OpenAIResponseClient client = new(
model: "o3-mini",
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
string userInputText = "How much wood would a woodchuck chuck?";
ResponseCreationOptions options = new()
{
ReasoningOptions = new()
{
ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
},
};
OpenAIResponse response = client.CreateResponse(userInputText,
options);
Console.WriteLine(response.GetOutputText());
response: >
{
"id": "resp_67ccd7eca01881908ff0b5146584e408072912b2993db808",
"object": "response",
"created_at": 1741477868,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "o1-2024-12-17",
"output": [
{
"type": "message",
"id": "msg_67ccd7f7b5848190a6f3e95d809f6b44072912b2993db808",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The classic tongue twister...",
"annotations": []
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": "high",
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 81,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 1035,
"output_tokens_details": {
"reasoning_tokens": 832
},
"total_tokens": 1116
},
"user": null,
"metadata": {}
}
/responses/{response_id}:
get:
operationId: getResponse
tags:
- Responses
summary: |
Retrieves a model response with the given ID.
parameters:
- in: path
name: response_id
required: true
schema:
type: string
example: resp_677efb5139a88190b512bc3fef8e535d
description: The ID of the response to retrieve.
- in: query
name: include
schema:
type: array
items:
$ref: "#/components/schemas/Includable"
description: |
Additional fields to include in the response. See the `include`
parameter for Response creation above for more information.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Response"
x-oaiMeta:
name: Get a model response
group: responses
returns: >
The [Response](/docs/api-reference/responses/object) object matching
the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/responses/resp_123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY"
javascript: |
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.retrieve("resp_123");
console.log(response);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.retrieve("resp_123")
print(response)
response: >
{
"id": "resp_67cb71b351908190a308f3859487620d06981a8637e6bc44",
"object": "response",
"created_at": 1741386163,
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"model": "gpt-4o-2024-08-06",
"output": [
{
"type": "message",
"id": "msg_67cb71b3c2b0819084d481baaaf148f206981a8637e6bc44",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Silent circuits hum, \nThoughts emerge in data streamsโ€” \nDigital dawn breaks.",
"annotations": []
}
]
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 32,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 18,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 50
},
"user": null,
"metadata": {}
}
delete:
operationId: deleteResponse
tags:
- Responses
summary: |
Deletes a model response with the given ID.
parameters:
- in: path
name: response_id
required: true
schema:
type: string
example: resp_677efb5139a88190b512bc3fef8e535d
description: The ID of the response to delete.
responses:
"200":
description: OK
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
x-oaiMeta:
name: Delete a model response
group: responses
returns: |
A success message.
examples:
request:
curl: |
curl -X DELETE https://api.openai.com/v1/responses/resp_123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY"
javascript: |
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.del("resp_123");
console.log(response);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.del("resp_123")
print(response)
response: |
{
"id": "resp_6786a1bec27481909a17d673315b29f6",
"object": "response",
"deleted": true
}
/responses/{response_id}/input_items:
get:
operationId: listInputItems
tags:
- Responses
summary: Returns a list of input items for a given response.
parameters:
- in: path
name: response_id
required: true
schema:
type: string
description: The ID of the response to retrieve input items for.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between
1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- in: query
name: order
schema:
type: string
enum:
- asc
- desc
description: |
The order to return the input items in. Default is `asc`.
- `asc`: Return the input items in ascending order.
- `desc`: Return the input items in descending order.
- in: query
name: after
schema:
type: string
description: |
An item ID to list items after, used in pagination.
- in: query
name: before
schema:
type: string
description: |
An item ID to list items before, used in pagination.
- in: query
name: include
schema:
type: array
items:
$ref: "#/components/schemas/Includable"
description: |
Additional fields to include in the response. See the `include`
parameter for Response creation above for more information.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ResponseItemList"
x-oaiMeta:
name: List input items
group: responses
returns: A list of input item objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/responses/resp_abc123/input_items \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY"
javascript: >
import OpenAI from "openai";
const client = new OpenAI();
const response = await
client.responses.inputItems.list("resp_123");
console.log(response.data);
python: |
from openai import OpenAI
client = OpenAI()
response = client.responses.input_items.list("resp_123")
print(response.data)
response: >
{
"object": "list",
"data": [
{
"id": "msg_abc123",
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": "Tell me a three sentence bedtime story about a unicorn."
}
]
}
],
"first_id": "msg_abc123",
"last_id": "msg_abc123",
"has_more": false
}
/threads:
post:
operationId: createThread
tags:
- Assistants
summary: Create a thread.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateThreadRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ThreadObject"
x-oaiMeta:
name: Create thread
group: threads
beta: true
returns: A [thread](/docs/api-reference/threads) object.
examples:
- title: Empty
request:
curl: |
curl https://api.openai.com/v1/threads \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d ''
python: |
from openai import OpenAI
client = OpenAI()
empty_thread = client.beta.threads.create()
print(empty_thread)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const emptyThread = await openai.beta.threads.create();
console.log(emptyThread);
}
main();
response: |
{
"id": "thread_abc123",
"object": "thread",
"created_at": 1699012949,
"metadata": {},
"tool_resources": {}
}
- title: Messages
request:
curl: |
curl https://api.openai.com/v1/threads \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"messages": [{
"role": "user",
"content": "Hello, what is AI?"
}, {
"role": "user",
"content": "How does AI work? Explain it in simple terms."
}]
}'
python: |
from openai import OpenAI
client = OpenAI()
message_thread = client.beta.threads.create(
messages=[
{
"role": "user",
"content": "Hello, what is AI?"
},
{
"role": "user",
"content": "How does AI work? Explain it in simple terms."
},
]
)
print(message_thread)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const messageThread = await openai.beta.threads.create({
messages: [
{
role: "user",
content: "Hello, what is AI?"
},
{
role: "user",
content: "How does AI work? Explain it in simple terms.",
},
],
});
console.log(messageThread);
}
main();
response: |
{
"id": "thread_abc123",
"object": "thread",
"created_at": 1699014083,
"metadata": {},
"tool_resources": {}
}
/threads/runs:
post:
operationId: createThreadAndRun
tags:
- Assistants
summary: Create a thread and run it in one request.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateThreadAndRunRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Create thread and run
group: threads
beta: true
returns: A [run](/docs/api-reference/runs/object) object.
examples:
- title: Default
request:
curl: >
curl https://api.openai.com/v1/threads/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_abc123",
"thread": {
"messages": [
{"role": "user", "content": "Explain deep learning to a 5 year old."}
]
}
}'
python: >
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.create_and_run(
assistant_id="asst_abc123",
thread={
"messages": [
{"role": "user", "content": "Explain deep learning to a 5 year old."}
]
}
)
print(run)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.createAndRun({
assistant_id: "asst_abc123",
thread: {
messages: [
{ role: "user", content: "Explain deep learning to a 5 year old." },
],
},
});
console.log(run);
}
main();
response: |
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699076792,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "queued",
"started_at": null,
"expires_at": 1699077392,
"cancelled_at": null,
"failed_at": null,
"completed_at": null,
"required_action": null,
"last_error": null,
"model": "gpt-4o",
"instructions": "You are a helpful assistant.",
"tools": [],
"tool_resources": {},
"metadata": {},
"temperature": 1.0,
"top_p": 1.0,
"max_completion_tokens": null,
"max_prompt_tokens": null,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"incomplete_details": null,
"usage": null,
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/threads/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_123",
"thread": {
"messages": [
{"role": "user", "content": "Hello"}
]
},
"stream": true
}'
python: |
from openai import OpenAI
client = OpenAI()
stream = client.beta.threads.create_and_run(
assistant_id="asst_123",
thread={
"messages": [
{"role": "user", "content": "Hello"}
]
},
stream=True
)
for event in stream:
print(event)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.beta.threads.createAndRun({
assistant_id: "asst_123",
thread: {
messages: [
{ role: "user", content: "Hello" },
],
},
stream: true
});
for await (const event of stream) {
console.log(event);
}
}
main();
response: |
event: thread.created
data: {"id":"thread_123","object":"thread","created_at":1710348075,"metadata":{}}
event: thread.run.created
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"tool_resources":{},"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}
event: thread.run.queued
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"tool_resources":{},"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}
event: thread.run.in_progress
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"in_progress","started_at":null,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"tool_resources":{},"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}
event: thread.run.step.created
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.run.step.in_progress
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.message.created
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[], "metadata":{}}
event: thread.message.in_progress
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[], "metadata":{}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"Hello","annotations":[]}}]}}
...
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" today"}}]}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"?"}}]}}
event: thread.message.completed
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"completed","incomplete_details":null,"incomplete_at":null,"completed_at":1710348077,"role":"assistant","content":[{"type":"text","text":{"value":"Hello! How can I assist you today?","annotations":[]}}], "metadata":{}}
event: thread.run.step.completed
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"completed","cancelled_at":null,"completed_at":1710348077,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31}}
event: thread.run.completed
{"id":"run_123","object":"thread.run","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","status":"completed","started_at":1713226836,"expires_at":null,"cancelled_at":null,"failed_at":null,"completed_at":1713226837,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":345,"completion_tokens":11,"total_tokens":356},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}
event: done
data: [DONE]
- title: Streaming with Functions
request:
curl: >
curl https://api.openai.com/v1/threads/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_abc123",
"thread": {
"messages": [
{"role": "user", "content": "What is the weather like in San Francisco?"}
]
},
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"stream": true
}'
python: >
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
]
stream = client.beta.threads.create_and_run(
thread={
"messages": [
{"role": "user", "content": "What is the weather like in San Francisco?"}
]
},
assistant_id="asst_abc123",
tools=tools,
stream=True
)
for event in stream:
print(event)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
const tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
];
async function main() {
const stream = await openai.beta.threads.createAndRun({
assistant_id: "asst_123",
thread: {
messages: [
{ role: "user", content: "What is the weather like in San Francisco?" },
],
},
tools: tools,
stream: true
});
for await (const event of stream) {
console.log(event);
}
}
main();
response: |
event: thread.created
data: {"id":"thread_123","object":"thread","created_at":1710351818,"metadata":{}}
event: thread.run.created
data: {"id":"run_123","object":"thread.run","created_at":1710351818,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710352418,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.queued
data: {"id":"run_123","object":"thread.run","created_at":1710351818,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710352418,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.in_progress
data: {"id":"run_123","object":"thread.run","created_at":1710351818,"assistant_id":"asst_123","thread_id":"thread_123","status":"in_progress","started_at":1710351818,"expires_at":1710352418,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.step.created
data: {"id":"step_001","object":"thread.run.step","created_at":1710351819,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"tool_calls","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710352418,"failed_at":null,"last_error":null,"step_details":{"type":"tool_calls","tool_calls":[]},"usage":null}
event: thread.run.step.in_progress
data: {"id":"step_001","object":"thread.run.step","created_at":1710351819,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"tool_calls","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710352418,"failed_at":null,"last_error":null,"step_details":{"type":"tool_calls","tool_calls":[]},"usage":null}
event: thread.run.step.delta
data: {"id":"step_001","object":"thread.run.step.delta","delta":{"step_details":{"type":"tool_calls","tool_calls":[{"index":0,"id":"call_XXNp8YGaFrjrSjgqxtC8JJ1B","type":"function","function":{"name":"get_current_weather","arguments":"","output":null}}]}}}
event: thread.run.step.delta
data: {"id":"step_001","object":"thread.run.step.delta","delta":{"step_details":{"type":"tool_calls","tool_calls":[{"index":0,"type":"function","function":{"arguments":"{\""}}]}}}
event: thread.run.step.delta
data: {"id":"step_001","object":"thread.run.step.delta","delta":{"step_details":{"type":"tool_calls","tool_calls":[{"index":0,"type":"function","function":{"arguments":"location"}}]}}}
...
event: thread.run.step.delta
data: {"id":"step_001","object":"thread.run.step.delta","delta":{"step_details":{"type":"tool_calls","tool_calls":[{"index":0,"type":"function","function":{"arguments":"ahrenheit"}}]}}}
event: thread.run.step.delta
data: {"id":"step_001","object":"thread.run.step.delta","delta":{"step_details":{"type":"tool_calls","tool_calls":[{"index":0,"type":"function","function":{"arguments":"\"}"}}]}}}
event: thread.run.requires_action
data: {"id":"run_123","object":"thread.run","created_at":1710351818,"assistant_id":"asst_123","thread_id":"thread_123","status":"requires_action","started_at":1710351818,"expires_at":1710352418,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":{"type":"submit_tool_outputs","submit_tool_outputs":{"tool_calls":[{"id":"call_XXNp8YGaFrjrSjgqxtC8JJ1B","type":"function","function":{"name":"get_current_weather","arguments":"{\"location\":\"San Francisco, CA\",\"unit\":\"fahrenheit\"}"}}]}},"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":345,"completion_tokens":11,"total_tokens":356},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: done
data: [DONE]
/threads/{thread_id}:
get:
operationId: getThread
tags:
- Assistants
summary: Retrieves a thread.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to retrieve.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ThreadObject"
x-oaiMeta:
name: Retrieve thread
group: threads
beta: true
returns: The [thread](/docs/api-reference/threads/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
my_thread = client.beta.threads.retrieve("thread_abc123")
print(my_thread)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myThread = await openai.beta.threads.retrieve(
"thread_abc123"
);
console.log(myThread);
}
main();
response: |
{
"id": "thread_abc123",
"object": "thread",
"created_at": 1699014083,
"metadata": {},
"tool_resources": {
"code_interpreter": {
"file_ids": []
}
}
}
post:
operationId: modifyThread
tags:
- Assistants
summary: Modifies a thread.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to modify. Only the `metadata` can be modified.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ModifyThreadRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ThreadObject"
x-oaiMeta:
name: Modify thread
group: threads
beta: true
returns: The modified [thread](/docs/api-reference/threads/object) object
matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"metadata": {
"modified": "true",
"user": "abc123"
}
}'
python: |
from openai import OpenAI
client = OpenAI()
my_updated_thread = client.beta.threads.update(
"thread_abc123",
metadata={
"modified": "true",
"user": "abc123"
}
)
print(my_updated_thread)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const updatedThread = await openai.beta.threads.update(
"thread_abc123",
{
metadata: { modified: "true", user: "abc123" },
}
);
console.log(updatedThread);
}
main();
response: |
{
"id": "thread_abc123",
"object": "thread",
"created_at": 1699014083,
"metadata": {
"modified": "true",
"user": "abc123"
},
"tool_resources": {}
}
delete:
operationId: deleteThread
tags:
- Assistants
summary: Delete a thread.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteThreadResponse"
x-oaiMeta:
name: Delete thread
group: threads
beta: true
returns: Deletion status
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-X DELETE
python: |
from openai import OpenAI
client = OpenAI()
response = client.beta.threads.delete("thread_abc123")
print(response)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const response = await openai.beta.threads.del("thread_abc123");
console.log(response);
}
main();
response: |
{
"id": "thread_abc123",
"object": "thread.deleted",
"deleted": true
}
/threads/{thread_id}/messages:
get:
operationId: listMessages
tags:
- Assistants
summary: Returns a list of messages for a given thread.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) the messages
belong to.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
- name: run_id
in: query
description: |
Filter messages by the run ID that generated them.
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListMessagesResponse"
x-oaiMeta:
name: List messages
group: threads
beta: true
returns: A list of [message](/docs/api-reference/messages) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: >
from openai import OpenAI
client = OpenAI()
thread_messages =
client.beta.threads.messages.list("thread_abc123")
print(thread_messages.data)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const threadMessages = await openai.beta.threads.messages.list(
"thread_abc123"
);
console.log(threadMessages.data);
}
main();
response: >
{
"object": "list",
"data": [
{
"id": "msg_abc123",
"object": "thread.message",
"created_at": 1699016383,
"assistant_id": null,
"thread_id": "thread_abc123",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "How does AI work? Explain it in simple terms.",
"annotations": []
}
}
],
"attachments": [],
"metadata": {}
},
{
"id": "msg_abc456",
"object": "thread.message",
"created_at": 1699016383,
"assistant_id": null,
"thread_id": "thread_abc123",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Hello, what is AI?",
"annotations": []
}
}
],
"attachments": [],
"metadata": {}
}
],
"first_id": "msg_abc123",
"last_id": "msg_abc456",
"has_more": false
}
post:
operationId: createMessage
tags:
- Assistants
summary: Create a message.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) to create a
message for.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateMessageRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MessageObject"
x-oaiMeta:
name: Create message
group: threads
beta: true
returns: A [message](/docs/api-reference/messages/object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"role": "user",
"content": "How does AI work? Explain it in simple terms."
}'
python: |
from openai import OpenAI
client = OpenAI()
thread_message = client.beta.threads.messages.create(
"thread_abc123",
role="user",
content="How does AI work? Explain it in simple terms.",
)
print(thread_message)
node.js: >-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const threadMessages = await openai.beta.threads.messages.create(
"thread_abc123",
{ role: "user", content: "How does AI work? Explain it in simple terms." }
);
console.log(threadMessages);
}
main();
response: |
{
"id": "msg_abc123",
"object": "thread.message",
"created_at": 1713226573,
"assistant_id": null,
"thread_id": "thread_abc123",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "How does AI work? Explain it in simple terms.",
"annotations": []
}
}
],
"attachments": [],
"metadata": {}
}
/threads/{thread_id}/messages/{message_id}:
get:
operationId: getMessage
tags:
- Assistants
summary: Retrieve a message.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) to which this
message belongs.
- in: path
name: message_id
required: true
schema:
type: string
description: The ID of the message to retrieve.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MessageObject"
x-oaiMeta:
name: Retrieve message
group: threads
beta: true
returns: The [message](/docs/api-reference/messages/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/messages/msg_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
message = client.beta.threads.messages.retrieve(
message_id="msg_abc123",
thread_id="thread_abc123",
)
print(message)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const message = await openai.beta.threads.messages.retrieve(
"thread_abc123",
"msg_abc123"
);
console.log(message);
}
main();
response: |
{
"id": "msg_abc123",
"object": "thread.message",
"created_at": 1699017614,
"assistant_id": null,
"thread_id": "thread_abc123",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "How does AI work? Explain it in simple terms.",
"annotations": []
}
}
],
"attachments": [],
"metadata": {}
}
post:
operationId: modifyMessage
tags:
- Assistants
summary: Modifies a message.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to which this message belongs.
- in: path
name: message_id
required: true
schema:
type: string
description: The ID of the message to modify.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ModifyMessageRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MessageObject"
x-oaiMeta:
name: Modify message
group: threads
beta: true
returns: The modified [message](/docs/api-reference/messages/object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/messages/msg_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"metadata": {
"modified": "true",
"user": "abc123"
}
}'
python: |
from openai import OpenAI
client = OpenAI()
message = client.beta.threads.messages.update(
message_id="msg_abc12",
thread_id="thread_abc123",
metadata={
"modified": "true",
"user": "abc123",
},
)
print(message)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const message = await openai.beta.threads.messages.update(
"thread_abc123",
"msg_abc123",
{
metadata: {
modified: "true",
user: "abc123",
},
}
}'
response: |
{
"id": "msg_abc123",
"object": "thread.message",
"created_at": 1699017614,
"assistant_id": null,
"thread_id": "thread_abc123",
"run_id": null,
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "How does AI work? Explain it in simple terms.",
"annotations": []
}
}
],
"file_ids": [],
"metadata": {
"modified": "true",
"user": "abc123"
}
}
delete:
operationId: deleteMessage
tags:
- Assistants
summary: Deletes a message.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to which this message belongs.
- in: path
name: message_id
required: true
schema:
type: string
description: The ID of the message to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteMessageResponse"
x-oaiMeta:
name: Delete message
group: threads
beta: true
returns: Deletion status
examples:
request:
curl: |
curl -X DELETE https://api.openai.com/v1/threads/thread_abc123/messages/msg_abc123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
deleted_message = client.beta.threads.messages.delete(
message_id="msg_abc12",
thread_id="thread_abc123",
)
print(deleted_message)
node.js: |-
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const deletedMessage = await openai.beta.threads.messages.del(
"thread_abc123",
"msg_abc123"
);
console.log(deletedMessage);
}
response: |
{
"id": "msg_abc123",
"object": "thread.message.deleted",
"deleted": true
}
/threads/{thread_id}/runs:
get:
operationId: listRuns
tags:
- Assistants
summary: Returns a list of runs belonging to a thread.
parameters:
- name: thread_id
in: path
required: true
schema:
type: string
description: The ID of the thread the run belongs to.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListRunsResponse"
x-oaiMeta:
name: List runs
group: threads
beta: true
returns: A list of [run](/docs/api-reference/runs/object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
runs = client.beta.threads.runs.list(
"thread_abc123"
)
print(runs)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const runs = await openai.beta.threads.runs.list(
"thread_abc123"
);
console.log(runs);
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699075072,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "completed",
"started_at": 1699075072,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1699075073,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"incomplete_details": null,
"tools": [
{
"type": "code_interpreter"
}
],
"tool_resources": {
"code_interpreter": {
"file_ids": [
"file-abc123",
"file-abc456"
]
}
},
"metadata": {},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
},
{
"id": "run_abc456",
"object": "thread.run",
"created_at": 1699063290,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "completed",
"started_at": 1699063290,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1699063291,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"incomplete_details": null,
"tools": [
{
"type": "code_interpreter"
}
],
"tool_resources": {
"code_interpreter": {
"file_ids": [
"file-abc123",
"file-abc456"
]
}
},
"metadata": {},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
],
"first_id": "run_abc123",
"last_id": "run_abc456",
"has_more": false
}
post:
operationId: createRun
tags:
- Assistants
summary: Create a run.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to run.
- name: include[]
in: query
description: |
A list of additional fields to include in the response. Currently the only supported value is `step_details.tool_calls[*].file_search.results[*].content` to fetch the file search result content.
See the [file search tool documentation](/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.
schema:
type: array
items:
type: string
enum:
- step_details.tool_calls[*].file_search.results[*].content
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRunRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Create run
group: threads
beta: true
returns: A [run](/docs/api-reference/runs/object) object.
examples:
- title: Default
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_abc123"
}'
python: |
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.create(
thread_id="thread_abc123",
assistant_id="asst_abc123"
)
print(run)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.runs.create(
"thread_abc123",
{ assistant_id: "asst_abc123" }
);
console.log(run);
}
main();
response: |
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699063290,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "queued",
"started_at": 1699063290,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1699063291,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"incomplete_details": null,
"tools": [
{
"type": "code_interpreter"
}
],
"metadata": {},
"usage": null,
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/threads/thread_123/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_123",
"stream": true
}'
python: |
from openai import OpenAI
client = OpenAI()
stream = client.beta.threads.runs.create(
thread_id="thread_123",
assistant_id="asst_123",
stream=True
)
for event in stream:
print(event)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.beta.threads.runs.create(
"thread_123",
{ assistant_id: "asst_123", stream: true }
);
for await (const event of stream) {
console.log(event);
}
}
main();
response: |
event: thread.run.created
data: {"id":"run_123","object":"thread.run","created_at":1710330640,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710331240,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.queued
data: {"id":"run_123","object":"thread.run","created_at":1710330640,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710331240,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.in_progress
data: {"id":"run_123","object":"thread.run","created_at":1710330640,"assistant_id":"asst_123","thread_id":"thread_123","status":"in_progress","started_at":1710330641,"expires_at":1710331240,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.step.created
data: {"id":"step_001","object":"thread.run.step","created_at":1710330641,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710331240,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.run.step.in_progress
data: {"id":"step_001","object":"thread.run.step","created_at":1710330641,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710331240,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.message.created
data: {"id":"msg_001","object":"thread.message","created_at":1710330641,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.in_progress
data: {"id":"msg_001","object":"thread.message","created_at":1710330641,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"Hello","annotations":[]}}]}}
...
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" today"}}]}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"?"}}]}}
event: thread.message.completed
data: {"id":"msg_001","object":"thread.message","created_at":1710330641,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"completed","incomplete_details":null,"incomplete_at":null,"completed_at":1710330642,"role":"assistant","content":[{"type":"text","text":{"value":"Hello! How can I assist you today?","annotations":[]}}],"metadata":{}}
event: thread.run.step.completed
data: {"id":"step_001","object":"thread.run.step","created_at":1710330641,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"completed","cancelled_at":null,"completed_at":1710330642,"expires_at":1710331240,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31}}
event: thread.run.completed
data: {"id":"run_123","object":"thread.run","created_at":1710330640,"assistant_id":"asst_123","thread_id":"thread_123","status":"completed","started_at":1710330641,"expires_at":null,"cancelled_at":null,"failed_at":null,"completed_at":1710330642,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: done
data: [DONE]
- title: Streaming with Functions
request:
curl: >
curl https://api.openai.com/v1/threads/thread_abc123/runs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"assistant_id": "asst_abc123",
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"stream": true
}'
python: >
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
]
stream = client.beta.threads.runs.create(
thread_id="thread_abc123",
assistant_id="asst_abc123",
tools=tools,
stream=True
)
for event in stream:
print(event)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
const tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
];
async function main() {
const stream = await openai.beta.threads.runs.create(
"thread_abc123",
{
assistant_id: "asst_abc123",
tools: tools,
stream: true
}
);
for await (const event of stream) {
console.log(event);
}
}
main();
response: |
event: thread.run.created
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.queued
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":null,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.in_progress
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"in_progress","started_at":1710348075,"expires_at":1710348675,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.step.created
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.run.step.in_progress
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":null}
event: thread.message.created
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.in_progress
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"Hello","annotations":[]}}]}}
...
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" today"}}]}}
event: thread.message.delta
data: {"id":"msg_001","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"?"}}]}}
event: thread.message.completed
data: {"id":"msg_001","object":"thread.message","created_at":1710348076,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"completed","incomplete_details":null,"incomplete_at":null,"completed_at":1710348077,"role":"assistant","content":[{"type":"text","text":{"value":"Hello! How can I assist you today?","annotations":[]}}],"metadata":{}}
event: thread.run.step.completed
data: {"id":"step_001","object":"thread.run.step","created_at":1710348076,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"completed","cancelled_at":null,"completed_at":1710348077,"expires_at":1710348675,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_001"}},"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31}}
event: thread.run.completed
data: {"id":"run_123","object":"thread.run","created_at":1710348075,"assistant_id":"asst_123","thread_id":"thread_123","status":"completed","started_at":1710348075,"expires_at":null,"cancelled_at":null,"failed_at":null,"completed_at":1710348077,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: done
data: [DONE]
/threads/{thread_id}/runs/{run_id}:
get:
operationId: getRun
tags:
- Assistants
summary: Retrieves a run.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) that was run.
- in: path
name: run_id
required: true
schema:
type: string
description: The ID of the run to retrieve.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Retrieve run
group: threads
beta: true
returns: The [run](/docs/api-reference/runs/object) object matching the
specified ID.
examples:
request:
curl: >
curl
https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.retrieve(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.runs.retrieve(
"thread_abc123",
"run_abc123"
);
console.log(run);
}
main();
response: |
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699075072,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "completed",
"started_at": 1699075072,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1699075073,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"incomplete_details": null,
"tools": [
{
"type": "code_interpreter"
}
],
"metadata": {},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
post:
operationId: modifyRun
tags:
- Assistants
summary: Modifies a run.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) that was run.
- in: path
name: run_id
required: true
schema:
type: string
description: The ID of the run to modify.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ModifyRunRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Modify run
group: threads
beta: true
returns: The modified [run](/docs/api-reference/runs/object) object matching the
specified ID.
examples:
request:
curl: >
curl
https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"metadata": {
"user_id": "user_abc123"
}
}'
python: |
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.update(
thread_id="thread_abc123",
run_id="run_abc123",
metadata={"user_id": "user_abc123"},
)
print(run)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.runs.update(
"thread_abc123",
"run_abc123",
{
metadata: {
user_id: "user_abc123",
},
}
);
console.log(run);
}
main();
response: |
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699075072,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "completed",
"started_at": 1699075072,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1699075073,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"incomplete_details": null,
"tools": [
{
"type": "code_interpreter"
}
],
"tool_resources": {
"code_interpreter": {
"file_ids": [
"file-abc123",
"file-abc456"
]
}
},
"metadata": {
"user_id": "user_abc123"
},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
/threads/{thread_id}/runs/{run_id}/cancel:
post:
operationId: cancelRun
tags:
- Assistants
summary: Cancels a run that is `in_progress`.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to which this run belongs.
- in: path
name: run_id
required: true
schema:
type: string
description: The ID of the run to cancel.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Cancel a run
group: threads
beta: true
returns: The modified [run](/docs/api-reference/runs/object) object matching the
specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123/cancel \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Beta: assistants=v2" \
-X POST
python: |
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.cancel(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.runs.cancel(
"thread_abc123",
"run_abc123"
);
console.log(run);
}
main();
response: |
{
"id": "run_abc123",
"object": "thread.run",
"created_at": 1699076126,
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "cancelling",
"started_at": 1699076126,
"expires_at": 1699076726,
"cancelled_at": null,
"failed_at": null,
"completed_at": null,
"last_error": null,
"model": "gpt-4o",
"instructions": "You summarize books.",
"tools": [
{
"type": "file_search"
}
],
"tool_resources": {
"file_search": {
"vector_store_ids": ["vs_123"]
}
},
"metadata": {},
"usage": null,
"temperature": 1.0,
"top_p": 1.0,
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
/threads/{thread_id}/runs/{run_id}/steps:
get:
operationId: listRunSteps
tags:
- Assistants
summary: Returns a list of run steps belonging to a run.
parameters:
- name: thread_id
in: path
required: true
schema:
type: string
description: The ID of the thread the run and run steps belong to.
- name: run_id
in: path
required: true
schema:
type: string
description: The ID of the run the run steps belong to.
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
- name: include[]
in: query
description: |
A list of additional fields to include in the response. Currently the only supported value is `step_details.tool_calls[*].file_search.results[*].content` to fetch the file search result content.
See the [file search tool documentation](/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.
schema:
type: array
items:
type: string
enum:
- step_details.tool_calls[*].file_search.results[*].content
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListRunStepsResponse"
x-oaiMeta:
name: List run steps
group: threads
beta: true
returns: A list of [run step](/docs/api-reference/run-steps/step-object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123/steps \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
run_steps = client.beta.threads.runs.steps.list(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run_steps)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const runStep = await openai.beta.threads.runs.steps.list(
"thread_abc123",
"run_abc123"
);
console.log(runStep);
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "step_abc123",
"object": "thread.run.step",
"created_at": 1699063291,
"run_id": "run_abc123",
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"type": "message_creation",
"status": "completed",
"cancelled_at": null,
"completed_at": 1699063291,
"expired_at": null,
"failed_at": null,
"last_error": null,
"step_details": {
"type": "message_creation",
"message_creation": {
"message_id": "msg_abc123"
}
},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
}
}
],
"first_id": "step_abc123",
"last_id": "step_abc456",
"has_more": false
}
/threads/{thread_id}/runs/{run_id}/steps/{step_id}:
get:
operationId: getRunStep
tags:
- Assistants
summary: Retrieves a run step.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the thread to which the run and run step belongs.
- in: path
name: run_id
required: true
schema:
type: string
description: The ID of the run to which the run step belongs.
- in: path
name: step_id
required: true
schema:
type: string
description: The ID of the run step to retrieve.
- name: include[]
in: query
description: |
A list of additional fields to include in the response. Currently the only supported value is `step_details.tool_calls[*].file_search.results[*].content` to fetch the file search result content.
See the [file search tool documentation](/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.
schema:
type: array
items:
type: string
enum:
- step_details.tool_calls[*].file_search.results[*].content
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunStepObject"
x-oaiMeta:
name: Retrieve run step
group: threads
beta: true
returns: The [run step](/docs/api-reference/run-steps/step-object) object
matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123/steps/step_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
run_step = client.beta.threads.runs.steps.retrieve(
thread_id="thread_abc123",
run_id="run_abc123",
step_id="step_abc123"
)
print(run_step)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const runStep = await openai.beta.threads.runs.steps.retrieve(
"thread_abc123",
"run_abc123",
"step_abc123"
);
console.log(runStep);
}
main();
response: |
{
"id": "step_abc123",
"object": "thread.run.step",
"created_at": 1699063291,
"run_id": "run_abc123",
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"type": "message_creation",
"status": "completed",
"cancelled_at": null,
"completed_at": 1699063291,
"expired_at": null,
"failed_at": null,
"last_error": null,
"step_details": {
"type": "message_creation",
"message_creation": {
"message_id": "msg_abc123"
}
},
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
}
}
/threads/{thread_id}/runs/{run_id}/submit_tool_outputs:
post:
operationId: submitToolOuputsToRun
tags:
- Assistants
summary: >
When a run has the `status: "requires_action"` and
`required_action.type` is `submit_tool_outputs`, this endpoint can be
used to submit the outputs from the tool calls once they're all
completed. All outputs must be submitted in a single request.
parameters:
- in: path
name: thread_id
required: true
schema:
type: string
description: The ID of the [thread](/docs/api-reference/threads) to which this
run belongs.
- in: path
name: run_id
required: true
schema:
type: string
description: The ID of the run that requires the tool output submission.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SubmitToolOutputsRunRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RunObject"
x-oaiMeta:
name: Submit tool outputs to run
group: threads
beta: true
returns: The modified [run](/docs/api-reference/runs/object) object matching the
specified ID.
examples:
- title: Default
request:
curl: |
curl https://api.openai.com/v1/threads/thread_123/runs/run_123/submit_tool_outputs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"tool_outputs": [
{
"tool_call_id": "call_001",
"output": "70 degrees and sunny."
}
]
}'
python: |
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.submit_tool_outputs(
thread_id="thread_123",
run_id="run_123",
tool_outputs=[
{
"tool_call_id": "call_001",
"output": "70 degrees and sunny."
}
]
)
print(run)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const run = await openai.beta.threads.runs.submitToolOutputs(
"thread_123",
"run_123",
{
tool_outputs: [
{
tool_call_id: "call_001",
output: "70 degrees and sunny.",
},
],
}
);
console.log(run);
}
main();
response: >
{
"id": "run_123",
"object": "thread.run",
"created_at": 1699075592,
"assistant_id": "asst_123",
"thread_id": "thread_123",
"status": "queued",
"started_at": 1699075592,
"expires_at": 1699076192,
"cancelled_at": null,
"failed_at": null,
"completed_at": null,
"last_error": null,
"model": "gpt-4o",
"instructions": null,
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"metadata": {},
"usage": null,
"temperature": 1.0,
"top_p": 1.0,
"max_prompt_tokens": 1000,
"max_completion_tokens": 1000,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
- title: Streaming
request:
curl: |
curl https://api.openai.com/v1/threads/thread_123/runs/run_123/submit_tool_outputs \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"tool_outputs": [
{
"tool_call_id": "call_001",
"output": "70 degrees and sunny."
}
],
"stream": true
}'
python: |
from openai import OpenAI
client = OpenAI()
stream = client.beta.threads.runs.submit_tool_outputs(
thread_id="thread_123",
run_id="run_123",
tool_outputs=[
{
"tool_call_id": "call_001",
"output": "70 degrees and sunny."
}
],
stream=True
)
for event in stream:
print(event)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.beta.threads.runs.submitToolOutputs(
"thread_123",
"run_123",
{
tool_outputs: [
{
tool_call_id: "call_001",
output: "70 degrees and sunny.",
},
],
}
);
for await (const event of stream) {
console.log(event);
}
}
main();
response: |
event: thread.run.step.completed
data: {"id":"step_001","object":"thread.run.step","created_at":1710352449,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"tool_calls","status":"completed","cancelled_at":null,"completed_at":1710352475,"expires_at":1710353047,"failed_at":null,"last_error":null,"step_details":{"type":"tool_calls","tool_calls":[{"id":"call_iWr0kQ2EaYMaxNdl0v3KYkx7","type":"function","function":{"name":"get_current_weather","arguments":"{\"location\":\"San Francisco, CA\",\"unit\":\"fahrenheit\"}","output":"70 degrees and sunny."}}]},"usage":{"prompt_tokens":291,"completion_tokens":24,"total_tokens":315}}
event: thread.run.queued
data: {"id":"run_123","object":"thread.run","created_at":1710352447,"assistant_id":"asst_123","thread_id":"thread_123","status":"queued","started_at":1710352448,"expires_at":1710353047,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.in_progress
data: {"id":"run_123","object":"thread.run","created_at":1710352447,"assistant_id":"asst_123","thread_id":"thread_123","status":"in_progress","started_at":1710352475,"expires_at":1710353047,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: thread.run.step.created
data: {"id":"step_002","object":"thread.run.step","created_at":1710352476,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710353047,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_002"}},"usage":null}
event: thread.run.step.in_progress
data: {"id":"step_002","object":"thread.run.step","created_at":1710352476,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1710353047,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_002"}},"usage":null}
event: thread.message.created
data: {"id":"msg_002","object":"thread.message","created_at":1710352476,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.in_progress
data: {"id":"msg_002","object":"thread.message","created_at":1710352476,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"metadata":{}}
event: thread.message.delta
data: {"id":"msg_002","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"The","annotations":[]}}]}}
event: thread.message.delta
data: {"id":"msg_002","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" current"}}]}}
event: thread.message.delta
data: {"id":"msg_002","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" weather"}}]}}
...
event: thread.message.delta
data: {"id":"msg_002","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" sunny"}}]}}
event: thread.message.delta
data: {"id":"msg_002","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"."}}]}}
event: thread.message.completed
data: {"id":"msg_002","object":"thread.message","created_at":1710352476,"assistant_id":"asst_123","thread_id":"thread_123","run_id":"run_123","status":"completed","incomplete_details":null,"incomplete_at":null,"completed_at":1710352477,"role":"assistant","content":[{"type":"text","text":{"value":"The current weather in San Francisco, CA is 70 degrees Fahrenheit and sunny.","annotations":[]}}],"metadata":{}}
event: thread.run.step.completed
data: {"id":"step_002","object":"thread.run.step","created_at":1710352476,"run_id":"run_123","assistant_id":"asst_123","thread_id":"thread_123","type":"message_creation","status":"completed","cancelled_at":null,"completed_at":1710352477,"expires_at":1710353047,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_002"}},"usage":{"prompt_tokens":329,"completion_tokens":18,"total_tokens":347}}
event: thread.run.completed
data: {"id":"run_123","object":"thread.run","created_at":1710352447,"assistant_id":"asst_123","thread_id":"thread_123","status":"completed","started_at":1710352475,"expires_at":null,"cancelled_at":null,"failed_at":null,"completed_at":1710352477,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":null,"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"metadata":{},"temperature":1.0,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":20,"completion_tokens":11,"total_tokens":31},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true}}
event: done
data: [DONE]
/uploads:
post:
operationId: createUpload
tags:
- Uploads
summary: >
Creates an intermediate [Upload](/docs/api-reference/uploads/object)
object
that you can add [Parts](/docs/api-reference/uploads/part-object) to.
Currently, an Upload can accept at most 8 GB in total and expires after
an
hour after you create it.
Once you complete the Upload, we will create a
[File](/docs/api-reference/files/object) object that contains all the
parts
you uploaded. This File is usable in the rest of our platform as a
regular
File object.
For certain `purpose` values, the correct `mime_type` must be
specified.
Please refer to documentation for the
[supported MIME types for your use
case](/docs/assistants/tools/file-search#supported-files).
For guidance on the proper filename extensions for each purpose, please
follow the documentation on [creating a
File](/docs/api-reference/files/create).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateUploadRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Upload"
x-oaiMeta:
name: Create upload
group: uploads
returns: The [Upload](/docs/api-reference/uploads/object) object with status
`pending`.
examples:
request:
curl: |
curl https://api.openai.com/v1/uploads \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"purpose": "fine-tune",
"filename": "training_examples.jsonl",
"bytes": 2147483648,
"mime_type": "text/jsonl"
}'
response: |
{
"id": "upload_abc123",
"object": "upload",
"bytes": 2147483648,
"created_at": 1719184911,
"filename": "training_examples.jsonl",
"purpose": "fine-tune",
"status": "pending",
"expires_at": 1719127296
}
/uploads/{upload_id}/cancel:
post:
operationId: cancelUpload
tags:
- Uploads
summary: |
Cancels the Upload. No Parts may be added after an Upload is cancelled.
parameters:
- in: path
name: upload_id
required: true
schema:
type: string
example: upload_abc123
description: |
The ID of the Upload.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Upload"
x-oaiMeta:
name: Cancel upload
group: uploads
returns: The [Upload](/docs/api-reference/uploads/object) object with status
`cancelled`.
examples:
request:
curl: |
curl https://api.openai.com/v1/uploads/upload_abc123/cancel
response: |
{
"id": "upload_abc123",
"object": "upload",
"bytes": 2147483648,
"created_at": 1719184911,
"filename": "training_examples.jsonl",
"purpose": "fine-tune",
"status": "cancelled",
"expires_at": 1719127296
}
/uploads/{upload_id}/complete:
post:
operationId: completeUpload
tags:
- Uploads
summary: >
Completes the [Upload](/docs/api-reference/uploads/object).
Within the returned Upload object, there is a nested
[File](/docs/api-reference/files/object) object that is ready to use in
the rest of the platform.
You can specify the order of the Parts by passing in an ordered list of
the Part IDs.
The number of bytes uploaded upon completion must match the number of
bytes initially specified when creating the Upload object. No Parts may
be added after an Upload is completed.
parameters:
- in: path
name: upload_id
required: true
schema:
type: string
example: upload_abc123
description: |
The ID of the Upload.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CompleteUploadRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Upload"
x-oaiMeta:
name: Complete upload
group: uploads
returns: The [Upload](/docs/api-reference/uploads/object) object with status
`completed` with an additional `file` property containing the created
usable File object.
examples:
request:
curl: |
curl https://api.openai.com/v1/uploads/upload_abc123/complete
-d '{
"part_ids": ["part_def456", "part_ghi789"]
}'
response: |
{
"id": "upload_abc123",
"object": "upload",
"bytes": 2147483648,
"created_at": 1719184911,
"filename": "training_examples.jsonl",
"purpose": "fine-tune",
"status": "completed",
"expires_at": 1719127296,
"file": {
"id": "file-xyz321",
"object": "file",
"bytes": 2147483648,
"created_at": 1719186911,
"filename": "training_examples.jsonl",
"purpose": "fine-tune",
}
}
/uploads/{upload_id}/parts:
post:
operationId: addUploadPart
tags:
- Uploads
summary: >
Adds a [Part](/docs/api-reference/uploads/part-object) to an
[Upload](/docs/api-reference/uploads/object) object. A Part represents a
chunk of bytes from the file you are trying to upload.
Each Part can be at most 64 MB, and you can add Parts until you hit the
Upload maximum of 8 GB.
It is possible to add multiple Parts in parallel. You can decide the
intended order of the Parts when you [complete the
Upload](/docs/api-reference/uploads/complete).
parameters:
- in: path
name: upload_id
required: true
schema:
type: string
example: upload_abc123
description: |
The ID of the Upload.
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/AddUploadPartRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/UploadPart"
x-oaiMeta:
name: Add upload part
group: uploads
returns: The upload [Part](/docs/api-reference/uploads/part-object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/uploads/upload_abc123/parts
-F data="aHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS91cGxvYWRz..."
response: |
{
"id": "part_def456",
"object": "upload.part",
"created_at": 1719185911,
"upload_id": "upload_abc123"
}
/vector_stores:
get:
operationId: listVectorStores
tags:
- Vector stores
summary: Returns a list of vector stores.
parameters:
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListVectorStoresResponse"
x-oaiMeta:
name: List vector stores
group: vector_stores
returns: A list of [vector store](/docs/api-reference/vector-stores/object)
objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
vector_stores = client.vector_stores.list()
print(vector_stores)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStores = await openai.vectorStores.list();
console.log(vectorStores);
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "vs_abc123",
"object": "vector_store",
"created_at": 1699061776,
"name": "Support FAQ",
"bytes": 139920,
"file_counts": {
"in_progress": 0,
"completed": 3,
"failed": 0,
"cancelled": 0,
"total": 3
}
},
{
"id": "vs_abc456",
"object": "vector_store",
"created_at": 1699061776,
"name": "Support FAQ v2",
"bytes": 139920,
"file_counts": {
"in_progress": 0,
"completed": 3,
"failed": 0,
"cancelled": 0,
"total": 3
}
}
],
"first_id": "vs_abc123",
"last_id": "vs_abc456",
"has_more": false
}
post:
operationId: createVectorStore
tags:
- Vector stores
summary: Create a vector store.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateVectorStoreRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreObject"
x-oaiMeta:
name: Create vector store
group: vector_stores
returns: A [vector store](/docs/api-reference/vector-stores/object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"name": "Support FAQ"
}'
python: |
from openai import OpenAI
client = OpenAI()
vector_store = client.vector_stores.create(
name="Support FAQ"
)
print(vector_store)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStore = await openai.vectorStores.create({
name: "Support FAQ"
});
console.log(vectorStore);
}
main();
response: |
{
"id": "vs_abc123",
"object": "vector_store",
"created_at": 1699061776,
"name": "Support FAQ",
"bytes": 139920,
"file_counts": {
"in_progress": 0,
"completed": 3,
"failed": 0,
"cancelled": 0,
"total": 3
}
}
/vector_stores/{vector_store_id}:
get:
operationId: getVectorStore
tags:
- Vector stores
summary: Retrieves a vector store.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
description: The ID of the vector store to retrieve.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreObject"
x-oaiMeta:
name: Retrieve vector store
group: vector_stores
returns: The [vector store](/docs/api-reference/vector-stores/object) object
matching the specified ID.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
vector_store = client.vector_stores.retrieve(
vector_store_id="vs_abc123"
)
print(vector_store)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStore = await openai.vectorStores.retrieve(
"vs_abc123"
);
console.log(vectorStore);
}
main();
response: |
{
"id": "vs_abc123",
"object": "vector_store",
"created_at": 1699061776
}
post:
operationId: modifyVectorStore
tags:
- Vector stores
summary: Modifies a vector store.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
description: The ID of the vector store to modify.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateVectorStoreRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreObject"
x-oaiMeta:
name: Modify vector store
group: vector_stores
returns: The modified [vector store](/docs/api-reference/vector-stores/object)
object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
-d '{
"name": "Support FAQ"
}'
python: |
from openai import OpenAI
client = OpenAI()
vector_store = client.vector_stores.update(
vector_store_id="vs_abc123",
name="Support FAQ"
)
print(vector_store)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStore = await openai.vectorStores.update(
"vs_abc123",
{
name: "Support FAQ"
}
);
console.log(vectorStore);
}
main();
response: |
{
"id": "vs_abc123",
"object": "vector_store",
"created_at": 1699061776,
"name": "Support FAQ",
"bytes": 139920,
"file_counts": {
"in_progress": 0,
"completed": 3,
"failed": 0,
"cancelled": 0,
"total": 3
}
}
delete:
operationId: deleteVectorStore
tags:
- Vector stores
summary: Delete a vector store.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
description: The ID of the vector store to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteVectorStoreResponse"
x-oaiMeta:
name: Delete vector store
group: vector_stores
returns: Deletion status
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-X DELETE
python: |
from openai import OpenAI
client = OpenAI()
deleted_vector_store = client.vector_stores.delete(
vector_store_id="vs_abc123"
)
print(deleted_vector_store)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const deletedVectorStore = await openai.vectorStores.del(
"vs_abc123"
);
console.log(deletedVectorStore);
}
main();
response: |
{
id: "vs_abc123",
object: "vector_store.deleted",
deleted: true
}
/vector_stores/{vector_store_id}/file_batches:
post:
operationId: createVectorStoreFileBatch
tags:
- Vector stores
summary: Create a vector store file batch.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: |
The ID of the vector store for which to create a File Batch.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateVectorStoreFileBatchRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileBatchObject"
x-oaiMeta:
name: Create vector store file batch
group: vector_stores
returns: A [vector store file
batch](/docs/api-reference/vector-stores-file-batches/batch-object)
object.
examples:
request:
curl: >
curl
https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"file_ids": ["file-abc123", "file-abc456"]
}'
python: >
from openai import OpenAI
client = OpenAI()
vector_store_file_batch =
client.vector_stores.file_batches.create(
vector_store_id="vs_abc123",
file_ids=["file-abc123", "file-abc456"]
)
print(vector_store_file_batch)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myVectorStoreFileBatch = await openai.vectorStores.fileBatches.create(
"vs_abc123",
{
file_ids: ["file-abc123", "file-abc456"]
}
);
console.log(myVectorStoreFileBatch);
}
main();
response: |
{
"id": "vsfb_abc123",
"object": "vector_store.file_batch",
"created_at": 1699061776,
"vector_store_id": "vs_abc123",
"status": "in_progress",
"file_counts": {
"in_progress": 1,
"completed": 1,
"failed": 0,
"cancelled": 0,
"total": 0,
}
}
/vector_stores/{vector_store_id}/file_batches/{batch_id}:
get:
operationId: getVectorStoreFileBatch
tags:
- Vector stores
summary: Retrieves a vector store file batch.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: The ID of the vector store that the file batch belongs to.
- in: path
name: batch_id
required: true
schema:
type: string
example: vsfb_abc123
description: The ID of the file batch being retrieved.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileBatchObject"
x-oaiMeta:
name: Retrieve vector store file batch
group: vector_stores
returns: The [vector store file
batch](/docs/api-reference/vector-stores-file-batches/batch-object)
object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: >
from openai import OpenAI
client = OpenAI()
vector_store_file_batch =
client.vector_stores.file_batches.retrieve(
vector_store_id="vs_abc123",
batch_id="vsfb_abc123"
)
print(vector_store_file_batch)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStoreFileBatch = await openai.vectorStores.fileBatches.retrieve(
"vs_abc123",
"vsfb_abc123"
);
console.log(vectorStoreFileBatch);
}
main();
response: |
{
"id": "vsfb_abc123",
"object": "vector_store.file_batch",
"created_at": 1699061776,
"vector_store_id": "vs_abc123",
"status": "in_progress",
"file_counts": {
"in_progress": 1,
"completed": 1,
"failed": 0,
"cancelled": 0,
"total": 0,
}
}
/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel:
post:
operationId: cancelVectorStoreFileBatch
tags:
- Vector stores
summary: Cancel a vector store file batch. This attempts to cancel the
processing of files in this batch as soon as possible.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
description: The ID of the vector store that the file batch belongs to.
- in: path
name: batch_id
required: true
schema:
type: string
description: The ID of the file batch to cancel.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileBatchObject"
x-oaiMeta:
name: Cancel vector store file batch
group: vector_stores
returns: The modified vector store file batch object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123/cancel \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-X POST
python: >
from openai import OpenAI
client = OpenAI()
deleted_vector_store_file_batch =
client.vector_stores.file_batches.cancel(
vector_store_id="vs_abc123",
file_batch_id="vsfb_abc123"
)
print(deleted_vector_store_file_batch)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const deletedVectorStoreFileBatch = await openai.vectorStores.fileBatches.cancel(
"vs_abc123",
"vsfb_abc123"
);
console.log(deletedVectorStoreFileBatch);
}
main();
response: |
{
"id": "vsfb_abc123",
"object": "vector_store.file_batch",
"created_at": 1699061776,
"vector_store_id": "vs_abc123",
"status": "in_progress",
"file_counts": {
"in_progress": 12,
"completed": 3,
"failed": 0,
"cancelled": 0,
"total": 15,
}
}
/vector_stores/{vector_store_id}/file_batches/{batch_id}/files:
get:
operationId: listFilesInVectorStoreBatch
tags:
- Vector stores
summary: Returns a list of vector store files in a batch.
parameters:
- name: vector_store_id
in: path
description: The ID of the vector store that the files belong to.
required: true
schema:
type: string
- name: batch_id
in: path
description: The ID of the file batch that the files belong to.
required: true
schema:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
- name: filter
in: query
description: Filter by file status. One of `in_progress`, `completed`, `failed`,
`cancelled`.
schema:
type: string
enum:
- in_progress
- completed
- failed
- cancelled
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListVectorStoreFilesResponse"
x-oaiMeta:
name: List vector store files in a batch
group: vector_stores
returns: A list of [vector store
file](/docs/api-reference/vector-stores-files/file-object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
vector_store_files = client.vector_stores.file_batches.list_files(
vector_store_id="vs_abc123",
batch_id="vsfb_abc123"
)
print(vector_store_files)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStoreFiles = await openai.vectorStores.fileBatches.listFiles(
"vs_abc123",
"vsfb_abc123"
);
console.log(vectorStoreFiles);
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "file-abc123",
"object": "vector_store.file",
"created_at": 1699061776,
"vector_store_id": "vs_abc123"
},
{
"id": "file-abc456",
"object": "vector_store.file",
"created_at": 1699061776,
"vector_store_id": "vs_abc123"
}
],
"first_id": "file-abc123",
"last_id": "file-abc456",
"has_more": false
}
/vector_stores/{vector_store_id}/files:
get:
operationId: listVectorStoreFiles
tags:
- Vector stores
summary: Returns a list of vector store files.
parameters:
- name: vector_store_id
in: path
description: The ID of the vector store that the files belong to.
required: true
schema:
type: string
- name: limit
in: query
description: >
A limit on the number of objects to be returned. Limit can range
between 1 and 100, and the default is 20.
required: false
schema:
type: integer
default: 20
- name: order
in: query
description: >
Sort order by the `created_at` timestamp of the objects. `asc` for
ascending order and `desc` for descending order.
schema:
type: string
default: desc
enum:
- asc
- desc
- name: after
in: query
description: >
A cursor for use in pagination. `after` is an object ID that defines
your place in the list. For instance, if you make a list request and
receive 100 objects, ending with obj_foo, your subsequent call can
include after=obj_foo in order to fetch the next page of the list.
schema:
type: string
- name: before
in: query
description: >
A cursor for use in pagination. `before` is an object ID that
defines your place in the list. For instance, if you make a list
request and receive 100 objects, starting with obj_foo, your
subsequent call can include before=obj_foo in order to fetch the
previous page of the list.
schema:
type: string
- name: filter
in: query
description: Filter by file status. One of `in_progress`, `completed`, `failed`,
`cancelled`.
schema:
type: string
enum:
- in_progress
- completed
- failed
- cancelled
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ListVectorStoreFilesResponse"
x-oaiMeta:
name: List vector store files
group: vector_stores
returns: A list of [vector store
file](/docs/api-reference/vector-stores-files/file-object) objects.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
vector_store_files = client.vector_stores.files.list(
vector_store_id="vs_abc123"
)
print(vector_store_files)
node.js: |
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStoreFiles = await openai.vectorStores.files.list(
"vs_abc123"
);
console.log(vectorStoreFiles);
}
main();
response: |
{
"object": "list",
"data": [
{
"id": "file-abc123",
"object": "vector_store.file",
"created_at": 1699061776,
"vector_store_id": "vs_abc123"
},
{
"id": "file-abc456",
"object": "vector_store.file",
"created_at": 1699061776,
"vector_store_id": "vs_abc123"
}
],
"first_id": "file-abc123",
"last_id": "file-abc456",
"has_more": false
}
post:
operationId: createVectorStoreFile
tags:
- Vector stores
summary: Create a vector store file by attaching a
[File](/docs/api-reference/files) to a [vector
store](/docs/api-reference/vector-stores/object).
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: |
The ID of the vector store for which to create a File.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateVectorStoreFileRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileObject"
x-oaiMeta:
name: Create vector store file
group: vector_stores
returns: A [vector store
file](/docs/api-reference/vector-stores-files/file-object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-d '{
"file_id": "file-abc123"
}'
python: |
from openai import OpenAI
client = OpenAI()
vector_store_file = client.vector_stores.files.create(
vector_store_id="vs_abc123",
file_id="file-abc123"
)
print(vector_store_file)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const myVectorStoreFile = await openai.vectorStores.files.create(
"vs_abc123",
{
file_id: "file-abc123"
}
);
console.log(myVectorStoreFile);
}
main();
response: |
{
"id": "file-abc123",
"object": "vector_store.file",
"created_at": 1699061776,
"usage_bytes": 1234,
"vector_store_id": "vs_abcd",
"status": "completed",
"last_error": null
}
/vector_stores/{vector_store_id}/files/{file_id}:
get:
operationId: getVectorStoreFile
tags:
- Vector stores
summary: Retrieves a vector store file.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: The ID of the vector store that the file belongs to.
- in: path
name: file_id
required: true
schema:
type: string
example: file-abc123
description: The ID of the file being retrieved.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileObject"
x-oaiMeta:
name: Retrieve vector store file
group: vector_stores
returns: The [vector store
file](/docs/api-reference/vector-stores-files/file-object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files/file-abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2"
python: |
from openai import OpenAI
client = OpenAI()
vector_store_file = client.vector_stores.files.retrieve(
vector_store_id="vs_abc123",
file_id="file-abc123"
)
print(vector_store_file)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const vectorStoreFile = await openai.vectorStores.files.retrieve(
"vs_abc123",
"file-abc123"
);
console.log(vectorStoreFile);
}
main();
response: |
{
"id": "file-abc123",
"object": "vector_store.file",
"created_at": 1699061776,
"vector_store_id": "vs_abcd",
"status": "completed",
"last_error": null
}
delete:
operationId: deleteVectorStoreFile
tags:
- Vector stores
summary: Delete a vector store file. This will remove the file from the vector
store but the file itself will not be deleted. To delete the file, use
the [delete file](/docs/api-reference/files/delete) endpoint.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
description: The ID of the vector store that the file belongs to.
- in: path
name: file_id
required: true
schema:
type: string
description: The ID of the file to delete.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteVectorStoreFileResponse"
x-oaiMeta:
name: Delete vector store file
group: vector_stores
returns: Deletion status
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/vs_abc123/files/file-abc123 \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "OpenAI-Beta: assistants=v2" \
-X DELETE
python: |
from openai import OpenAI
client = OpenAI()
deleted_vector_store_file = client.vector_stores.files.delete(
vector_store_id="vs_abc123",
file_id="file-abc123"
)
print(deleted_vector_store_file)
node.js: >
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const deletedVectorStoreFile = await openai.vectorStores.files.del(
"vs_abc123",
"file-abc123"
);
console.log(deletedVectorStoreFile);
}
main();
response: |
{
id: "file-abc123",
object: "vector_store.file.deleted",
deleted: true
}
post:
operationId: updateVectorStoreFileAttributes
tags:
- Vector stores
summary: Update attributes on a vector store file.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: The ID of the vector store the file belongs to.
- in: path
name: file_id
required: true
schema:
type: string
example: file-abc123
description: The ID of the file to update attributes.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateVectorStoreFileAttributesRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileObject"
x-oaiMeta:
name: Update vector store file attributes
group: vector_stores
returns: The updated [vector store
file](/docs/api-reference/vector-stores-files/file-object) object.
examples:
request:
curl: |
curl https://api.openai.com/v1/vector_stores/{vector_store_id}/files/{file_id} \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"attributes": {"key1": "value1", "key2": 2}}'
response: |
{
"id": "file-abc123",
"object": "vector_store.file",
"usage_bytes": 1234,
"created_at": 1699061776,
"vector_store_id": "vs_abcd",
"status": "completed",
"last_error": null,
"chunking_strategy": {...},
"attributes": {"key1": "value1", "key2": 2}
}
/vector_stores/{vector_store_id}/files/{file_id}/content:
get:
operationId: retrieveVectorStoreFileContent
tags:
- Vector stores
summary: Retrieve the parsed contents of a vector store file.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: The ID of the vector store.
- in: path
name: file_id
required: true
schema:
type: string
example: file-abc123
description: The ID of the file within the vector store.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreFileContentResponse"
x-oaiMeta:
name: Retrieve vector store file content
group: vector_stores
returns: The parsed contents of the specified vector store file.
examples:
request:
curl: |
curl \
https://api.openai.com/v1/vector_stores/vs_abc123/files/file-abc123/content \
-H "Authorization: Bearer $OPENAI_API_KEY"
response: |
{
"file_id": "file-abc123",
"filename": "example.txt",
"attributes": {"key": "value"},
"content": [
{"type": "text", "text": "..."},
...
]
}
/vector_stores/{vector_store_id}/search:
post:
operationId: searchVectorStore
tags:
- Vector stores
summary: Search a vector store for relevant chunks based on a query and file
attributes filter.
parameters:
- in: path
name: vector_store_id
required: true
schema:
type: string
example: vs_abc123
description: The ID of the vector store to search.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreSearchRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VectorStoreSearchResultsPage"
x-oaiMeta:
name: Search vector store
group: vector_stores
returns: A page of search results from the vector store.
examples:
request:
curl: |
curl -X POST \
https://api.openai.com/v1/vector_stores/vs_abc123/search \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "What is the return policy?", "filters": {...}}'
response: |
{
"object": "vector_store.search_results.page",
"search_query": "What is the return policy?",
"data": [
{
"file_id": "file_123",
"filename": "document.pdf",
"score": 0.95,
"attributes": {
"author": "John Doe",
"date": "2023-01-01"
},
"content": [
{
"type": "text",
"text": "Relevant chunk"
}
]
},
{
"file_id": "file_456",
"filename": "notes.txt",
"score": 0.89,
"attributes": {
"author": "Jane Smith",
"date": "2023-01-02"
},
"content": [
{
"type": "text",
"text": "Sample text content from the vector store."
}
]
}
],
"has_more": false,
"next_page": null
}
components:
schemas:
AddUploadPartRequest:
type: object
additionalProperties: false
properties:
data:
description: |
The chunk of bytes for this Part.
type: string
format: binary
required:
- data
AdminApiKey:
type: object
description: Represents an individual Admin API key in an org.
properties:
object:
type: string
example: organization.admin_api_key
description: The object type, which is always `organization.admin_api_key`
x-stainless-const: true
id:
type: string
example: key_abc
description: The identifier, which can be referenced in API endpoints
name:
type: string
example: Administration Key
description: The name of the API key
redacted_value:
type: string
example: sk-admin...def
description: The redacted value of the API key
value:
type: string
example: sk-admin-1234abcd
description: The value of the API key. Only shown on create.
created_at:
type: integer
format: int64
example: 1711471533
description: The Unix timestamp (in seconds) of when the API key was created
last_used_at:
type: integer
format: int64
nullable: true
example: 1711471534
description: The Unix timestamp (in seconds) of when the API key was last used
owner:
type: object
properties:
type:
type: string
example: user
description: Always `user`
object:
type: string
example: organization.user
description: The object type, which is always organization.user
id:
type: string
example: sa_456
description: The identifier, which can be referenced in API endpoints
name:
type: string
example: My Service Account
description: The name of the user
created_at:
type: integer
format: int64
example: 1711471533
description: The Unix timestamp (in seconds) of when the user was created
role:
type: string
example: owner
description: Always `owner`
required:
- object
- redacted_value
- name
- created_at
- last_used_at
- id
- owner
x-oaiMeta:
name: The admin API key object
example: |
{
"object": "organization.admin_api_key",
"id": "key_abc",
"name": "Main Admin Key",
"redacted_value": "sk-admin...xyz",
"created_at": 1711471533,
"last_used_at": 1711471534,
"owner": {
"type": "user",
"object": "organization.user",
"id": "user_123",
"name": "John Doe",
"created_at": 1711471533,
"role": "owner"
}
}
ApiKeyList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: "#/components/schemas/AdminApiKey"
has_more:
type: boolean
example: false
first_id:
type: string
example: key_abc
last_id:
type: string
example: key_xyz
AssistantObject:
type: object
title: Assistant
description: Represents an `assistant` that can call the model and use tools.
properties:
id:
description: The identifier, which can be referenced in API endpoints.
type: string
object:
description: The object type, which is always `assistant`.
type: string
enum:
- assistant
x-stainless-const: true
created_at:
description: The Unix timestamp (in seconds) for when the assistant was created.
type: integer
name:
description: |
The name of the assistant. The maximum length is 256 characters.
type: string
maxLength: 256
nullable: true
description:
description: >
The description of the assistant. The maximum length is 512
characters.
type: string
maxLength: 512
nullable: true
model:
description: >
ID of the model to use. You can use the [List
models](/docs/api-reference/models/list) API to see all of your
available models, or see our [Model overview](/docs/models) for
descriptions of them.
type: string
instructions:
description: >
The system instructions that the assistant uses. The maximum length
is 256,000 characters.
type: string
maxLength: 256000
nullable: true
tools:
description: >
A list of tool enabled on the assistant. There can be a maximum of
128 tools per assistant. Tools can be of types `code_interpreter`,
`file_search`, or `function`.
default: []
type: array
maxItems: 128
items:
oneOf:
- $ref: "#/components/schemas/AssistantToolsCode"
- $ref: "#/components/schemas/AssistantToolsFileSearch"
- $ref: "#/components/schemas/AssistantToolsFunction"
tool_resources:
type: object
description: >
A set of resources that are used by the assistant's tools. The
resources are specific to the type of tool. For example, the
`code_interpreter` tool requires a list of file IDs, while the
`file_search` tool requires a list of vector store IDs.
properties:
code_interpreter:
type: object
properties:
file_ids:
type: array
description: >
A list of [file](/docs/api-reference/files) IDs made
available to the `code_interpreter`` tool. There can be a
maximum of 20 files associated with the tool.
default: []
maxItems: 20
items:
type: string
file_search:
type: object
properties:
vector_store_ids:
type: array
description: >
The ID of the [vector
store](/docs/api-reference/vector-stores/object) attached to
this assistant. There can be a maximum of 1 vector store
attached to the assistant.
maxItems: 1
items:
type: string
nullable: true
metadata:
$ref: "#/components/schemas/Metadata"
temperature:
description: >
What sampling temperature to use, between 0 and 2. Higher values
like 0.8 will make the output more random, while lower values like
0.2 will make it more focused and deterministic.
type: number
minimum: 0
maximum: 2
default: 1
example: 1
nullable: true
top_p:
type: number
minimum: 0
maximum: 1
default: 1
example: 1
nullable: true
description: >
An alternative to sampling with temperature, called nucleus
sampling, where the model considers the results of the tokens with
top_p probability mass. So 0.1 means only the tokens comprising the
top 10% probability mass are considered.
We generally recommend altering this or temperature but not both.
response_format:
$ref: "#/components/schemas/AssistantsApiResponseFormatOption"
nullable: true
required:
- id
- object
- created_at
- name
- description
- model
- instructions
- tools
- metadata
x-oaiMeta:
name: The assistant object
beta: true
example: >
{
"id": "asst_abc123",
"object": "assistant",
"created_at": 1698984975,
"name": "Math Tutor",
"description": null,
"model": "gpt-4o",
"instructions": "You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
"tools": [
{
"type": "code_interpreter"
}
],
"metadata": {},
"top_p": 1.0,
"temperature": 1.0,
"response_format": "auto"
}
AssistantStreamEvent:
description: >
Represents an event emitted when streaming a Run.
Each event in a server-sent events stream has an `event` and `data`
property:
```
event: thread.created
data: {"id": "thread_123", "object": "thread", ...}
```
We emit events whenever a new object is created, transitions to a new
state, or is being
streamed in parts (deltas). For example, we emit `thread.run.created`
when a new run
is created, `thread.run.completed` when a run completes, and so on. When
an Assistant chooses
to create a message during a run, we emit a `thread.message.created
event`, a
`thread.message.in_progress` event, many `thread.message.delta` events,
and finally a
`thread.message.completed` event.
We may add additional events over time, so we recommend handling unknown
events gracefully
in your code. See the [Assistants API
quickstart](/docs/assistants/overview) to learn how to
integrate the Assistants API with streaming.
oneOf:
- $ref: "#/components/schemas/ThreadStreamEvent"
- $ref: "#/components/schemas/RunStreamEvent"
- $ref: "#/components/schemas/RunStepStreamEvent"
- $ref: "#/components/schemas/MessageStreamEvent"
- $ref: "#/components/schemas/ErrorEvent"
- $ref: "#/components/schemas/DoneEvent"
x-oaiMeta:
name: Assistant stream events
beta: true
AssistantSupportedModels:
type: string
enum:
- gpt-4.1
- gpt-4.1-mini
- gpt-4.1-nano
- gpt-4.1-2025-04-14
- gpt-4.1-mini-2025-04-14
- gpt-4.1-nano-2025-04-14
- o3-mini
- o3-mini-2025-01-31
- o1
- o1-2024-12-17
- gpt-4o
- gpt-4o-2024-11-20
- gpt-4o-2024-08-06
- gpt-4o-2024-05-13
- gpt-4o-mini
- gpt-4o-mini-2024-07-18
- gpt-4.5-preview
- gpt-4.5-preview-2025-02-27
- gpt-4-turbo
- gpt-4-turbo-2024-04-09
- gpt-4-0125-preview
- gpt-4-turbo-preview
- gpt-4-1106-preview
- gpt-4-vision-preview
- gpt-4
- gpt-4-0314
- gpt-4-0613
- gpt-4-32k
- gpt-4-32k-0314
- gpt-4-32k-0613
- gpt-3.5-turbo
- gpt-3.5-turbo-16k
- gpt-3.5-turbo-0613
- gpt-3.5-turbo-1106
- gpt-3.5-turbo-0125
- gpt-3.5-turbo-16k-0613
AssistantToolsCode:
type: object
title: Code interpreter tool
properties:
type:
type: string
description: "The type of tool being defined: `code_interpreter`"
enum:
- code_interpreter
x-stainless-const: true
required:
- type
AssistantToolsFileSearch:
type: object
title: FileSearch tool
properties:
type:
type: string
description: "The type of tool being defined: `file_search`"
enum:
- file_search
x-stainless-const: true
file_search:
type: object
description: Overrides for the file search tool.
properties:
max_num_results:
type: integer
minimum: 1
maximum: 50
description: |
The maximum number of results the file search tool should output. The default is 20 for `gpt-4*` models and 5 for `gpt-3.5-turbo`. This number should be between 1 and 50 inclusive.
Note that the file search tool may output fewer than `max_num_results` results. See the [file search tool documentation](/docs/assistants/tools/file-search#customizing-file-search-settings) for more information.
ranking_options:
$ref: "#/components/schemas/FileSearchRankingOptions"
required:
- type
AssistantToolsFileSearchTypeOnly:
type: object
title: FileSearch tool
properties:
type:
type: string
description: "The type of tool being defined: `file_search`"
enum:
- file_search
x-stainless-const: true
required:
- type
AssistantToolsFunction:
type: object
title: Function tool
properties:
type:
type: string
description: "The type of tool being defined: `function`"
enum:
- function
x-stainless-const: true
function:
$ref: "#/components/schemas/FunctionObject"
required:
- type
- function
AssistantsApiResponseFormatOption:
description: >
Specifies the format that the model must output. Compatible with
[GPT-4o](/docs/models#gpt-4o), [GPT-4
Turbo](/docs/models#gpt-4-turbo-and-gpt-4), and all GPT-3.5 Turbo models
since `gpt-3.5-turbo-1106`.
Setting to `{ "type": "json_schema", "json_schema": {...} }` enables
Structured Outputs which ensures the model will match your supplied JSON
schema. Learn more in the [Structured Outputs
guide](/docs/guides/structured-outputs).
Setting to `{ "type": "json_object" }` enables JSON mode, which ensures
the message the model generates is valid JSON.
**Important:** when using JSON mode, you **must** also instruct the
model to produce JSON yourself via a system or user message. Without
this, the model may generate an unending stream of whitespace until the
generation reaches the token limit, resulting in a long-running and
seemingly "stuck" request. Also note that the message content may be
partially cut off if `finish_reason="length"`, which indicates the
generation exceeded `max_tokens` or the conversation exceeded the max
context length.
oneOf:
- type: string
description: |
`auto` is the default value
enum:
- auto
x-stainless-const: true
- $ref: "#/components/schemas/ResponseFormatText"
- $ref: "#/components/schemas/ResponseFormatJsonObject"
- $ref: "#/components/schemas/ResponseFormatJsonSchema"
AssistantsApiToolChoiceOption:
description: >
Controls which (if any) tool is called by the model.
`none` means the model will not call any tools and instead generates a
message.
`auto` is the default value and means the model can pick between
generating a message or calling one or more tools.
`required` means the model must call one or more tools before responding
to the user.
Specifying a particular tool like `{"type": "file_search"}` or `{"type":
"function", "function": {"name": "my_function"}}` forces the model to
call that tool.
oneOf:
- type: string
description: >
`none` means the model will not call any tools and instead generates
a message. `auto` means the model can pick between generating a
message or calling one or more tools. `required` means the model
must call one or more tools before responding to the user.
enum:
- none
- auto
- required
- $ref: "#/components/schemas/AssistantsNamedToolChoice"
AssistantsNamedToolChoice:
type: object
description: Specifies a tool the model should use. Use to force the model to
call a specific tool.
properties:
type:
type: string
enum:
- function
- code_interpreter
- file_search
description: The type of the tool. If type is `function`, the function name must
be set
function:
type: object
properties:
name:
type: string
description: The name of the function to call.
required:
- name
required:
- type
AudioResponseFormat:
description: >
The format of the output, in one of these options: `json`, `text`,
`srt`, `verbose_json`, or `vtt`. For `gpt-4o-transcribe` and
`gpt-4o-mini-transcribe`, the only supported format is `json`.
type: string
enum:
- json
- text
- srt
- verbose_json
- vtt
default: json
AuditLog:
type: object
description: A log of a user action or configuration change within this organization.
properties:
id:
type: string
description: The ID of this log.
type:
$ref: "#/components/schemas/AuditLogEventType"
effective_at:
type: integer
description: The Unix timestamp (in seconds) of the event.
project:
type: object
description: The project that the action was scoped to. Absent for actions not
scoped to projects.
properties:
id:
type: string
description: The project ID.
name:
type: string
description: The project title.
actor:
$ref: "#/components/schemas/AuditLogActor"
api_key.created:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The tracking ID of the API key.
data:
type: object
description: The payload used to create the API key.
properties:
scopes:
type: array
items:
type: string
description: A list of scopes allowed for the API key, e.g.
`["api.model.request"]`
api_key.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The tracking ID of the API key.
changes_requested:
type: object
description: The payload used to update the API key.
properties:
scopes:
type: array
items:
type: string
description: A list of scopes allowed for the API key, e.g.
`["api.model.request"]`
api_key.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The tracking ID of the API key.
checkpoint_permission.created:
type: object
description: The project and fine-tuned model checkpoint that the checkpoint
permission was created for.
properties:
id:
type: string
description: The ID of the checkpoint permission.
data:
type: object
description: The payload used to create the checkpoint permission.
properties:
project_id:
type: string
description: The ID of the project that the checkpoint permission was created
for.
fine_tuned_model_checkpoint:
type: string
description: The ID of the fine-tuned model checkpoint.
checkpoint_permission.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The ID of the checkpoint permission.
invite.sent:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The ID of the invite.
data:
type: object
description: The payload used to create the invite.
properties:
email:
type: string
description: The email invited to the organization.
role:
type: string
description: The role the email was invited to be. Is either `owner` or
`member`.
invite.accepted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The ID of the invite.
invite.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The ID of the invite.
login.failed:
type: object
description: The details for events with this `type`.
properties:
error_code:
type: string
description: The error code of the failure.
error_message:
type: string
description: The error message of the failure.
logout.failed:
type: object
description: The details for events with this `type`.
properties:
error_code:
type: string
description: The error code of the failure.
error_message:
type: string
description: The error message of the failure.
organization.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The organization ID.
changes_requested:
type: object
description: The payload used to update the organization settings.
properties:
title:
type: string
description: The organization title.
description:
type: string
description: The organization description.
name:
type: string
description: The organization name.
settings:
type: object
properties:
threads_ui_visibility:
type: string
description: Visibility of the threads page which shows messages created with
the Assistants API and Playground. One of `ANY_ROLE`,
`OWNERS`, or `NONE`.
usage_dashboard_visibility:
type: string
description: Visibility of the usage dashboard which shows activity and costs
for your organization. One of `ANY_ROLE` or `OWNERS`.
project.created:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The project ID.
data:
type: object
description: The payload used to create the project.
properties:
name:
type: string
description: The project name.
title:
type: string
description: The title of the project as seen on the dashboard.
project.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The project ID.
changes_requested:
type: object
description: The payload used to update the project.
properties:
title:
type: string
description: The title of the project as seen on the dashboard.
project.archived:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The project ID.
rate_limit.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The rate limit ID
changes_requested:
type: object
description: The payload used to update the rate limits.
properties:
max_requests_per_1_minute:
type: integer
description: The maximum requests per minute.
max_tokens_per_1_minute:
type: integer
description: The maximum tokens per minute.
max_images_per_1_minute:
type: integer
description: The maximum images per minute. Only relevant for certain models.
max_audio_megabytes_per_1_minute:
type: integer
description: The maximum audio megabytes per minute. Only relevant for certain
models.
max_requests_per_1_day:
type: integer
description: The maximum requests per day. Only relevant for certain models.
batch_1_day_max_input_tokens:
type: integer
description: The maximum batch input tokens per day. Only relevant for certain
models.
rate_limit.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The rate limit ID
service_account.created:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The service account ID.
data:
type: object
description: The payload used to create the service account.
properties:
role:
type: string
description: The role of the service account. Is either `owner` or `member`.
service_account.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The service account ID.
changes_requested:
type: object
description: The payload used to updated the service account.
properties:
role:
type: string
description: The role of the service account. Is either `owner` or `member`.
service_account.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The service account ID.
user.added:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The user ID.
data:
type: object
description: The payload used to add the user to the project.
properties:
role:
type: string
description: The role of the user. Is either `owner` or `member`.
user.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The project ID.
changes_requested:
type: object
description: The payload used to update the user.
properties:
role:
type: string
description: The role of the user. Is either `owner` or `member`.
user.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The user ID.
certificate.created:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The certificate ID.
name:
type: string
description: The name of the certificate.
certificate.updated:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The certificate ID.
name:
type: string
description: The name of the certificate.
certificate.deleted:
type: object
description: The details for events with this `type`.
properties:
id:
type: string
description: The certificate ID.
name:
type: string
description: The name of the certificate.
certificate:
type: string
description: The certificate content in PEM format.
certificates.activated:
type: object
description: The details for events with this `type`.
properties:
certificates:
type: array
items:
type: object
properties:
id:
type: string
description: The certificate ID.
name:
type: string
description: The name of the certificate.
certificates.deactivated:
type: object
description: The details for events with this `type`.
properties:
certificates:
type: array
items:
type: object
properties:
id:
type: string
description: The certificate ID.
name:
type: string
description: The name of the certificate.
required:
- id
- type
- effective_at
- actor
x-oaiMeta:
name: The audit log object
example: >
{
"id": "req_xxx_20240101",
"type": "api_key.created",
"effective_at": 1720804090,
"actor": {
"type": "session",
"session": {
"user": {
"id": "user-xxx",
"email": "user@example.com"
},
"ip_address": "127.0.0.1",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
},
"api_key.created": {
"id": "key_xxxx",
"data": {
"scopes": ["resource.operation"]
}
}
}
AuditLogActor:
type: object
description: The actor who performed the audit logged action.
properties:
type:
type: string
description: The type of actor. Is either `session` or `api_key`.
enum:
- session
- api_key
session:
$ref: "#/components/schemas/AuditLogActorSession"
api_key:
$ref: "#/components/schemas/AuditLogActorApiKey"
AuditLogActorApiKey:
type: object
description: The API Key used to perform the audit logged action.
properties:
id:
type: string
description: The tracking id of the API key.
type:
type: string
description: The type of API key. Can be either `user` or `service_account`.
enum:
- user
- service_account
user:
$ref: "#/components/schemas/AuditLogActorUser"
service_account:
$ref: "#/components/schemas/AuditLogActorServiceAccount"
AuditLogActorServiceAccount:
type: object
description: The service account that performed the audit logged action.
properties:
id:
type: string
description: The service account id.
AuditLogActorSession:
type: object
description: The session in which the audit logged action was performed.
properties:
user:
$ref: "#/components/schemas/AuditLogActorUser"
ip_address:
type: string
description: The IP address from which the action was performed.
AuditLogActorUser:
type: object
description: The user who performed the audit logged action.
properties:
id:
type: string
description: The user id.
email:
type: string
description: The user email.
AuditLogEventType:
type: string
description: The event type.
enum:
- api_key.created
- api_key.updated
- api_key.deleted
- checkpoint_permission.created
- checkpoint_permission.deleted
- invite.sent
- invite.accepted
- invite.deleted
- login.succeeded
- login.failed
- logout.succeeded
- logout.failed
- organization.updated
- project.created
- project.updated
- project.archived
- service_account.created
- service_account.updated
- service_account.deleted
- rate_limit.updated
- rate_limit.deleted
- user.added
- user.updated
- user.deleted
AutoChunkingStrategyRequestParam:
type: object
title: Auto Chunking Strategy
description: The default strategy. This strategy currently uses a
`max_chunk_size_tokens` of `800` and `chunk_overlap_tokens` of `400`.
additionalProperties: false
properties:
type:
type: string
description: Always `auto`.
enum:
- auto
x-stainless-const: true
required:
- type
Batch:
type: object
properties:
id:
type: string
object:
type: string
enum:
- batch
description: The object type, which is always `batch`.
x-stainless-const: true
endpoint:
type: string
description: The OpenAI API endpoint used by the batch.
errors:
type: object
properties:
object:
type: string
description: The object type, which is always `list`.
data:
type: array
items:
type: object
properties:
code:
type: string
description: An error code identifying the error type.
message:
type: string
description: A human-readable message providing more details about the error.
param:
type: string
description: The name of the parameter that caused the error, if applicable.
nullable: true
line:
type: integer
description: The line number of the input file where the error occurred, if
applicable.
nullable: true
input_file_id:
type: string
description: The ID of the input file for the batch.
completion_window:
type: string
description: The time frame within which the batch should be processed.
status:
type: string
description: The current status of the batch.
enum:
- validating
- failed
- in_progress
- finalizing
- completed
- expired
- cancelling
- cancelled
output_file_id:
type: string
description: The ID of the file containing the outputs of successfully executed
requests.
error_file_id:
type: string
description: The ID of the file containing the outputs of requests with errors.
created_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch was created.
in_progress_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch started
processing.
expires_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch will expire.
finalizing_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch started
finalizing.
completed_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch was completed.
failed_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch failed.
expired_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch expired.
cancelling_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch started
cancelling.
cancelled_at:
type: integer
description: The Unix timestamp (in seconds) for when the batch was cancelled.
request_counts:
type: object
properties:
total:
type: integer
description: Total number of requests in the batch.
completed:
type: integer
description: Number of requests that have been completed successfully.
failed:
type: integer
description: Number of requests that have failed.
required:
- total
- completed
- failed
description: The request counts for different statuses within the batch.
metadata:
$ref: "#/components/schemas/Metadata"
required:
- id
- object
- endpoint
- input_file_id
- completion_window
- status
- created_at
x-oaiMeta:
name: The batch object
example: |
{
"id": "batch_abc123",
"object": "batch",
"endpoint": "/v1/completions",
"errors": null,
"input_file_id": "file-abc123",
"completion_window": "24h",
"status": "completed",
"output_file_id": "file-cvaTdG",
"error_file_id": "file-HOWS94",
"created_at": 1711471533,
"in_progress_at": 1711471538,
"expires_at": 1711557933,
"finalizing_at": 1711493133,
"completed_at": 1711493163,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 100,
"completed": 95,
"failed": 5
},
"metadata": {
"customer_id": "user_123456789",
"batch_description": "Nightly eval job",
}
}
BatchRequestInput:
type: object
description: The per-line object of the batch input file
properties:
custom_id:
type: string
description: A developer-provided per-request id that will be used to match
outputs to inputs. Must be unique for each request in a batch.
method:
type: string
enum:
- POST
description: The HTTP method to be used for the request. Currently only `POST`
is supported.
x-stainless-const: true
url:
type: string
description: The OpenAI API relative URL to be used for the request. Currently
`/v1/chat/completions`, `/v1/embeddings`, and `/v1/completions` are
supported.
x-oaiMeta:
name: The request input object
example: >
{"custom_id": "request-1", "method": "POST", "url":
"/v1/chat/completions", "body": {"model": "gpt-4o-mini", "messages":
[{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is 2+2?"}]}}
BatchRequestOutput:
type: object
description: The per-line object of the batch output and error files
properties:
id:
type: string
custom_id:
type: string
description: A developer-provided per-request id that will be used to match
outputs to inputs.
response:
type: object
nullable: true
properties:
status_code:
type: integer
description: The HTTP status code of the response
request_id:
type: string
description: An unique identifier for the OpenAI API request. Please include
this request ID when contacting support.
body:
type: object
x-oaiTypeLabel: map
description: The JSON body of the response
error:
type: object
nullable: true
description: For requests that failed with a non-HTTP error, this will contain
more information on the cause of the failure.
properties:
code:
type: string
description: A machine-readable error code.
message:
type: string
description: A human-readable error message.
x-oaiMeta:
name: The request output object
example: >
{"id": "batch_req_wnaDys", "custom_id": "request-2", "response":
{"status_code": 200, "request_id": "req_c187b3", "body": {"id":
"chatcmpl-9758Iw", "object": "chat.completion", "created": 1711475054,
"model": "gpt-4o-mini", "choices": [{"index": 0, "message": {"role":
"assistant", "content": "2 + 2 equals 4."}, "finish_reason": "stop"}],
"usage": {"prompt_tokens": 24, "completion_tokens": 15,
"total_tokens": 39}, "system_fingerprint": null}}, "error": null}
Certificate:
type: object
description: Represents an individual `certificate` uploaded to the organization.
properties:
object:
type: string
enum:
- certificate
- organization.certificate
- organization.project.certificate
description: >
The object type.
- If creating, updating, or getting a specific certificate, the
object type is `certificate`.
- If listing, activating, or deactivating certificates for the
organization, the object type is `organization.certificate`.
- If listing, activating, or deactivating certificates for a
project, the object type is `organization.project.certificate`.
x-stainless-const: true
id:
type: string
description: The identifier, which can be referenced in API endpoints
name:
type: string
description: The name of the certificate.
created_at:
type: integer
description: The Unix timestamp (in seconds) of when the certificate was uploaded.
certificate_details:
type: object
properties:
valid_at:
type: integer
description: The Unix timestamp (in seconds) of when the certificate becomes
valid.
expires_at:
type: integer
description: The Unix timestamp (in seconds) of when the certificate expires.
content:
type: string
description: The content of the certificate in PEM format.
active:
type: boolean
description: Whether the certificate is currently active at the specified scope.
Not returned when getting details for a specific certificate.
required:
- object
- id
- name
- created_at
- certificate_details
x-oaiMeta:
name: The certificate object
example: >
{
"object": "certificate",
"id": "cert_abc",
"name": "My Certificate",
"created_at": 1234567,
"certificate_details": {
"valid_at": 1234567,
"expires_at": 12345678,
"content": "-----BEGIN CERTIFICATE----- MIIGAjCCA...6znFlOW+ -----END CERTIFICATE-----"
}
}
ChatCompletionDeleted:
type: object
properties:
object:
type: string
description: The type of object being deleted.
enum:
- chat.completion.deleted
x-stainless-const: true
id:
type: string
description: The ID of the chat completion that was deleted.
deleted:
type: boolean
description: Whether the chat completion was deleted.
required:
- object
- id
- deleted
ChatCompletionFunctionCallOption:
type: object
description: >
Specifying a particular function via `{"name": "my_function"}` forces
the model to call that function.
properties:
name:
type: string
description: The name of the function to call.
required:
- name
ChatCompletionFunctions:
type: object
deprecated: true
properties:
description:
type: string
description: A description of what the function does, used by the model to
choose when and how to call the function.
name:
type: string
description: The name of the function to be called. Must be a-z, A-Z, 0-9, or
contain underscores and dashes, with a maximum length of 64.
parameters:
$ref: "#/components/schemas/FunctionParameters"
required:
- name
ChatCompletionList:
type: object
title: ChatCompletionList
description: |
An object representing a list of Chat Completions.
properties:
object:
type: string
enum:
- list
default: list
description: |
The type of this object. It is always set to "list".
x-stainless-const: true
data:
type: array
description: |
An array of chat completion objects.
items:
$ref: "#/components/schemas/CreateChatCompletionResponse"
first_id:
type: string
description: The identifier of the first chat completion in the data array.
last_id:
type: string
description: The identifier of the last chat completion in the data array.
has_more:
type: boolean
description: Indicates whether there are more Chat Completions available.
required:
- object
- data
- first_id
- last_id
- has_more
x-oaiMeta:
name: The chat completion list object
group: chat
example: >
{
"object": "list",
"data": [
{
"object": "chat.completion",
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"model": "gpt-4o-2024-08-06",
"created": 1738960610,
"request_id": "req_ded8ab984ec4bf840f37566c1011c417",
"tool_choice": null,
"usage": {
"total_tokens": 31,
"completion_tokens": 18,
"prompt_tokens": 13
},
"seed": 4944116822809979520,
"top_p": 1.0,
"temperature": 1.0,
"presence_penalty": 0.0,
"frequency_penalty": 0.0,
"system_fingerprint": "fp_50cad350e4",
"input_user": null,
"service_tier": "default",
"tools": null,
"metadata": {},
"choices": [
{
"index": 0,
"message": {
"content": "Mind of circuits hum, \nLearning patterns in silenceโ€” \nFuture's quiet spark.",
"role": "assistant",
"tool_calls": null,
"function_call": null
},
"finish_reason": "stop",
"logprobs": null
}
],
"response_format": null
}
],
"first_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"last_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2",
"has_more": false
}
ChatCompletionMessageList:
type: object
title: ChatCompletionMessageList
description: |
An object representing a list of chat completion messages.
properties:
object:
type: string
enum:
- list
default: list
description: |
The type of this object. It is always set to "list".
x-stainless-const: true
data:
type: array
description: |
An array of chat completion message objects.
items:
allOf:
- $ref: "#/components/schemas/ChatCompletionResponseMessage"
- type: object
required:
- id
properties:
id:
type: string
description: The identifier of the chat message.
first_id:
type: string
description: The identifier of the first chat message in the data array.
last_id:
type: string
description: The identifier of the last chat message in the data array.
has_more:
type: boolean
description: Indicates whether there are more chat messages available.
required:
- object
- data
- first_id
- last_id
- has_more
x-oaiMeta:
name: The chat completion message list object
group: chat
example: |
{
"object": "list",
"data": [
{
"id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"role": "user",
"content": "write a haiku about ai",
"name": null,
"content_parts": null
}
],
"first_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"last_id": "chatcmpl-AyPNinnUqUDYo9SAdA52NobMflmj2-0",
"has_more": false
}
ChatCompletionMessageToolCall:
type: object
properties:
id:
type: string
description: The ID of the tool call.
type:
type: string
enum:
- function
description: The type of the tool. Currently, only `function` is supported.
x-stainless-const: true
function:
type: object
description: The function that the model called.
properties:
name:
type: string
description: The name of the function to call.
arguments:
type: string
description: The arguments to call the function with, as generated by the model
in JSON format. Note that the model does not always generate
valid JSON, and may hallucinate parameters not defined by your
function schema. Validate the arguments in your code before
calling your function.
required:
- name
- arguments
required:
- id
- type
- function
ChatCompletionMessageToolCallChunk:
type: object
properties:
index:
type: integer
id:
type: string
description: The ID of the tool call.
type:
type: string
enum:
- function
description: The type of the tool. Currently, only `function` is supported.
x-stainless-const: true
function:
type: object
properties:
name:
type: string
description: The name of the function to call.
arguments:
type: string
description: The arguments to call the function with, as generated by the model
in JSON format. Note that the model does not always generate
valid JSON, and may hallucinate parameters not defined by your
function schema. Validate the arguments in your code before
calling your function.
required:
- index
ChatCompletionMessageToolCalls:
type: array
description: The tool calls generated by the model, such as function calls.
items:
$ref: "#/components/schemas/ChatCompletionMessageToolCall"
ChatCompletionModalities:
type: array
nullable: true
description: >
Output types that you would like the model to generate for this request.
Most models are capable of generating text, which is the default:
`["text"]`
The `gpt-4o-audio-preview` model can also be used to [generate
audio](/docs/guides/audio). To
request that this model generate both text and audio responses, you can
use:
`["text", "audio"]`
items:
type: string
enum:
- text
- audio
ChatCompletionNamedToolChoice:
type: object
description: Specifies a tool the model should use. Use to force the model to
call a specific function.
properties:
type:
type: string
enum:
- function
description: The type of the tool. Currently, only `function` is supported.
x-stainless-const: true
function:
type: object
properties:
name:
type: string
description: The name of the function to call.
required:
- name
required:
- type
- function
ChatCompletionRequestAssistantMessage:
type: object
title: Assistant message
description: |
Messages sent by the model in response to user messages.
properties:
content:
nullable: true
oneOf:
- type: string
description: The contents of the assistant message.
title: Text content
- type: array
description: An array of content parts with a defined type. Can be one or more
of type `text`, or exactly one of type `refusal`.
title: Array of content parts
items:
$ref: "#/components/schemas/ChatCompletionRequestAssistantMessageContentPart"
minItems: 1
description: >
The contents of the assistant message. Required unless `tool_calls`
or `function_call` is specified.
refusal:
nullable: true
type: string
description: The refusal message by the assistant.
role:
type: string
enum:
- assistant
description: The role of the messages author, in this case `assistant`.
x-stainless-const: true
name:
type: string
description: An optional name for the participant. Provides the model
information to differentiate between participants of the same role.
audio:
type: object
nullable: true
description: |
Data about a previous audio response from the model.
[Learn more](/docs/guides/audio).
required:
- id
properties:
id:
type: string
description: |
Unique identifier for a previous audio response from the model.
tool_calls:
$ref: "#/components/schemas/ChatCompletionMessageToolCalls"
function_call:
type: object
deprecated: true
description: Deprecated and replaced by `tool_calls`. The name and arguments of
a function that should be called, as generated by the model.
nullable: true
properties:
arguments:
type: string
description: The arguments to call the function with, as generated by the model
in JSON format. Note that the model does not always generate
valid JSON, and may hallucinate parameters not defined by your
function schema. Validate the arguments in your code before
calling your function.
name:
type: string
description: The name of the function to call.
required:
- arguments
- name
required:
- role
ChatCompletionRequestAssistantMessageContentPart:
oneOf:
- $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartText"
- $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartRefusal"
ChatCompletionRequestDeveloperMessage:
type: object
title: Developer message
description: >
Developer-provided instructions that the model should follow, regardless
of
messages sent by the user. With o1 models and newer, `developer`
messages
replace the previous `system` messages.
properties:
content:
description: The contents of the developer message.
oneOf:
- type: string
description: The contents of the developer message.
title: Text content
- type: array
description: An array of content parts with a defined type. For developer
messages, only type `text` is supported.
title: Array of content parts
items:
$ref: "#/components/schemas/ChatCompletionRequestMessageContentPartText"
minItems: 1
role:
type: string
enum:
- developer
description: The role of the messages author, in this case `developer`.
x-stainless-const: true
name:
type: string
description: An optional name for the participant. Provides the model
information to differentiate between participants of the same role.
required:
- content
- role
ChatCompletionRequestFunctionMessage:
type: object
title: Function message
deprecated: true
properties:
role:
type: string
enum:
- function
description: The role of the messages author, in this case `function`.
x-stainless-const: true
content:
nullable: true
type: string
description: The contents of the function message.
name:
type: string
description: The name of the function to call.
required:
- role
- content
- name
ChatCompletionRequestMessage:
oneOf:
- $ref: "#/components/schemas/ChatCompletionRequestDeveloperMessage"
- $ref: "#/components/schemas/ChatCompletionRequestSystemMessage"
- $ref: "#/components/schemas/ChatCompletionRequestUserMessage"
- $ref: "#/components/schemas/ChatCompletionRequestAssistantMessage"
- $ref: "#/components/schemas/ChatCompletionRequestToolMessage"
- $ref: "#/components/schemas/ChatCompletionRequestFunctionMessage"
ChatCompletionRequestMessageContentPartAudio:
type: object
title: Audio content part
description: |
Learn about [audio inputs](/docs/guides/audio).
properties:
type:
type: string
enum:
- input_audio
description: The type of the content part. Always `input_audio`.
x-stainless-const: true
input_audio:
type: object
properties:
data:
type: string
description: Base64 encoded audio data.
format:
type: string
enum:
- wav
- mp3
description: >
The format of the encoded audio data. Currently supports "wav"
and "mp3".
required:
- data
- format
required:
- type
- input_audio