openapi: 3.0.0 info: title: Portkey Analytics > Graphs Prompts API description: The Portkey REST API. Please see https://portkey.ai/docs/api-reference for more details. version: 2.0.0 termsOfService: https://portkey.ai/terms contact: name: Portkey Developer Forum url: https://portkey.wiki/community license: name: MIT url: https://github.com/Portkey-AI/portkey-openapi/blob/master/LICENSE servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint security: - Portkey-Key: [] tags: - name: Prompts description: Given a prompt template ID and variables, will run the saved prompt template and return a response. paths: /prompts: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL post: summary: Create a new prompt operationId: createPrompt tags: - Prompts security: - Portkey-Key: [] requestBody: required: true content: application/json: schema: type: object required: - name - collection_id - string - parameters - virtual_key properties: name: type: string collection_id: type: string description: UUID or slug of the collection string: type: string description: Prompt template in string format parameters: type: object description: Parameters for the prompt functions: type: array description: Functions for the prompt items: type: object tools: type: array description: Tools for the prompt items: type: object tool_choice: type: object description: Tool Choice for the prompt model: type: string description: The model to use for the prompt virtual_key: type: string description: The virtual key to use for the prompt version_description: type: string description: The description of the prompt version template_metadata: type: object description: Metadata for the prompt responses: '200': description: Prompt created successfully content: application/json: schema: type: object properties: id: type: string format: uuid slug: type: string version_id: type: string format: uuid object: type: string enum: - prompt '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '500': description: Server error get: summary: List prompts operationId: listPrompts tags: - Prompts security: - Portkey-Key: [] parameters: - name: collection_id in: query schema: type: string - name: workspace_id in: query schema: type: string - name: current_page in: query schema: type: integer - name: page_size in: query schema: type: integer - name: search in: query schema: type: string responses: '200': description: List of prompts content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PromptSummary' total: type: integer '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '500': description: Server error /prompts/{promptId}: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL get: summary: Get a prompt by ID or slug operationId: getPrompt tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string responses: '200': description: Prompt details content: application/json: schema: $ref: '#/components/schemas/Prompt' '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt not found '500': description: Server error put: summary: Update a prompt description: 'Update a prompt''s metadata and/or create a new version with updated template content. **Partial version updates:** Set `patch: true` to perform a partial update of version fields (`string`, `parameters`, `model`, `virtual_key`, `version_description`, `functions`, `tools`, `tool_choice`, `is_raw_template`, `prompt_metadata`). When enabled, any version fields omitted from the request are backfilled from the current latest version, allowing you to update only the fields you need. When `patch` is omitted or `false`, all version fields must be provided together (original strict validation). **Metadata-only updates:** Fields like `name`, `collection_id`, `version_description`, and `virtual_key` can always be updated independently without affecting versioning. ' operationId: updatePrompt tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: patch: type: boolean description: 'When `true`, enables partial version updates. Missing version fields (`string`, `parameters`, `model`) are backfilled from the current latest version, so you only need to provide the fields you want to change. When `false` or omitted, the original strict validation is preserved for backward compatibility. ' name: type: string collection_id: type: string string: type: string description: The prompt template string. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. parameters: type: object description: Model parameters (e.g. temperature, max_tokens). When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. model: type: string description: The model identifier. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. virtual_key: type: string description: The virtual key to associate with this version. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. version_description: type: string description: A human-readable description for this version. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. functions: type: array items: type: object description: Function definitions available to the model. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. tools: type: array items: type: object description: Tool definitions available to the model. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. tool_choice: type: object description: Controls which tool the model uses. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. is_raw_template: type: integer enum: - 0 - 1 description: Whether the template string is raw (1) or processed (0). When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. prompt_metadata: type: object description: Additional metadata for the prompt version. When `patch` is `true`, this field is optional and will be inherited from the current latest version if omitted. responses: '200': description: Prompt updated successfully content: application/json: schema: type: object properties: id: type: string format: uuid slug: type: string prompt_version_id: type: string format: uuid '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt not found '500': description: Server error delete: summary: Delete a prompt operationId: deletePrompt tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string responses: '200': description: Prompt deleted successfully content: application/json: schema: type: object properties: {} '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt not found '500': description: Server error /prompts/{promptId}/versions: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL get: summary: Get all versions of a prompt operationId: getPromptVersions tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string responses: '200': description: List of prompt versions content: application/json: schema: type: array items: $ref: '#/components/schemas/PromptVersionSummary' '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt not found '500': description: Server error /prompts/{promptId}/versions/{versionId}: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL get: summary: Get a specific version of a prompt operationId: getPromptByVersion tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string - name: versionId in: path required: true schema: type: string format: uuid responses: '200': description: Prompt version details content: application/json: schema: $ref: '#/components/schemas/Prompt' '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt version not found '500': description: Server error put: summary: Update a specific version of a prompt description: 'Updates metadata for a specific prompt version. **This endpoint only supports updating the `label_id` field.** Prompt versions are immutable — their `string`, `parameters`, and `model` content cannot be changed after creation. To update prompt content, use `PUT /prompts/{promptId}` which creates a new version with the updated content. ' operationId: updatePromptVersion tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string - name: versionId in: path required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: label_id: type: string format: uuid description: The label to assign to this version. responses: '200': description: Prompt version updated successfully content: application/json: schema: type: object properties: {} '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt version not found '500': description: Server error /prompts/{promptId}/makeDefault: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL put: summary: Set a version as the default for a prompt operationId: updatePromptDefault tags: - Prompts security: - Portkey-Key: [] parameters: - name: promptId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object required: - version properties: version: type: number description: Version Number to set as default responses: '200': description: Default version set successfully content: application/json: schema: type: object properties: {} '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Prompt or version not found '500': description: Server error /prompts/{promptId}/completions: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_GATEWAY_URL description: Self-Hosted Gateway URL post: operationId: createPromptCompletion tags: - Prompts summary: Prompts Completions description: 'Execute your saved prompt templates on Portkey ' parameters: - in: path name: promptId required: true schema: type: string description: The unique identifier of the prompt template to use requestBody: required: true content: application/json: schema: allOf: - type: object required: - variables description: 'Note: Although hyperparameters are shown grouped here (like messages, max_completion_tokens, temperature, etc.), they should only be passed at the root level, alongside ''variables'' and ''stream''. The `max_tokens` parameter is deprecated — use `max_completion_tokens` instead. ' properties: variables: type: object description: Variables to substitute in the prompt template stream: type: boolean default: false description: 'Default: False. Set to True if you want to stream the response' hyperparameters: oneOf: - title: Chat Completions $ref: '#/components/schemas/CreateChatCompletionRequest' - title: Completions $ref: '#/components/schemas/CreateCompletionRequest' description: '**Note**: All hyperparameters are optional. Pass them at the root level, and not nested under `hyperparameters`. Their grouping here is for educational purposes only. ' responses: '200': description: Successful completion response content: application/json: schema: type: object properties: status: type: string description: Response status headers: type: object description: Response headers body: oneOf: - title: Chat Completions $ref: '#/components/schemas/CreateChatCompletionResponse' - title: Completions $ref: '#/components/schemas/CreateCompletionResponse' x-code-samples: - lang: cURL label: Default source: "curl -X POST \"https://api.portkey.ai/v1/prompts/YOUR_PROMPT_ID/completions\" \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -d '{\n \"variables\": {\n \"user_input\": \"Hello world\"\n },\n \"max_completion_tokens\": 250,\n \"presence_penalty\": 0.2\n }'\n" - lang: Python label: Default source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key=\"PORTKEY_API_KEY\"\n)\n\ncompletion = client.prompts.completions.create(\n prompt_id=\"YOUR_PROMPT_ID\",\n variables={\n \"user_input\": \"Hello world\"\n },\n max_completion_tokens=250,\n presence_penalty=0.2\n)\n\nprint(completion)\n" - lang: JavaScript label: Default source: "import Portkey from 'portkey-ai';\n\nconst portkey = new Portkey({\n apiKey: 'PORTKEY_API_KEY'\n});\n\nconst completion = await portkey.prompts.completions.create({\n promptId: \"YOUR_PROMPT_ID\",\n variables: {\n user_input: \"Hello world\"\n },\n max_completion_tokens: 250,\n presence_penalty: 0.2\n});\n\nconsole.log(completion);\n" - lang: curl label: Self-Hosted source: "curl -X POST \"SELF_HOSTED_GATEWAY_URL/prompts/YOUR_PROMPT_ID/completions\" \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -d '{\n \"variables\": {\n \"user_input\": \"Hello world\"\n },\n \"max_completion_tokens\": 250,\n \"presence_penalty\": 0.2\n }'\n" - lang: python label: Self-Hosted source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key=\"PORTKEY_API_KEY\",\n base_url=\"SELF_HOSTED_GATEWAY_URL\"\n)\n\ncompletion = client.prompts.completions.create(\n prompt_id=\"YOUR_PROMPT_ID\",\n variables={\n \"user_input\": \"Hello world\"\n },\n max_completion_tokens=250,\n presence_penalty=0.2\n)\n\nprint(completion)\n" - lang: javascript label: Self-Hosted source: "import Portkey from 'portkey-ai';\n\nconst portkey = new Portkey({\n apiKey: 'PORTKEY_API_KEY',\n baseURL: 'SELF_HOSTED_GATEWAY_URL'\n});\n\nconst completion = await portkey.prompts.completions.create({\n promptId: \"YOUR_PROMPT_ID\",\n variables: {\n user_input: \"Hello world\"\n },\n max_completion_tokens: 250,\n presence_penalty: 0.2\n});\n\nconsole.log(completion);\n" /prompts/{promptId}/render: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_GATEWAY_URL description: Self-Hosted Gateway URL post: operationId: createPromptRender tags: - Prompts summary: Prompts Render description: 'Renders a prompt template with its variable values filled in ' parameters: - in: path name: promptId required: true schema: type: string description: The unique identifier of the prompt template to render requestBody: required: true content: application/json: schema: allOf: - type: object required: - variables description: 'Note: Although hyperparameters are shown grouped here (like messages, max_completion_tokens, temperature, etc.), they should only be passed at the root level, alongside ''variables'' and ''stream''. The `max_tokens` parameter is deprecated — use `max_completion_tokens` instead. ' properties: variables: type: object description: Variables to substitute in the prompt template hyperparameters: oneOf: - title: Chat Completions $ref: '#/components/schemas/CreateChatCompletionRequest' - title: Completions $ref: '#/components/schemas/CreateCompletionRequest' description: '**Note**: All hyperparameters are optional. Pass them at the root level, and not nested under `hyperparameters`. Their grouping here is for educational purposes only. ' responses: '200': description: Successful rendered prompt content: application/json: schema: $ref: '#/components/schemas/PromptRenderResponse' x-code-samples: - lang: cURL label: Default source: "curl -X POST \"https://api.portkey.ai/v1/prompts/YOUR_PROMPT_ID/render\" \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -d '{\n \"variables\": {\n \"user_input\": \"Hello world\"\n },\n \"max_completion_tokens\": 250,\n \"presence_penalty\": 0.2\n }'\n" - lang: Python label: Default source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key=\"PORTKEY_API_KEY\"\n)\n\ncompletion = client.prompts.render(\n prompt_id=\"YOUR_PROMPT_ID\",\n variables={\n \"user_input\": \"Hello world\"\n },\n max_completion_tokens=250,\n presence_penalty=0.2\n)\n\nprint(completion)\n" - lang: JavaScript label: Default source: "import Portkey from 'portkey-ai';\n\nconst portkey = new Portkey({\n apiKey: 'PORTKEY_API_KEY'\n});\n\nconst completion = await portkey.prompts.render({\n promptId: \"YOUR_PROMPT_ID\",\n variables: {\n user_input: \"Hello world\"\n },\n max_completion_tokens: 250,\n presence_penalty: 0.2\n});\n\nconsole.log(completion);\n" - lang: cURL label: Self-Hosted source: "curl -X POST \"SELF_HOSTED_GATEWAY_URL/prompts/YOUR_PROMPT_ID/render\" \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -d '{\n \"variables\": {\n \"user_input\": \"Hello world\"\n },\n \"max_completion_tokens\": 250,\n \"presence_penalty\": 0.2\n }'\n" - lang: Python label: Self-Hosted source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key=\"PORTKEY_API_KEY\",\n base_url=\"SELF_HOSTED_GATEWAY_URL\"\n)\n\ncompletion = client.prompts.render(\n prompt_id=\"YOUR_PROMPT_ID\",\n variables={\n \"user_input\": \"Hello world\"\n },\n max_completion_tokens=250,\n presence_penalty=0.2\n)\n\nprint(completion)\n" - lang: JavaScript label: Self-Hosted source: "import Portkey from 'portkey-ai';\n\nconst portkey = new Portkey({\n apiKey: 'PORTKEY_API_KEY',\n baseUrl: 'SELF_HOSTED_GATEWAY_URL'\n});\n\nconst completion = await portkey.prompts.render({\n promptId: \"YOUR_PROMPT_ID\",\n variables: {\n user_input: \"Hello world\"\n },\n max_completion_tokens: 250,\n presence_penalty: 0.2\n});\n\nconsole.log(completion);\n" components: schemas: ChatCompletionToolChoiceOption: description: 'Controls which (if any) tool is called by the model. `none` means the model will not call any tool 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. Specifying a particular tool via `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool. `none` is the default when no tools are present. `auto` is the default if tools are present. ' oneOf: - type: string description: '`none` means the model will not call any tool 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. ' enum: - none - auto - required - $ref: '#/components/schemas/ChatCompletionNamedToolChoice' x-oaiExpandable: true ChatCompletionRequestAssistantMessage: type: object title: Assistant message properties: content: nullable: true type: string description: 'The contents of the assistant message. Required unless `tool_calls` or `function_call` is specified. ' role: type: string enum: - assistant description: The role of the messages author, in this case `assistant`. name: type: string description: An optional name for the participant. Provides the model information to differentiate between participants of the same role. 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 ChatCompletionRequestDeveloperMessage: type: object title: Developer message description: New role by OpenAI for select models. Must be explicitly used for models that support it. When used with incompatible models or providers, Portkey automatically converts it to a system role. properties: content: description: The contents of the Developer message. type: string role: type: string enum: - developer description: The role of the messages author, in this case `Developer`. 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 ChatCompletionRequestSystemMessage: type: object title: System message properties: content: description: The contents of the system message. type: string role: type: string enum: - system description: The role of the messages author, in this case `system`. 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 ChatCompletionTokenLogprob: type: object properties: token: &id001 description: The token. type: string logprob: &id002 description: The log probability of this token, if it is within the top 20 most likely tokens. Otherwise, the value `-9999.0` is used to signify that the token is very unlikely. type: number bytes: &id003 description: A list of integers representing the UTF-8 bytes representation of the token. Useful in instances where characters are represented by multiple tokens and their byte representations must be combined to generate the correct text representation. Can be `null` if there is no bytes representation for the token. type: array items: type: integer nullable: true top_logprobs: description: List of the most likely tokens and their log probability, at this token position. In rare cases, there may be fewer than the number of requested `top_logprobs` returned. type: array items: type: object properties: token: *id001 logprob: *id002 bytes: *id003 required: - token - logprob - bytes required: - token - logprob - bytes - top_logprobs CreateCompletionRequest: type: object properties: model: description: 'ID of the model to use. You can use the [List models](https://platform.openai.com/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](https://platform.openai.com/docs/models/overview) for descriptions of them. ' anyOf: - type: string - type: string enum: - gpt-3.5-turbo-instruct - davinci-002 - babbage-002 x-oaiTypeLabel: string prompt: description: 'The prompt(s) to generate completions for, encoded as a string, array of strings, array of tokens, or array of token arrays. Note that <|endoftext|> is the document separator that the model sees during training, so if a prompt is not specified the model will generate as if from the beginning of a new document. ' default: <|endoftext|> nullable: true oneOf: - type: string default: '' example: This is a test. - type: array items: type: string default: '' example: This is a test. - type: array minItems: 1 items: type: integer example: '[1212, 318, 257, 1332, 13]' - type: array minItems: 1 items: type: array minItems: 1 items: type: integer example: '[[1212, 318, 257, 1332, 13]]' best_of: type: integer default: 1 minimum: 0 maximum: 20 nullable: true description: 'Generates `best_of` completions server-side and returns the "best" (the one with the highest log probability per token). Results cannot be streamed. When used with `n`, `best_of` controls the number of candidate completions and `n` specifies how many to return – `best_of` must be greater than `n`. **Note:** Because this parameter generates many completions, it can quickly consume your token quota. Use carefully and ensure that you have reasonable settings for `max_tokens` and `stop`. ' echo: type: boolean default: false nullable: true description: 'Echo back the prompt in addition to the completion ' frequency_penalty: type: number default: 0 minimum: -2 maximum: 2 nullable: true description: 'Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model''s likelihood to repeat the same line verbatim. [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details) ' logit_bias: type: object x-oaiTypeLabel: map default: null nullable: true additionalProperties: type: integer description: 'Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object that maps tokens (specified by their token ID in the GPT tokenizer) to an associated bias value from -100 to 100. You can use this [tokenizer tool](https://platform.openai.com/tokenizer?view=bpe) to convert text to token IDs. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token. As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being generated. ' logprobs: type: integer minimum: 0 maximum: 5 default: null nullable: true description: 'Include the log probabilities on the `logprobs` most likely output tokens, as well the chosen tokens. For example, if `logprobs` is 5, the API will return a list of the 5 most likely tokens. The API will always return the `logprob` of the sampled token, so there may be up to `logprobs+1` elements in the response. The maximum value for `logprobs` is 5. ' max_tokens: type: integer minimum: 0 default: 16 example: 16 nullable: true description: 'The maximum number of [tokens](https://platform.openai.com/tokenizer?view=bpe) that can be generated in the completion. The token count of your prompt plus `max_tokens` cannot exceed the model''s context length. [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) for counting tokens. ' n: type: integer minimum: 1 maximum: 128 default: 1 example: 1 nullable: true description: 'How many completions to generate for each prompt. **Note:** Because this parameter generates many completions, it can quickly consume your token quota. Use carefully and ensure that you have reasonable settings for `max_tokens` and `stop`. ' presence_penalty: type: number default: 0 minimum: -2 maximum: 2 nullable: true description: 'Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model''s likelihood to talk about new topics. [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details) ' seed: type: integer minimum: -9223372036854775808 maximum: 9223372036854775807 nullable: true description: 'If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend. ' stop: description: 'Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence. ' default: null nullable: true oneOf: - type: string default: <|endoftext|> example: ' ' nullable: true - type: array minItems: 1 maxItems: 4 items: type: string example: '["\n"]' stream: description: 'Whether to stream back partial progress. If set, tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-UShttps://platform.openai.com/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions). ' type: boolean nullable: true default: false stream_options: $ref: '#/components/schemas/ChatCompletionStreamOptions' suffix: description: 'The suffix that comes after a completion of inserted text. This parameter is only supported for `gpt-3.5-turbo-instruct`. ' default: null nullable: true type: string example: test. temperature: type: number minimum: 0 maximum: 2 default: 1 example: 1 nullable: true 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. We generally recommend altering this or `top_p` but not both. ' 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. ' user: type: string example: user-1234 description: 'A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids). ' required: - model - prompt ParallelToolCalls: description: Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling/parallel-function-calling) during tool use. type: boolean default: true ChatCompletionRequestMessage: oneOf: - $ref: '#/components/schemas/ChatCompletionRequestSystemMessage' - $ref: '#/components/schemas/ChatCompletionRequestDeveloperMessage' - $ref: '#/components/schemas/ChatCompletionRequestUserMessage' - $ref: '#/components/schemas/ChatCompletionRequestAssistantMessage' - $ref: '#/components/schemas/ChatCompletionRequestToolMessage' - $ref: '#/components/schemas/ChatCompletionRequestFunctionMessage' x-oaiExpandable: true CreateChatCompletionRequest: type: object properties: messages: description: A list of messages comprising the conversation so far. [Example Python code](https://cookbook.openai.com/examples/how_to_format_inputs_to_chatgpt_models). type: array minItems: 1 items: $ref: '#/components/schemas/ChatCompletionRequestMessage' model: description: ID of the model to use. See the [model endpoint compatibility](https://platform.openai.com/docs/models/model-endpoint-compatibility) table for details on which models work with the Chat API. example: gpt-5 anyOf: - type: string - type: string enum: - gpt-5 - gpt-5-mini - gpt-5-nano - o4-mini - o3 - o3-mini - o1 - o1-mini - gpt-4o - gpt-4o-mini - gpt-4o-2024-05-13 - 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-0301 - gpt-3.5-turbo-0613 - gpt-3.5-turbo-1106 - gpt-3.5-turbo-0125 - gpt-3.5-turbo-16k-0613 x-oaiTypeLabel: string frequency_penalty: type: number default: 0 minimum: -2 maximum: 2 nullable: true description: 'Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model''s likelihood to repeat the same line verbatim. [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details) ' logit_bias: type: object x-oaiTypeLabel: map default: null nullable: true additionalProperties: type: integer description: 'Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token. ' logprobs: description: Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. type: boolean default: false nullable: true top_logprobs: description: An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. `logprobs` must be set to `true` if this parameter is used. type: integer minimum: 0 maximum: 20 nullable: true max_tokens: description: 'Deprecated in favor of `max_completion_tokens`. The maximum number of [tokens](https://platform.openai.com/tokenizer?view=bpe) that can be generated in the chat completion. This value can be used to control [costs](https://openai.com/api/pricing/) for text generated via API. **Supported models:** GPT-4o, GPT-4o-mini, GPT-4, GPT-4 Turbo, GPT-3.5 Turbo. **Not supported:** o-series reasoning models (o1, o3, o3-mini, o4-mini) and GPT-5 series — use `max_completion_tokens` instead. ' type: integer nullable: true deprecated: true max_completion_tokens: description: 'An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and [reasoning tokens](https://platform.openai.com/docs/guides/reasoning). **Supported models:** GPT-5 series, o-series reasoning models (o1, o3, o3-mini, o4-mini) — required. Also supported on GPT-4o, GPT-4o-mini, GPT-4, GPT-4 Turbo, GPT-3.5 Turbo as a replacement for `max_tokens`. ' type: integer nullable: true n: type: integer minimum: 1 maximum: 128 default: 1 example: 1 nullable: true description: How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep `n` as `1` to minimize costs. presence_penalty: type: number default: 0 minimum: -2 maximum: 2 nullable: true description: 'Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model''s likelihood to talk about new topics. [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details) ' response_format: type: object description: 'An object specifying the format that the model must output. Setting to `{ "type": "json_schema", "json_schema": {...} }`enables Structured Outputs which ensures the model will match your supplied JSON schema. Works across all the providers that support this functionality. [OpenAI & Azure OpenAI](/integrations/llms/openai/structured-outputs), [Gemini & Vertex AI](/integrations/llms/vertex-ai/controlled-generations). Setting to `{ "type": "json_object" }` enables the older JSON mode, which ensures the message the model generates is valid JSON. Using `json_schema` is preferred for models that support it. ' oneOf: - $ref: '#/components/schemas/ResponseFormatText' - $ref: '#/components/schemas/ResponseFormatJsonSchema' - $ref: '#/components/schemas/ResponseFormatJsonObject' seed: type: integer minimum: -9223372036854775808 maximum: 9223372036854775807 nullable: true description: 'This feature is in Beta. If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. Determinism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend. ' x-code-samples: beta: true stop: description: 'Up to 4 sequences where the API will stop generating further tokens. ' default: null oneOf: - type: string nullable: true - type: array minItems: 1 maxItems: 4 items: type: string stream: description: 'If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-UShttps://platform.openai.com/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) as they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions). ' type: boolean nullable: true default: false stream_options: $ref: '#/components/schemas/ChatCompletionStreamOptions' thinking: type: object nullable: true description: 'View the thinking/reasoning tokens as part of your response. Thinking models produce a long internal chain of thought before generating a response. Supported only for specific Claude models on Anthropic, Google Vertex AI, and AWS Bedrock. Requires setting `strict_openai_compliance = false` in your API call. ' properties: type: type: string enum: - enabled - disabled description: Enables or disables the thinking mode capability. default: disabled budget_tokens: type: integer description: 'The maximum number of tokens to allocate for the thinking process. A higher token budget allows for more thorough reasoning but may increase overall response time. ' minimum: 1 example: 2030 required: - type example: type: enabled budget_tokens: 2030 temperature: type: number minimum: 0 maximum: 2 default: 1 example: 1 nullable: true 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. We generally recommend altering this or `top_p` but not both. ' 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. ' tools: type: array description: 'A list of tools the model may call. Currently, only functions are supported as a tool. Use this to provide a list of functions the model may generate JSON inputs for. A max of 128 functions are supported. ' items: $ref: '#/components/schemas/ChatCompletionTool' tool_choice: $ref: '#/components/schemas/ChatCompletionToolChoiceOption' parallel_tool_calls: $ref: '#/components/schemas/ParallelToolCalls' user: type: string example: user-1234 description: 'A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids). ' function_call: deprecated: true description: 'Deprecated in favor of `tool_choice`. Controls which (if any) function is called by the model. `none` means the model will not call a function and instead generates a message. `auto` means the model can pick between generating a message or calling a function. Specifying a particular function via `{"name": "my_function"}` forces the model to call that function. `none` is the default when no functions are present. `auto` is the default if functions are present. ' oneOf: - type: string description: '`none` means the model will not call a function and instead generates a message. `auto` means the model can pick between generating a message or calling a function. ' enum: - none - auto - $ref: '#/components/schemas/ChatCompletionFunctionCallOption' x-oaiExpandable: true functions: deprecated: true description: 'Deprecated in favor of `tools`. A list of functions the model may generate JSON inputs for. ' type: array minItems: 1 maxItems: 128 items: $ref: '#/components/schemas/ChatCompletionFunctions' required: - model - messages CreateCompletionResponse: type: object description: 'Represents a completion response from the API. Note: both the streamed and non-streamed response objects share the same shape (unlike the chat endpoint). ' properties: id: type: string description: A unique identifier for the completion. choices: type: array description: The list of completion choices the model generated for the input prompt. items: type: object required: - finish_reason - index - logprobs - text properties: finish_reason: type: string description: 'The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, `length` if the maximum number of tokens specified in the request was reached, or `content_filter` if content was omitted due to a flag from our content filters. ' enum: - stop - length - content_filter index: type: integer logprobs: type: object nullable: true properties: text_offset: type: array items: type: integer token_logprobs: type: array items: type: number tokens: type: array items: type: string top_logprobs: type: array items: type: object additionalProperties: type: number text: type: string created: type: integer description: The Unix timestamp (in seconds) of when the completion was created. model: type: string description: The model used for completion. system_fingerprint: type: string description: 'This fingerprint represents the backend configuration that the model runs with. Can be used in conjunction with the `seed` request parameter to understand when backend changes have been made that might impact determinism. ' object: type: string description: The object type, which is always "text_completion" enum: - text_completion usage: $ref: '#/components/schemas/CompletionUsage' required: - id - object - created - model - choices x-code-samples: name: The completion object legacy: true example: "{\n \"id\": \"cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7\",\n \"object\": \"text_completion\",\n \"created\": 1589478378,\n \"model\": \"gpt-4-turbo\",\n \"choices\": [\n {\n \"text\": \"\\n\\nThis is indeed a test\",\n \"index\": 0,\n \"logprobs\": null,\n \"finish_reason\": \"length\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 5,\n \"completion_tokens\": 7,\n \"total_tokens\": 12\n }\n}\n" CompletionUsage: type: object description: Usage statistics for the completion request. properties: completion_tokens: type: integer description: Number of tokens in the generated completion. prompt_tokens: type: integer description: Number of tokens in the prompt. total_tokens: type: integer description: Total number of tokens used in the request (prompt + completion). completion_tokens_details: type: object nullable: true description: Breakdown of tokens used in a completion. properties: reasoning_tokens: type: integer description: Tokens generated by the model for reasoning. accepted_prediction_tokens: type: integer description: When using Predicted Outputs, the number of tokens in the prediction that appeared in the completion. rejected_prediction_tokens: type: integer description: When using Predicted Outputs, the number of tokens in the prediction that did not appear in the completion. prompt_tokens_details: type: object nullable: true description: Breakdown of tokens used in the prompt. properties: cached_tokens: type: integer description: Cached tokens present in the prompt. required: - prompt_tokens - completion_tokens - total_tokens PromptRenderResponse: type: object required: - success - data properties: success: type: boolean description: Indicates if the render was successful data: oneOf: - title: Chat Completions $ref: '#/components/schemas/CreateChatCompletionRequest' - title: Completions $ref: '#/components/schemas/CreateCompletionRequest' ChatCompletionRequestMessageContentPartImage: type: object title: Image content part properties: type: type: string enum: - image_url description: The type of the content part. image_url: type: object properties: url: type: string description: Either a URL of the image or the base64 encoded image data. format: uri detail: type: string description: Specifies the detail level of the image. Learn more in the [Vision guide](https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding). enum: - auto - low - high default: auto required: - url required: - type - image_url FunctionParameters: type: object description: "The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. \n\nOmitting `parameters` defines a function with an empty parameter list." additionalProperties: true 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. 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 ChatCompletionTool: type: object properties: type: type: string enum: - function description: The type of the tool. Currently, only `function` is supported. function: $ref: '#/components/schemas/FunctionObject' required: - type - function ChatCompletionMessageContentPartRedactedThinking: type: object title: Redacted thinking content part properties: type: type: string enum: - redacted_thinking description: The type of the content part. data: type: string description: The redacted thinking content. required: - type - data ChatCompletionStreamOptions: description: 'Options for streaming response. Only set this when you set `stream: true`. ' type: object nullable: true default: null properties: include_usage: type: boolean description: 'If set, an additional chunk will be streamed before the `data: [DONE]` message. The `usage` field on this chunk shows the token usage statistics for the entire request, and the `choices` field will always be an empty array. All other chunks will also include a `usage` field, but with a null value. ' 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`. 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 ChatCompletionRequestUserMessage: type: object title: User message properties: content: description: 'The contents of the user message. ' oneOf: - type: string description: The text contents of the message. title: Text content - type: array description: An array of content parts with a defined type, each can be of type `text` or `image_url` when passing in images. You can pass multiple images by adding multiple `image_url` content parts. Image input is only supported when using the `gpt-4-visual-preview` model. title: Array of content parts items: $ref: '#/components/schemas/ChatCompletionRequestMessageContentPart' minItems: 1 x-oaiExpandable: true role: type: string enum: - user description: The role of the messages author, in this case `user`. 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 ResponseFormatJsonObject: type: object title: JSON object description: 'JSON object response format. An older method of generating JSON responses. Using `json_schema` is recommended for models that support it. Note that the model will not generate JSON without a system or user message instructing it to do so. ' properties: type: type: string description: The type of response format being defined. Always `json_object`. enum: - json_object x-stainless-const: true required: - type ResponseFormatText: type: object title: Text description: 'Default response format. Used to generate text responses. ' properties: type: type: string description: The type of response format being defined. Always `text`. enum: - text x-stainless-const: true required: - type ChatCompletionRequestToolMessage: type: object title: Tool message properties: role: type: string enum: - tool description: The role of the messages author, in this case `tool`. content: type: string description: The contents of the tool message. tool_call_id: type: string description: Tool call that this message is responding to. required: - role - content - tool_call_id PromptSummary: type: object properties: id: type: string format: uuid slug: type: string name: type: string collection_id: type: string format: uuid model: type: string format: string status: type: string created_at: type: string format: date-time last_updated_at: type: string format: date-time object: type: string enum: - prompt ResponseFormatJsonSchemaSchema: type: object title: JSON schema description: 'The schema for the response format, described as a JSON Schema object. Learn how to build JSON schemas [here](https://json-schema.org/). ' additionalProperties: true PromptVersionSummary: type: object properties: id: type: string format: uuid prompt_id: type: string format: uuid prompt_template: type: object prompt_version: type: number prompt_description: type: string label_id: type: string format: uuid created_at: type: string format: date-time status: type: string enum: - active - archived object: type: string enum: - prompt ChatCompletionMessageContentPartThinking: type: object title: Thinking content part properties: type: type: string enum: - thinking description: The type of the content part. thinking: type: string description: The thinking content. required: - type - thinking ChatCompletionMessageContentBlock: type: object description: A block of content in a chat completion message. oneOf: - $ref: '#/components/schemas/ChatCompletionRequestMessageContentPartText' - $ref: '#/components/schemas/ChatCompletionMessageContentPartThinking' - $ref: '#/components/schemas/ChatCompletionMessageContentPartRedactedThinking' CreateChatCompletionResponse: type: object description: Represents a chat completion response returned by model, based on the provided input. properties: id: type: string description: A unique identifier for the chat completion. choices: type: array description: A list of chat completion choices. Can be more than one if `n` is greater than 1. items: type: object required: - finish_reason - index - message - logprobs properties: finish_reason: type: string description: 'The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, `length` if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. ' enum: - stop - length - tool_calls - content_filter - function_call index: type: integer description: The index of the choice in the list of choices. message: $ref: '#/components/schemas/ChatCompletionResponseMessage' logprobs: description: Log probability information for the choice. type: object nullable: true properties: content: description: A list of message content tokens with log probability information. type: array items: $ref: '#/components/schemas/ChatCompletionTokenLogprob' nullable: true required: - content created: type: integer description: The Unix timestamp (in seconds) of when the chat completion was created. model: type: string description: The model used for the chat completion. system_fingerprint: type: string description: 'This fingerprint represents the backend configuration that the model runs with. Can be used in conjunction with the `seed` request parameter to understand when backend changes have been made that might impact determinism. ' object: type: string description: The object type, which is always `chat.completion`. enum: - chat.completion usage: $ref: '#/components/schemas/CompletionUsage' required: - choices - created - id - model - object ResponseFormatJsonSchema: type: object title: JSON schema description: 'JSON Schema response format. Used to generate structured JSON responses. Learn more about [Structured Outputs](/docs/guides/structured-outputs). ' properties: type: type: string description: The type of response format being defined. Always `json_schema`. enum: - json_schema x-stainless-const: true json_schema: type: object title: JSON schema description: 'Structured Outputs configuration options, including a JSON Schema. ' properties: description: type: string description: 'A description of what the response format is for, used by the model to determine how to respond in the format. ' name: type: string description: 'The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64. ' schema: $ref: '#/components/schemas/ResponseFormatJsonSchemaSchema' strict: type: boolean nullable: true default: false description: 'Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](/docs/guides/structured-outputs). ' required: - name required: - type - json_schema ChatCompletionRequestMessageContentPart: oneOf: - $ref: '#/components/schemas/ChatCompletionRequestMessageContentPartText' - $ref: '#/components/schemas/ChatCompletionRequestMessageContentPartImage' x-oaiExpandable: true ChatCompletionRequestMessageContentPartText: type: object title: Text content part properties: type: type: string enum: - text description: The type of the content part. text: type: string description: The text content. required: - type - text ChatCompletionMessageToolCalls: type: array description: The tool calls generated by the model, such as function calls. items: $ref: '#/components/schemas/ChatCompletionMessageToolCall' Prompt: type: object properties: id: type: string format: uuid slug: type: string name: type: string collection_id: type: string format: uuid string: type: string parameters: type: object prompt_version: type: number prompt_version_id: type: string format: uuid prompt_version_status: type: string enum: - active - archived prompt_version_description: type: string prompt_version_label_id: type: string format: uuid virtual_key: type: string model: type: string functions: type: array items: type: object tools: type: array items: type: object tool_choice: type: object template_metadata: type: object is_raw_template: type: boolean status: type: string created_at: type: string format: date-time last_updated_at: type: string format: date-time 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 FunctionObject: type: object 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' strict: type: boolean nullable: true default: false description: Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](docs/guides/function-calling). required: - name 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 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. function: type: object properties: name: type: string description: The name of the function to call. required: - name required: - type - function ChatCompletionResponseMessage: type: object description: A chat completion message generated by the model. properties: content: type: string description: The contents of the message. nullable: true tool_calls: $ref: '#/components/schemas/ChatCompletionMessageToolCalls' role: type: string enum: - assistant description: The role of the author of this message. 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. 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: - name - arguments content_blocks: nullable: true type: array description: The content blocks of the message. This is only present for certain providers with strict-open-ai-compliance flag set to false items: type: object $ref: '#/components/schemas/ChatCompletionMessageContentBlock' required: - role - content securitySchemes: Portkey-Key: type: apiKey in: header name: x-portkey-api-key Virtual-Key: type: apiKey in: header name: x-portkey-virtual-key Provider-Auth: type: http scheme: bearer Provider-Name: type: apiKey in: header name: x-portkey-provider Config: type: apiKey in: header name: x-portkey-config Custom-Host: type: apiKey in: header name: x-portkey-custom-host x-server-groups: ControlPlaneServers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL DataPlaneServers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_GATEWAY_URL description: Self-Hosted Gateway URL PublicServers: - url: https://api.portkey.ai description: Portkey Public API (no auth required) x-mint: mcp: enabled: true name: Portkey MCP description: Official MCP Server for Portkey Docs & APIs x-code-samples: navigationGroups: - id: endpoints title: Endpoints - id: assistants title: Assistants - id: legacy title: Legacy groups: - id: audio title: Audio description: 'Learn how to turn audio into text or text into audio. Related guide: [Speech to text](https://platform.openai.com/docs/guides/speech-to-text) ' navigationGroup: endpoints sections: - type: endpoint key: createSpeech path: createSpeech - type: endpoint key: createTranscription path: createTranscription - type: endpoint key: createTranslation path: createTranslation - type: object key: CreateTranscriptionResponseJson path: json-object - type: object key: CreateTranscriptionResponseVerboseJson path: verbose-json-object - id: chat title: Chat description: 'Given a list of messages comprising a conversation, the model will return a response. Related guide: [Chat Completions](https://platform.openai.com/docs/guides/text-generation) ' navigationGroup: endpoints sections: - type: endpoint key: createChatCompletion path: create - type: object key: CreateChatCompletionResponse path: object - type: object key: CreateChatCompletionStreamResponse path: streaming - id: realtime title: Realtime description: 'WebSocket proxy for provider Realtime APIs (`GET` upgrade). Use `wss://` with the same `/v1` data-plane base as other gateway routes. Related guide: [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime) ' navigationGroup: endpoints sections: - type: endpoint key: connectRealtime path: connect - id: embeddings title: Embeddings description: 'Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. Related guide: [Embeddings](https://platform.openai.com/docs/guides/embeddings) ' navigationGroup: endpoints sections: - type: endpoint key: createEmbedding path: create - type: object key: Embedding path: object - id: rerank title: Rerank description: 'Rerank a list of documents based on their relevance to a query. Reranking improves search results by scoring documents based on semantic relevance rather than keyword matching. Supported providers: Cohere, Voyage, Jina, Pinecone, Bedrock, Azure AI. ' navigationGroup: endpoints sections: - type: endpoint key: createRerank path: create - type: object key: CreateRerankResponse path: object - id: fine-tuning title: Fine-tuning description: 'Manage fine-tuning jobs to tailor a model to your specific training data. Related guide: [Fine-tune models](https://platform.openai.com/docs/guides/fine-tuning) ' navigationGroup: endpoints sections: - type: endpoint key: createFineTuningJob path: create - type: endpoint key: listPaginatedFineTuningJobs path: list - type: endpoint key: listFineTuningEvents path: list-events - type: endpoint key: listFineTuningJobCheckpoints path: list-checkpoints - type: endpoint key: retrieveFineTuningJob path: retrieve - type: endpoint key: cancelFineTuningJob path: cancel - type: object key: FinetuneChatRequestInput path: chat-input - type: object key: FinetuneCompletionRequestInput path: completions-input - type: object key: FineTuningJob path: object - type: object key: FineTuningJobEvent path: event-object - type: object key: FineTuningJobCheckpoint path: checkpoint-object - id: batch title: Batch description: 'Create large batches of API requests for asynchronous processing. The Batch API returns completions within 24 hours for a 50% discount. Related guide: [Batch](https://platform.openai.com/docs/guides/batch) ' navigationGroup: endpoints sections: - type: endpoint key: createBatch path: create - type: endpoint key: retrieveBatch path: retrieve - type: endpoint key: cancelBatch path: cancel - type: endpoint key: listBatches path: list - type: object key: Batch path: object - type: object key: BatchRequestInput path: request-input - type: object key: BatchRequestOutput path: request-output - id: files title: Files description: 'Files are used to upload documents that can be used with features like [Assistants](https://platform.openai.com/docs/api-reference/assistants), [Fine-tuning](https://platform.openai.com/docs/api-reference/fine-tuning), and [Batch API](https://platform.openai.com/docs/guides/batch). ' navigationGroup: endpoints sections: - type: endpoint key: createFile path: create - type: endpoint key: listFiles path: list - type: endpoint key: retrieveFile path: retrieve - type: endpoint key: deleteFile path: delete - type: endpoint key: downloadFile path: retrieve-contents - type: object key: OpenAIFile path: object - id: images title: Images description: 'Given a prompt and/or an input image, the model will generate a new image. Related guide: [Image generation](https://platform.openai.com/docs/guides/images) ' navigationGroup: endpoints sections: - type: endpoint key: createImage path: create - type: endpoint key: createImageEdit path: createEdit - type: endpoint key: createImageVariation path: createVariation - type: object key: Image path: object - id: models title: Models description: 'List and describe the various models available in the API. You can refer to the [Models](https://platform.openai.com/docs/models) documentation to understand what models are available and the differences between them. ' navigationGroup: endpoints sections: - type: endpoint key: listModels path: list - type: endpoint key: retrieveModel path: retrieve - type: endpoint key: deleteModel path: delete - type: object key: Model path: object - id: moderations title: Moderations description: 'Given some input text, outputs if the model classifies it as potentially harmful across several categories. Related guide: [Moderations](https://platform.openai.com/docs/guides/moderation) ' navigationGroup: endpoints sections: - type: endpoint key: createModeration path: create - type: object key: CreateModerationResponse path: object - id: assistants title: Assistants beta: true description: 'Build assistants that can call models and use tools to perform tasks. [Get started with the Assistants API](https://platform.openai.com/docs/assistants) ' navigationGroup: assistants sections: - type: endpoint key: createAssistant path: createAssistant - type: endpoint key: listAssistants path: listAssistants - type: endpoint key: getAssistant path: getAssistant - type: endpoint key: modifyAssistant path: modifyAssistant - type: endpoint key: deleteAssistant path: deleteAssistant - type: object key: AssistantObject path: object - id: threads title: Threads beta: true description: 'Create threads that assistants can interact with. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createThread path: createThread - type: endpoint key: getThread path: getThread - type: endpoint key: modifyThread path: modifyThread - type: endpoint key: deleteThread path: deleteThread - type: object key: ThreadObject path: object - id: messages title: Messages beta: true description: 'Create messages within threads Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createMessage path: createMessage - type: endpoint key: listMessages path: listMessages - type: endpoint key: getMessage path: getMessage - type: endpoint key: modifyMessage path: modifyMessage - type: endpoint key: deleteMessage path: deleteMessage - type: object key: MessageObject path: object - id: runs title: Runs beta: true description: 'Represents an execution run on a thread. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createRun path: createRun - type: endpoint key: createThreadAndRun path: createThreadAndRun - type: endpoint key: listRuns path: listRuns - type: endpoint key: getRun path: getRun - type: endpoint key: modifyRun path: modifyRun - type: endpoint key: submitToolOuputsToRun path: submitToolOutputs - type: endpoint key: cancelRun path: cancelRun - type: object key: RunObject path: object - id: run-steps title: Run Steps beta: true description: 'Represents the steps (model and tool calls) taken during the run. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: listRunSteps path: listRunSteps - type: endpoint key: getRunStep path: getRunStep - type: object key: RunStepObject path: step-object - id: vector-stores title: Vector Stores beta: true description: 'Vector stores are used to store files for use by the `file_search` tool. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStore path: create - type: endpoint key: listVectorStores path: list - type: endpoint key: getVectorStore path: retrieve - type: endpoint key: modifyVectorStore path: modify - type: endpoint key: deleteVectorStore path: delete - type: object key: VectorStoreObject path: object - id: vector-stores-files title: Vector Store Files beta: true description: 'Vector store files represent files inside a vector store. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStoreFile path: createFile - type: endpoint key: listVectorStoreFiles path: listFiles - type: endpoint key: getVectorStoreFile path: getFile - type: endpoint key: deleteVectorStoreFile path: deleteFile - type: object key: VectorStoreFileObject path: file-object - id: vector-stores-file-batches title: Vector Store File Batches beta: true description: 'Vector store file batches represent operations to add multiple files to a vector store. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStoreFileBatch path: createBatch - type: endpoint key: getVectorStoreFileBatch path: getBatch - type: endpoint key: cancelVectorStoreFileBatch path: cancelBatch - type: endpoint key: listFilesInVectorStoreBatch path: listBatchFiles - type: object key: VectorStoreFileBatchObject path: batch-object - id: assistants-streaming title: Streaming beta: true description: 'Stream the result of executing a Run or resuming a Run after submitting tool outputs. You can stream events from the [Create Thread and Run](https://platform.openai.com/docs/api-reference/runs/createThreadAndRun), [Create Run](https://platform.openai.com/docs/api-reference/runs/createRun), and [Submit Tool Outputs](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) endpoints by passing `"stream": true`. The response will be a [Server-Sent events](https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events) stream. Our Node and Python SDKs provide helpful utilities to make streaming easy. Reference the [Assistants API quickstart](https://platform.openai.com/docs/assistants/overview) to learn more. ' navigationGroup: assistants sections: - type: object key: MessageDeltaObject path: message-delta-object - type: object key: RunStepDeltaObject path: run-step-delta-object - type: object key: AssistantStreamEvent path: events - id: completions title: Completions legacy: true navigationGroup: legacy description: 'Given a prompt, the model will return one or more predicted completions along with the probabilities of alternative tokens at each position. Most developer should use our [Chat Completions API](https://platform.openai.com/docs/guides/text-generation/text-generation-models) to leverage our best and newest models. ' sections: - type: endpoint key: createCompletion path: create - type: object key: CreateCompletionResponse path: object