| openapi: 3.0.0 | |
| info: | |
| title: Streaming Chat Completion API with Multimedia Support | |
| version: 1.0.0 | |
| description: API for streaming chat completions with support for text, image, and audio content | |
| paths: | |
| /chat/completions: | |
| post: | |
| summary: Create a streaming chat completion | |
| description: Streams a chat completion response | |
| operationId: createChatCompletion | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/ChatCompletionRequest" | |
| responses: | |
| "200": | |
| description: Successful response | |
| content: | |
| application/json: | |
| schema: | |
| oneOf: | |
| - $ref: "#/components/schemas/ChatCompletionResponse" | |
| - $ref: "#/components/schemas/ChatCompletionChunk" | |
| x-stream: true | |
| components: | |
| schemas: | |
| ChatCompletionRequest: | |
| type: object | |
| required: | |
| - messages | |
| properties: | |
| context: | |
| type: object | |
| model: | |
| type: string | |
| example: "gpt-4o" | |
| messages: | |
| type: array | |
| items: | |
| oneOf: | |
| - $ref: "#/components/schemas/SystemMessage" | |
| - $ref: "#/components/schemas/UserMessage" | |
| - $ref: "#/components/schemas/AssistantMessage" | |
| - $ref: "#/components/schemas/ToolMessage" | |
| response_format: | |
| $ref: "#/components/schemas/ResponseFormat" | |
| modalities: | |
| type: array | |
| items: | |
| type: string | |
| enum: [text, audio] | |
| default: [text] | |
| audio: | |
| type: object | |
| properties: | |
| voice: | |
| type: string | |
| tools: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/Tool" | |
| tool_choice: | |
| oneOf: | |
| - type: string | |
| enum: [auto, none, required] | |
| - type: object | |
| properties: | |
| type: | |
| type: string | |
| enum: [function] | |
| function: | |
| type: object | |
| parallel_tool_calls: | |
| type: boolean | |
| default: true | |
| stream: | |
| type: boolean | |
| default: true | |
| ssml_enabled: | |
| type: boolean | |
| default: false | |
| SystemMessage: | |
| type: object | |
| required: | |
| - role | |
| - content | |
| properties: | |
| name: | |
| type: string | |
| role: | |
| type: string | |
| enum: [system] | |
| content: | |
| oneOf: | |
| - type: string | |
| - type: array | |
| items: | |
| type: string | |
| UserMessage: | |
| type: object | |
| required: | |
| - role | |
| - content | |
| properties: | |
| name: | |
| type: string | |
| role: | |
| type: string | |
| enum: [user] | |
| content: | |
| oneOf: | |
| - type: string | |
| - type: array | |
| items: | |
| oneOf: | |
| - $ref: "#/components/schemas/TextContent" | |
| - $ref: "#/components/schemas/ImageContent" | |
| - $ref: "#/components/schemas/AudioContent" | |
| AssistantMessage: | |
| type: object | |
| required: | |
| - role | |
| - content | |
| properties: | |
| name: | |
| type: string | |
| role: | |
| type: string | |
| enum: [system] | |
| audio: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| content: | |
| oneOf: | |
| - type: string | |
| - type: array | |
| items: | |
| $ref: "#/components/schemas/TextContent" | |
| tool_calls: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| type: | |
| type: string | |
| enum: [function] | |
| function: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| arguments: | |
| type: string | |
| ToolMessage: | |
| type: object | |
| required: | |
| - role | |
| - content | |
| - tool_call_id | |
| properties: | |
| role: | |
| type: string | |
| enum: [tool] | |
| content: | |
| oneOf: | |
| - type: string | |
| - type: array | |
| items: | |
| type: string | |
| tool_call_id: | |
| type: string | |
| TextContent: | |
| type: object | |
| required: | |
| - type | |
| - text | |
| properties: | |
| type: | |
| type: string | |
| enum: [text] | |
| text: | |
| type: string | |
| ImageContent: | |
| type: object | |
| required: | |
| - type | |
| - image_url | |
| properties: | |
| type: | |
| type: string | |
| enum: [image_url] | |
| image_url: | |
| type: string | |
| format: uri | |
| AudioContent: | |
| type: object | |
| required: | |
| - type | |
| - input_audio | |
| properties: | |
| type: | |
| type: string | |
| enum: [input_audio] | |
| input_audio: | |
| type: object | |
| properties: | |
| data: | |
| type: string | |
| format: | |
| type: string | |
| Tool: | |
| type: object | |
| properties: | |
| type: | |
| type: string | |
| enum: [function] | |
| function: | |
| type: object | |
| required: | |
| - name | |
| properties: | |
| name: | |
| type: string | |
| description: | |
| type: string | |
| parameters: | |
| type: object | |
| strict: | |
| type: boolean | |
| default: false | |
| ResponseFormat: | |
| type: object | |
| properties: | |
| type: | |
| type: string | |
| enum: [json_schema] | |
| json_schema: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| schema: | |
| type: object | |
| ChatCompletionResponse: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| object: | |
| type: string | |
| created: | |
| type: integer | |
| model: | |
| type: string | |
| usage: | |
| $ref: "#/components/schemas/Usage" | |
| choices: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/Choice" | |
| ChatCompletionChunk: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| object: | |
| type: string | |
| created: | |
| type: integer | |
| model: | |
| type: string | |
| usage: | |
| $ref: "#/components/schemas/Usage" | |
| choices: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/DeltaChoice" | |
| Usage: | |
| type: object | |
| properties: | |
| completion_tokens: | |
| type: integer | |
| prompt_tokens: | |
| type: integer | |
| total_tokens: | |
| type: integer | |
| completion_tokens_details: | |
| type: object | |
| properties: | |
| accepted_prediction_tokens: | |
| type: integer | |
| audio_tokens: | |
| type: integer | |
| reasoning_tokens: | |
| type: integer | |
| rejected_prediction_tokens: | |
| type: integer | |
| prompt_tokens_details: | |
| type: object | |
| properties: | |
| audio_tokens: | |
| type: integer | |
| cached_tokens: | |
| type: integer | |
| Choice: | |
| type: object | |
| properties: | |
| message: | |
| $ref: "#/components/schemas/ResponseMessage" | |
| index: | |
| type: integer | |
| finish_reason: | |
| type: string | |
| DeltaChoice: | |
| type: object | |
| properties: | |
| delta: | |
| $ref: "#/components/schemas/ResponseMessage" | |
| index: | |
| type: integer | |
| finish_reason: | |
| type: string | |
| Delta: | |
| type: object | |
| properties: | |
| content: | |
| type: string | |
| ResponseMessage: | |
| type: object | |
| properties: | |
| content: | |
| type: string | |
| refusal: | |
| type: string | |
| tool_calls: | |
| $ref: "#/components/schemas/ToolCall" | |
| role: | |
| type: string | |
| audio: | |
| $ref: "#/components/schemas/Audio" | |
| ToolCall: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| type: | |
| type: string | |
| enum: [function] | |
| function: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| arguments: | |
| type: string | |
| Audio: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| expires_at: | |
| type: integer | |
| data: | |
| type: string | |
| transcript: | |
| type: string | |