ChatGPT · Schema

ChatGPT Chat Completion

Schema for an OpenAI Chat Completion response object. Represents a chat completion generated by the model, including the generated message choices, token usage, and metadata.

AgentsAIChatGPTEmbeddingsFine-TuningGPT-4GPT-5Language ModelOpenAIRealtime

Properties

Name Type Description
id string A unique identifier for the chat completion, prefixed with 'chatcmpl-'
object string The object type, which is always 'chat.completion'
created integer The Unix timestamp (in seconds) of when the chat completion was created
model string The model used for the chat completion (e.g., 'gpt-4o-2024-08-06')
choices array A list of chat completion choices. Can be more than one if n is greater than 1.
usage object Usage statistics for the completion request
system_fingerprint string Fingerprint representing the backend configuration the model runs with. Can be used with the seed parameter to understand when backend changes have been made.
service_tier string The service tier used for processing the request
View JSON Schema on GitHub

JSON Schema

chatgpt-chat-completion-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platform.openai.com/schemas/chat-completion.json",
  "title": "ChatGPT Chat Completion",
  "description": "Schema for an OpenAI Chat Completion response object. Represents a chat completion generated by the model, including the generated message choices, token usage, and metadata.",
  "type": "object",
  "required": ["id", "object", "created", "model", "choices"],
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier for the chat completion, prefixed with 'chatcmpl-'",
      "pattern": "^chatcmpl-"
    },
    "object": {
      "type": "string",
      "description": "The object type, which is always 'chat.completion'",
      "const": "chat.completion"
    },
    "created": {
      "type": "integer",
      "description": "The Unix timestamp (in seconds) of when the chat completion was created",
      "minimum": 0
    },
    "model": {
      "type": "string",
      "description": "The model used for the chat completion (e.g., 'gpt-4o-2024-08-06')",
      "minLength": 1
    },
    "choices": {
      "type": "array",
      "description": "A list of chat completion choices. Can be more than one if n is greater than 1.",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/Choice"
      }
    },
    "usage": {
      "$ref": "#/$defs/Usage",
      "description": "Usage statistics for the completion request"
    },
    "system_fingerprint": {
      "type": "string",
      "description": "Fingerprint representing the backend configuration the model runs with. Can be used with the seed parameter to understand when backend changes have been made.",
      "nullable": true
    },
    "service_tier": {
      "type": "string",
      "description": "The service tier used for processing the request",
      "nullable": true
    }
  },
  "$defs": {
    "Choice": {
      "type": "object",
      "description": "A single completion choice generated by the model",
      "required": ["index", "message", "finish_reason"],
      "properties": {
        "index": {
          "type": "integer",
          "description": "The index of the choice in the list of choices",
          "minimum": 0
        },
        "message": {
          "$ref": "#/$defs/AssistantMessage",
          "description": "A chat completion message generated by the model"
        },
        "finish_reason": {
          "type": "string",
          "description": "The reason the model stopped generating tokens",
          "enum": ["stop", "length", "tool_calls", "content_filter"],
          "nullable": true
        },
        "logprobs": {
          "$ref": "#/$defs/Logprobs",
          "description": "Log probability information for the choice",
          "nullable": true
        }
      }
    },
    "AssistantMessage": {
      "type": "object",
      "description": "A message generated by the model in response to the conversation",
      "required": ["role"],
      "properties": {
        "role": {
          "type": "string",
          "description": "The role of the author of this message",
          "const": "assistant"
        },
        "content": {
          "type": "string",
          "description": "The contents of the message",
          "nullable": true
        },
        "tool_calls": {
          "type": "array",
          "description": "The tool calls generated by the model, such as function calls",
          "items": {
            "$ref": "#/$defs/ToolCall"
          }
        },
        "refusal": {
          "type": "string",
          "description": "The refusal message generated by the model if it declines to respond",
          "nullable": true
        },
        "audio": {
          "$ref": "#/$defs/AudioOutput",
          "description": "Audio response from the model when audio output is requested",
          "nullable": true
        }
      }
    },
    "ToolCall": {
      "type": "object",
      "description": "A tool call generated by the model",
      "required": ["id", "type", "function"],
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the tool call"
        },
        "type": {
          "type": "string",
          "description": "The type of the tool. Currently, only 'function' is supported.",
          "const": "function"
        },
        "function": {
          "$ref": "#/$defs/FunctionCall",
          "description": "The function that the model called"
        }
      }
    },
    "FunctionCall": {
      "type": "object",
      "description": "The function that the model called",
      "required": ["name", "arguments"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the function to call",
          "maxLength": 64
        },
        "arguments": {
          "type": "string",
          "description": "The arguments to call the function with, as generated by the model in JSON format"
        }
      }
    },
    "AudioOutput": {
      "type": "object",
      "description": "Audio output from the model",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for the audio response"
        },
        "data": {
          "type": "string",
          "description": "Base64-encoded audio data"
        },
        "expires_at": {
          "type": "integer",
          "description": "Unix timestamp for when the audio expires"
        },
        "transcript": {
          "type": "string",
          "description": "Transcript of the audio"
        }
      }
    },
    "Logprobs": {
      "type": "object",
      "description": "Log probability information for the completion",
      "properties": {
        "content": {
          "type": "array",
          "description": "A list of message content tokens with log probability information",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/TokenLogprob"
          }
        },
        "refusal": {
          "type": "array",
          "description": "A list of refusal message tokens with log probability information",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/TokenLogprob"
          }
        }
      }
    },
    "TokenLogprob": {
      "type": "object",
      "description": "Token with its associated log probability information",
      "required": ["token", "logprob", "bytes"],
      "properties": {
        "token": {
          "type": "string",
          "description": "The token string"
        },
        "logprob": {
          "type": "number",
          "description": "The log probability of this token"
        },
        "bytes": {
          "type": "array",
          "description": "A list of integers representing the UTF-8 bytes of the token",
          "nullable": true,
          "items": {
            "type": "integer"
          }
        },
        "top_logprobs": {
          "type": "array",
          "description": "List of the most likely tokens and their log probabilities at this position",
          "items": {
            "type": "object",
            "required": ["token", "logprob", "bytes"],
            "properties": {
              "token": {
                "type": "string"
              },
              "logprob": {
                "type": "number"
              },
              "bytes": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "Usage": {
      "type": "object",
      "description": "Token usage statistics for the completion request",
      "required": ["prompt_tokens", "completion_tokens", "total_tokens"],
      "properties": {
        "prompt_tokens": {
          "type": "integer",
          "description": "Number of tokens in the prompt",
          "minimum": 0
        },
        "completion_tokens": {
          "type": "integer",
          "description": "Number of tokens in the generated completion",
          "minimum": 0
        },
        "total_tokens": {
          "type": "integer",
          "description": "Total number of tokens used in the request (prompt + completion)",
          "minimum": 0
        },
        "completion_tokens_details": {
          "type": "object",
          "description": "Breakdown of completion token usage",
          "properties": {
            "reasoning_tokens": {
              "type": "integer",
              "description": "Tokens generated by the model for internal reasoning",
              "minimum": 0
            },
            "accepted_prediction_tokens": {
              "type": "integer",
              "description": "Tokens from a prediction that appeared in the completion",
              "minimum": 0
            },
            "rejected_prediction_tokens": {
              "type": "integer",
              "description": "Tokens from a prediction that did not appear in the completion",
              "minimum": 0
            }
          }
        },
        "prompt_tokens_details": {
          "type": "object",
          "description": "Breakdown of prompt token usage",
          "properties": {
            "cached_tokens": {
              "type": "integer",
              "description": "Number of cached prompt tokens",
              "minimum": 0
            },
            "audio_tokens": {
              "type": "integer",
              "description": "Number of audio tokens in the prompt",
              "minimum": 0
            }
          }
        }
      }
    },
    "Message": {
      "type": "object",
      "description": "A message in a chat conversation used as input to the model",
      "required": ["role"],
      "properties": {
        "role": {
          "type": "string",
          "description": "The role of the message author",
          "enum": ["system", "user", "assistant", "tool"]
        },
        "content": {
          "description": "The contents of the message, either a string or an array of content parts",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ContentPart"
              }
            }
          ],
          "nullable": true
        },
        "name": {
          "type": "string",
          "description": "An optional name for the participant to differentiate between participants of the same role"
        },
        "tool_calls": {
          "type": "array",
          "description": "Tool calls generated by the model (assistant messages only)",
          "items": {
            "$ref": "#/$defs/ToolCall"
          }
        },
        "tool_call_id": {
          "type": "string",
          "description": "The ID of the tool call this message responds to (tool messages only)"
        },
        "refusal": {
          "type": "string",
          "description": "The refusal message generated by the model",
          "nullable": true
        }
      }
    },
    "ContentPart": {
      "type": "object",
      "description": "A content part within a multi-part message, supporting text and image inputs",
      "required": ["type"],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of content part",
          "enum": ["text", "image_url", "input_audio"]
        },
        "text": {
          "type": "string",
          "description": "The text content (when type is 'text')"
        },
        "image_url": {
          "type": "object",
          "description": "The image URL object (when type is 'image_url')",
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "description": "The URL of the image or base64-encoded image data"
            },
            "detail": {
              "type": "string",
              "description": "The detail level of the image",
              "enum": ["auto", "low", "high"],
              "default": "auto"
            }
          },
          "required": ["url"]
        },
        "input_audio": {
          "type": "object",
          "description": "The audio input object (when type is 'input_audio')",
          "properties": {
            "data": {
              "type": "string",
              "description": "Base64-encoded audio data"
            },
            "format": {
              "type": "string",
              "description": "The format of the encoded audio data",
              "enum": ["wav", "mp3"]
            }
          },
          "required": ["data", "format"]
        }
      }
    },
    "Tool": {
      "type": "object",
      "description": "A tool available for the model to call",
      "required": ["type", "function"],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the tool",
          "const": "function"
        },
        "function": {
          "$ref": "#/$defs/FunctionDefinition",
          "description": "The function definition"
        }
      }
    },
    "FunctionDefinition": {
      "type": "object",
      "description": "Definition of a function that the model may call",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the function",
          "maxLength": 64,
          "pattern": "^[a-zA-Z0-9_-]+$"
        },
        "description": {
          "type": "string",
          "description": "A description of what the function does"
        },
        "parameters": {
          "type": "object",
          "description": "The parameters the function accepts, described as a JSON Schema object"
        },
        "strict": {
          "type": "boolean",
          "description": "Whether to enable strict schema adherence when generating the function call",
          "default": false
        }
      }
    }
  }
}