{
 "spec_version": 1,
 "model": "openai/gpt-6-sol-pro",
 "type": "chat",
 "input_modalities": [
  "text",
  "image",
  "file"
 ],
 "output_modalities": [
  "text"
 ],
 "context_window": 1050000,
 "max_output_tokens": 128000,
 "endpoint": {
  "method": "POST",
  "path": "/v1/chat/completions"
 },
 "also_on": [
  "/v1/responses",
  "/v1/messages"
 ],
 "parameters": [
  {
   "name": "model",
   "type": "string",
   "required": true,
   "description": "This model's ID."
  },
  {
   "name": "messages",
   "type": "array",
   "required": true,
   "description": "The conversation so far: objects with a `role` (`system`, `user`, `assistant` or `tool`) and a `content`, a string or a list of content parts: text, and images, video, audio or files on models that take them."
  },
  {
   "name": "stream",
   "type": "boolean",
   "default": false,
   "description": "Send the answer as server-sent events as it is written."
  },
  {
   "name": "stream_options",
   "type": "object",
   "description": "With `stream`: `{\"include_usage\": true}` adds a last event with the token counts."
  },
  {
   "name": "max_tokens",
   "type": "integer",
   "minimum": 1,
   "description": "The most tokens to write, reasoning included. `max_completion_tokens` is accepted as the same thing.",
   "maximum": 128000
  },
  {
   "name": "seed",
   "type": "integer",
   "description": "Ask for the same answer to the same request (best effort)."
  },
  {
   "name": "response_format",
   "type": "object",
   "description": "`{\"type\": \"json_object\"}` for JSON output, or `{\"type\": \"json_schema\", \"json_schema\": {\"name\": ..., \"schema\": {...}}}` for output that matches your schema.",
   "types": [
    "json_object",
    "json_schema"
   ]
  },
  {
   "name": "tools",
   "type": "array",
   "description": "Functions the model may call: `{\"type\": \"function\", \"function\": {\"name\", \"description\", \"parameters\"}}`."
  },
  {
   "name": "tool_choice",
   "type": [
    "string",
    "object"
   ],
   "description": "`auto` (default), `none`, `required`, or `{\"type\": \"function\", \"function\": {\"name\": ...}}`."
  },
  {
   "name": "parallel_tool_calls",
   "type": "boolean",
   "description": "`false` asks for at most one tool call per turn."
  },
  {
   "name": "reasoning_effort",
   "type": "string",
   "description": "How much the model thinks before answering. `none` no reasoning; `low` less reasoning, faster; `medium` balanced; `high` more reasoning, slower; `xhigh` more than high; `max` the most reasoning.",
   "enum": [
    "none",
    "low",
    "medium",
    "high",
    "xhigh",
    "max"
   ],
   "default": "medium"
  },
  {
   "name": "user",
   "type": "string",
   "description": "Your own ID for the end user, for your records."
  }
 ],
 "model_parameters": [],
 "content_types": [
  {
   "type": "text",
   "description": "Text.",
   "example": {
    "type": "text",
    "text": "Describe this."
   },
   "fields": [
    {
     "name": "text",
     "type": "string",
     "required": true,
     "description": "The text."
    }
   ]
  },
  {
   "type": "image_url",
   "description": "An image, as a public https:// URL or a data URL.",
   "example": {
    "type": "image_url",
    "image_url": {
     "url": "https://example.com/photo.jpg"
    }
   },
   "fields": [
    {
     "name": "image_url.url",
     "type": "string",
     "required": true,
     "description": "https:// URL or `data:image/...;base64,...`."
    }
   ]
  },
  {
   "type": "file",
   "description": "A document such as a PDF, by URL or as base64.",
   "example": {
    "type": "file",
    "file": {
     "file_data": "data:application/pdf;base64,...",
     "filename": "report.pdf"
    }
   },
   "fields": [
    {
     "name": "file.file_data",
     "type": "string",
     "required": true,
     "description": "A data URL or an https:// URL."
    }
   ]
  }
 ],
 "response": {
  "fields": [
   {
    "name": "id",
    "type": "string",
    "description": "The request's ID."
   },
   {
    "name": "choices[].message.content",
    "type": "string",
    "description": "The answer."
   },
   {
    "name": "choices[].message.reasoning_content",
    "type": "string",
    "description": "The model's reasoning, on models that return it."
   },
   {
    "name": "choices[].message.tool_calls",
    "type": "array",
    "description": "The tools the model wants called, with JSON arguments."
   },
   {
    "name": "choices[].finish_reason",
    "type": "string",
    "description": "`stop`, `length` (hit max_tokens), `tool_calls` or `content_filter`."
   },
   {
    "name": "usage.prompt_tokens",
    "type": "integer",
    "description": "Input tokens, media included."
   },
   {
    "name": "usage.completion_tokens",
    "type": "integer",
    "description": "Output tokens, reasoning included."
   },
   {
    "name": "usage.prompt_tokens_details.cached_tokens",
    "type": "integer",
    "description": "Input tokens read from the prompt cache."
   },
   {
    "name": "usage.completion_tokens_details.reasoning_tokens",
    "type": "integer",
    "description": "Output tokens spent reasoning."
   }
  ],
  "example": {
   "id": "chatcmpl-...",
   "object": "chat.completion",
   "created": 1792000000,
   "model": "openai/gpt-6-sol-pro",
   "choices": [
    {
     "index": 0,
     "message": {
      "role": "assistant",
      "content": "...",
      "reasoning_content": null,
      "tool_calls": null
     },
     "finish_reason": "stop"
    }
   ],
   "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 20,
    "total_tokens": 32,
    "prompt_tokens_details": {
     "cached_tokens": 0
    },
    "completion_tokens_details": {
     "reasoning_tokens": 0
    }
   }
  },
  "streaming": "With `stream: true`, `chat.completion.chunk` events carry `choices[].delta`; the stream ends with `data: [DONE]`."
 },
 "examples": [
  {
   "title": "Basic",
   "request": {
    "model": "openai/gpt-6-sol-pro",
    "messages": [
     {
      "role": "user",
      "content": "Write a haiku about the ocean."
     }
    ]
   }
  },
  {
   "title": "Image input",
   "request": {
    "model": "openai/gpt-6-sol-pro",
    "messages": [
     {
      "role": "user",
      "content": [
       {
        "type": "text",
        "text": "What is in this image?"
       },
       {
        "type": "image_url",
        "image_url": {
         "url": "https://example.com/photo.jpg"
        }
       }
      ]
     }
    ]
   }
  }
 ],
 "input_schema": {
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": [
   "model",
   "messages"
  ],
  "properties": {
   "model": {
    "type": "string",
    "description": "This model's ID."
   },
   "messages": {
    "type": "array",
    "description": "The conversation so far: objects with a `role` (`system`, `user`, `assistant` or `tool`) and a `content`, a string or a list of content parts: text, and images, video, audio or files on models that take them."
   },
   "stream": {
    "type": "boolean",
    "description": "Send the answer as server-sent events as it is written.",
    "default": false
   },
   "stream_options": {
    "type": "object",
    "description": "With `stream`: `{\"include_usage\": true}` adds a last event with the token counts."
   },
   "max_tokens": {
    "type": "integer",
    "description": "The most tokens to write, reasoning included. `max_completion_tokens` is accepted as the same thing.",
    "minimum": 1,
    "maximum": 128000
   },
   "seed": {
    "type": "integer",
    "description": "Ask for the same answer to the same request (best effort)."
   },
   "response_format": {
    "type": "object",
    "description": "`{\"type\": \"json_object\"}` for JSON output, or `{\"type\": \"json_schema\", \"json_schema\": {\"name\": ..., \"schema\": {...}}}` for output that matches your schema."
   },
   "tools": {
    "type": "array",
    "description": "Functions the model may call: `{\"type\": \"function\", \"function\": {\"name\", \"description\", \"parameters\"}}`."
   },
   "tool_choice": {
    "type": [
     "string",
     "object"
    ],
    "description": "`auto` (default), `none`, `required`, or `{\"type\": \"function\", \"function\": {\"name\": ...}}`."
   },
   "parallel_tool_calls": {
    "type": "boolean",
    "description": "`false` asks for at most one tool call per turn."
   },
   "reasoning_effort": {
    "type": "string",
    "description": "How much the model thinks before answering. `none` no reasoning; `low` less reasoning, faster; `medium` balanced; `high` more reasoning, slower; `xhigh` more than high; `max` the most reasoning.",
    "enum": [
     "none",
     "low",
     "medium",
     "high",
     "xhigh",
     "max"
    ],
    "default": "medium"
   },
   "user": {
    "type": "string",
    "description": "Your own ID for the end user, for your records."
   }
  },
  "$defs": {
   "content_part": {
    "oneOf": [
     {
      "type": "object",
      "properties": {
       "type": {
        "const": "text"
       },
       "text": {
        "type": "string",
        "description": "The text."
       }
      },
      "required": [
       "type"
      ]
     },
     {
      "type": "object",
      "properties": {
       "type": {
        "const": "image_url"
       },
       "image_url": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string",
          "description": "https:// URL or `data:image/...;base64,...`."
         }
        }
       }
      },
      "required": [
       "type"
      ]
     },
     {
      "type": "object",
      "properties": {
       "type": {
        "const": "file"
       },
       "file": {
        "type": "object",
        "properties": {
         "file_data": {
          "type": "string",
          "description": "A data URL or an https:// URL."
         }
        }
       }
      },
      "required": [
       "type"
      ]
     }
    ]
   }
  }
 }
}
