---
title: "Create a prompt"
method: POST
path: "/v2/prompts"
tags: ["Prompts"]
---

# Create a prompt

`POST /v2/prompts`

## Request body

- object — Request body for creating a new prompt.
  - `display_name` string, required — The prompt’s name, meant to be displayable in the UI.
  - `description` string, nullable — The prompt’s description, meant to be displayable in the UI. Use this field to optionally store a long form explanation of the prompt for your own purpose
  - `metadata` object
    - `use_cases` string[] — A list of use cases that the prompt is meant to be used for. Use this field to categorize the prompt for your own purpose
    - `language` 'Chinese' | 'Dutch' | 'English' | 'French' | 'German' | 'Russian' | 'Spanish' | 'null', nullable — The language that the prompt is written in. Use this field to categorize the prompt for your own purpose
  - `prompt` object, required — Prompt configuration with model and messages.
    - `messages` union[], required — Array of messages that make up the conversation. Each message has a role (system, user, assistant, or tool) and content.
      - union
        - object — Developer-provided instructions that the model should follow, regardless of messages sent by the user.
          - `role` 'system', required — The role of the messages author, in this case `system`.
          - `content` union, required — The contents of the system message.
            - string — The contents of the system message.
            - TextContentPartSchema[] — An array of content parts with a defined type. For system messages, only type `text` is supported.
              - …
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
        - object
          - `role` 'user', required — The role of the messages author, in this case `user`.
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
          - `content` union, required — The contents of the user message.
            - string — The text contents of the message.
            - union[] — An array of content parts with a defined type. Supported options differ based on the model being used to generate the response. Can contain text, image, or audio inputs.
              - …
        - object
          - `content` union — The contents of the assistant message. Required unless `tool_calls` or `function_call` is specified.
            - string — The contents of the assistant message.
            - union[] — An array of content parts with a defined type. Can be one or more of type `text`, or exactly one of type `refusal`.
              - …
          - `refusal` string, nullable — The refusal message by the assistant.
          - `role` 'assistant', required — The role of the messages author, in this case `assistant`.
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
          - `audio` object, nullable — Data about a previous audio response from the model.
            - `id` string, required — Unique identifier for a previous audio response from the model.
          - `tool_calls` object[] — The tool calls generated by the model, such as function calls.
            - `id` string, required — The ID of the tool call.
            - `type` 'function', required — The type of the tool. Currently, only `function` is supported.
            - `function` object, required
              - …
            - `thought_signature` string — Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call.
        - object
          - `role` 'tool', required — The role of the messages author, in this case tool.
          - `content` union, required — The contents of the tool message.
            - string
            - TextContentPartSchema[]
              - …
          - `tool_call_id` string, nullable, required — Tool call that this message is responding to.
          - `cache_control` object
            - `type` 'ephemeral', required — Create a cache control breakpoint at this content block. Accepts only the value "ephemeral".
            - `ttl` '5m' | '1h' — The time-to-live for the cache control breakpoint. This may be one of the following values: - `5m`: 5 minutes - `1h`: 1 hour Defaults to `5m`. Only supported by `Anthropic` Claude models.
    - `model` string — Model ID used to generate the response, like `openai/gpt-4o` or `anthropic/claude-3-5-sonnet-20241022`. For private models, use format: `{workspaceKey}@{provider}/{model}`. The full list of models can be found at https://docs.orq.ai/docs/ai-gateway-supported-models. Only chat models are supported.
    - `name` string — The name to display on the trace. If not specified, the default system name will be used.
    - `audio` object, nullable — Parameters for audio output. Required when audio output is requested with modalities: ["audio"]. Learn more.
      - `voice` 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer', required — The voice the model uses to respond. Supported voices are alloy, echo, fable, onyx, nova, and shimmer.
      - `format` 'wav' | 'mp3' | 'flac' | 'opus' | 'pcm16', required — Specifies the output audio format. Must be one of wav, mp3, flac, opus, or pcm16.
    - `frequency_penalty` number, nullable — 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.
    - `max_tokens` integer, nullable — `[Deprecated]`. The maximum number of tokens that can be generated in the chat completion. This value can be used to control costs for text generated via API. This value is now `deprecated` in favor of `max_completion_tokens`, and is not compatible with o1 series models.
    - `max_completion_tokens` integer, nullable — An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens
    - `logprobs` boolean, nullable — 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.
    - `top_logprobs` integer, nullable — 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.
    - `n` integer, nullable — 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` number, nullable — 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.
    - `response_format` union — An object specifying the format that the model must output
      - object — Default response format. Used to generate text responses
        - `type` 'text', required
      - object — 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.
        - `type` 'json_object', required
      - object — JSON Schema response format. Used to generate structured JSON responses
        - `type` 'json_schema', required
        - `json_schema` object, required
          - `description` string — A description of what the response format is for, used by the model to determine how to respond in the format.
          - `name` string, required — 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` unknown
          - `strict` boolean — 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.
    - `reasoning_effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' — Constrains effort on reasoning for [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool calls are supported for all reasoning values in gpt-5.1. - All models before `gpt-5.1` default to `medium` reasoning effort, and do not support `none`. - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort. - `xhigh` is currently only supported for `gpt-5.1-codex-max`. Any of "none", "minimal", "low", "medium", "high", "xhigh".
    - `verbosity` string — Adjusts response verbosity. Lower levels yield shorter answers.
    - `seed` number, nullable — 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.
    - `stop` union — Up to 4 sequences where the API will stop generating further tokens.
      - string
      - string[]
    - `stream_options` object, nullable — Options for streaming response. Only set this when you set stream: true.
      - `include_usage` boolean — 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.
    - `thinking` union
      - ThinkingConfigDisabledSchema — Disables the thinking mode capability
        - `type` 'disabled', required — Disables the thinking mode capability
      - ThinkingConfigEnabledSchema — Enables the thinking mode capability
        - `type` 'enabled', required — Enables or disables the thinking mode capability
        - `budget_tokens` number, required — Determines how many tokens the model can use for its internal reasoning process. Larger budgets can enable more thorough analysis for complex problems, improving response quality. Must be ≥1024 and less than `max_tokens`.
        - `thinking_level` 'minimal' | 'low' | 'medium' | 'high' — The level of reasoning the model should use. This setting is supported only by `gemini-3` models. If budget_tokens is specified and `thinking_level` is available, `budget_tokens` will be ignored.
      - ThinkingConfigAdaptiveSchema — Enables adaptive thinking mode where the model dynamically determines thinking depth
        - `type` 'adaptive', required — Lets the model dynamically determine when and how much to use extended thinking based on the complexity of each request. Supported on Claude Opus 4.6 and Sonnet 4.6.
    - `temperature` number, nullable — 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.
    - `top_p` number, nullable — An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass.
    - `top_k` number, nullable — Limits the model to consider only the top k most likely tokens at each step.
    - `tool_choice` union — Controls which (if any) tool is called by the model.
      - 'none' | 'auto' | 'required'
      - object
        - `type` 'function' — The type of the tool. Currently, only function is supported.
        - `function` object, required
          - `name` string, required — The name of the function to call.
    - `parallel_tool_calls` boolean — Whether to enable parallel function calling during tool use.
    - `modalities` string[], nullable — Output types that you would like the model to generate. Most models are capable of generating text, which is the default: ["text"]. The gpt-4o-audio-preview model can also be used to generate audio. To request that this model generate both text and audio responses, you can use: ["text", "audio"].
    - `guardrails` object[] — A list of guardrails to apply to the request.
      - `id` union, required
        - 'orq_pii_detection' | 'orq_secret_detection' | 'orq_sexual_moderation' | 'orq_harmful_moderation' — The key of the guardrail.
        - string — Unique key or identifier of the evaluator
      - `execute_on` 'input' | 'output', required — Determines whether the guardrail runs on the input (user message) or output (model response).
    - `plugins` union[] — Request-scoped transforms applied to the text exchanged with the model. Supports `pii_redaction`, which replaces PII with placeholders before the provider sees it and restores the original values in the response, and `response_healing`, which repairs malformed JSON in non-streaming output.
      - union
        - PIIRedactionPluginAuto
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `entities` string[] — Entity types to redact when no detector language is configured. Omit to redact every detected type.
        - PIIRedactionPluginEn
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `language` 'en', required — Detector language.
          - `entities` string[] — English entity types to redact. Omit to redact every type detected for the language.
        - PIIRedactionPluginNl
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `language` 'nl', required — Detector language.
          - `entities` string[] — Dutch entity types to redact. Omit to redact every type detected for the language.
        - ResponseHealingPlugin
          - `id` 'response_healing', required — Plugin discriminator. Must be `response_healing`.
    - `fallbacks` object[] — Array of fallback models to use if primary model fails
      - `model` string, required — Fallback model identifier
    - `retry` object — Retry configuration for the request
      - `count` number — Number of retry attempts (1-5)
      - `on_codes` number[] — HTTP status codes that trigger retry logic
    - `cache` object — Cache configuration for the request.
      - `ttl` number — Time to live for cached responses in seconds. Maximum 259200 seconds (3 days).
      - `type` 'exact_match', required
    - `load_balancer` object — Load balancer configuration for the request.
      - `type` 'weight_based', required
      - `models` object[], required
        - `model` string, required — Model identifier for load balancing
        - `weight` number — Weight assigned to this model for load balancing
    - `timeout` object — Timeout configuration to apply to the request. If the request exceeds the timeout, it will be retried or fallback to the next model if configured.
      - `call_timeout` number, required — Timeout value in milliseconds
    - `cache_control` object — Provider-level prompt caching configuration applied to the request. Creates a cache control breakpoint covering the request content. Only supported by `Anthropic` Claude models.
      - `type` 'ephemeral', required — Create a cache control breakpoint at this content block. Accepts only the value "ephemeral".
      - `ttl` '5m' | '1h' — The time-to-live for the cache control breakpoint. This may be one of the following values: - `5m`: 5 minutes - `1h`: 1 hour Defaults to `5m`. Only supported by `Anthropic` Claude models.
    - `prompt_cache_key` string — Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the legacy `user` field for prompt caching.
  - `path` string, required — Entity storage path. With workspace-level API keys, use the format `project/folder/subfolder/...`. The first element identifies the project, followed by nested folders (auto-created as needed). Example: `Default/agents`. With project-level API keys, the project is predetermined by the API key, so the path is relative to that project. Example: `agents`. For backward compatibility, a leading project name is ignored when it matches the scoped project.

## Response `200`

Prompt created.

- object — A prompt entity with configuration, metadata, and versioning.
  - `_id` string, required
  - `type` 'prompt', required
  - `owner` string, required
  - `domain_id` string, uuid, required
  - `created` string, required
  - `updated` string, required
  - `created_by_id` string, uuid, nullable
  - `updated_by_id` string, uuid, nullable
  - `display_name` string, required — The prompt’s name, meant to be displayable in the UI.
  - `description` string, nullable — The prompt’s description, meant to be displayable in the UI. Use this field to optionally store a long form explanation of the prompt for your own purpose
  - `prompt_config` object — [DEPRECATED] Use the `prompt` property instead. A list of messages compatible with the openAI schema.
    - `stream` boolean
    - `model` string, nullable
    - `model_db_id` string, nullable
    - `model_type` 'chat' | 'completion' | 'embedding' | 'image' | 'tts' | 'stt' | 'rerank' | 'ocr' | 'moderation' | 'vision' | 'null', nullable — The modality of the model
    - `model_parameters` object — Model Parameters: Not all parameters apply to every model
      - `temperature` number — Only supported on `chat` and `completion` models.
      - `maxTokens` number — Only supported on `chat` and `completion` models.
      - `topK` number — Only supported on `chat` and `completion` models.
      - `topP` number — Only supported on `chat` and `completion` models.
      - `frequencyPenalty` number — Only supported on `chat` and `completion` models.
      - `presencePenalty` number — Only supported on `chat` and `completion` models.
      - `numImages` number — Only supported on `image` models.
      - `seed` number — Best effort deterministic seed for the model. Currently only OpenAI models support these
      - `format` 'url' | 'b64_json' | 'text' | 'json_object' — Only supported on `image` models.
      - `dimensions` string — Only supported on `image` models.
      - `quality` string — Only supported on `image` models.
      - `style` string — Only supported on `image` models.
      - `responseFormat` union — 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 Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the message the model generates is valid JSON. Important: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if finish_reason="length", which indicates the generation exceeded max_tokens or the conversation exceeded the max context length.
        - object
          - `type` 'json_schema', required
          - `display_name` string
          - `json_schema` object, required
            - `name` string, required
            - `description` string, nullable
            - `strict` boolean
            - `schema` object, required
        - object
          - `type` 'json_object', required
        - object
          - `type` 'text', required
        - 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm'
        - 'url' | 'base64_json'
        - 'json' | 'text' | 'srt' | 'verbose_json' | 'vtt'
      - `cacheControl` object, nullable — Provider-level prompt caching configuration applied to the request. Creates a cache control breakpoint covering the request content. Only supported by `Anthropic` Claude models.
        - `type` 'ephemeral', required — Create a cache control breakpoint. Accepts only the value "ephemeral".
        - `ttl` '5m' | '1h' — The time-to-live for the cache control breakpoint. This may be one of the following values: - `5m`: 5 minutes - `1h`: 1 hour Defaults to `5m`. Only supported by `Anthropic` Claude models.
      - `photoRealVersion` 'v1' | 'v2' — The version of photoReal to use. Must be v1 or v2. Only available for `leonardoai` provider
      - `encoding_format` 'float' | 'base64' — The format to return the embeddings
      - `reasoningEffort` 'none' | 'disable' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max' — Constrains effort on reasoning for reasoning models. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.
      - `budgetTokens` number — Gives the model enhanced reasoning capabilities for complex tasks. A value of 0 disables thinking. The minimum budget tokens for thinking are 1024. The Budget Tokens should never exceed the Max Tokens parameter. Only supported by `Anthropic`
      - `verbosity` 'low' | 'medium' | 'high' — Controls the verbosity of the model output.
      - `thinkingLevel` 'minimal' | 'low' | 'medium' | 'high' — The level of thinking to use for the model. Only supported by `Google AI`
    - `provider` 'openai' | 'groq' | 'cohere' | 'azure' | 'aws' | 'google' | 'google-ai' | 'huggingface' | 'togetherai' | 'perplexity' | 'anthropic' | 'leonardoai' | 'fal' | 'nvidia' | 'jina' | 'elevenlabs' | 'litellm' | 'cerebras' | 'openailike' | 'bytedance' | 'mistral' | 'deepseek' | 'moonshotai' | 'zai' | 'minimax' | 'xai' | 'alibaba' | 'tensorix' | 'scaleway' | 'hcompany' | 'inceptron' | 'wafer' | 'poolside' | 'tencent' | 'nebius' | 'fireworks' | 'baseten' | 'reson8' | 'slack' | 'orq' | 'null', nullable
    - `integration_id` union — The ID of the integration to use
      - string
      - string, ulid — The id of the resource
    - `version` string
    - `messages` object[], required
      - `role` 'system' | 'developer' | 'assistant' | 'user' | 'exception' | 'tool' | 'prompt' | 'correction' | 'expected_output', required — The role of the prompt message
      - `content` union, required — The contents of the user message. Either the text content of the message or 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. Can be null for tool messages in certain scenarios.
        - string
        - union[]
          - union
            - object — Text content part of a prompt message
              - …
            - object — The image part of the prompt message. Only supported with vision models.
              - …
            - object
              - …
      - `tool_calls` object[]
        - `id` string
        - `index` number
        - `type` 'function', required
        - `function` object, required
          - `name` string, required
          - `arguments` string, required — JSON string arguments for the functions
      - `tool_call_id` string, nullable
  - `prompt` object, required — Prompt configuration with model and messages. Use this instead of prompt_config.
    - `name` string — The name to display on the trace. If not specified, the default system name will be used.
    - `audio` object, nullable — Parameters for audio output. Required when audio output is requested with modalities: ["audio"]. Learn more.
      - `voice` 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer', required — The voice the model uses to respond. Supported voices are alloy, echo, fable, onyx, nova, and shimmer.
      - `format` 'wav' | 'mp3' | 'flac' | 'opus' | 'pcm16', required — Specifies the output audio format. Must be one of wav, mp3, flac, opus, or pcm16.
    - `frequency_penalty` number, nullable — 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.
    - `max_tokens` integer, nullable — `[Deprecated]`. The maximum number of tokens that can be generated in the chat completion. This value can be used to control costs for text generated via API. This value is now `deprecated` in favor of `max_completion_tokens`, and is not compatible with o1 series models.
    - `max_completion_tokens` integer, nullable — An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens
    - `logprobs` boolean, nullable — 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.
    - `top_logprobs` integer, nullable — 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.
    - `n` integer, nullable — 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` number, nullable — 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.
    - `response_format` union — An object specifying the format that the model must output
      - object — Default response format. Used to generate text responses
        - `type` 'text', required
      - object — 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.
        - `type` 'json_object', required
      - object — JSON Schema response format. Used to generate structured JSON responses
        - `type` 'json_schema', required
        - `json_schema` object, required
          - `description` string — A description of what the response format is for, used by the model to determine how to respond in the format.
          - `name` string, required — 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` unknown
          - `strict` boolean — 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.
    - `reasoning_effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' — Constrains effort on reasoning for [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool calls are supported for all reasoning values in gpt-5.1. - All models before `gpt-5.1` default to `medium` reasoning effort, and do not support `none`. - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort. - `xhigh` is currently only supported for `gpt-5.1-codex-max`. Any of "none", "minimal", "low", "medium", "high", "xhigh".
    - `verbosity` string — Adjusts response verbosity. Lower levels yield shorter answers.
    - `seed` number, nullable — 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.
    - `stop` union — Up to 4 sequences where the API will stop generating further tokens.
      - string
      - string[]
    - `stream_options` object, nullable — Options for streaming response. Only set this when you set stream: true.
      - `include_usage` boolean — 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.
    - `thinking` union
      - ThinkingConfigDisabledSchema — Disables the thinking mode capability
        - `type` 'disabled', required — Disables the thinking mode capability
      - ThinkingConfigEnabledSchema — Enables the thinking mode capability
        - `type` 'enabled', required — Enables or disables the thinking mode capability
        - `budget_tokens` number, required — Determines how many tokens the model can use for its internal reasoning process. Larger budgets can enable more thorough analysis for complex problems, improving response quality. Must be ≥1024 and less than `max_tokens`.
        - `thinking_level` 'minimal' | 'low' | 'medium' | 'high' — The level of reasoning the model should use. This setting is supported only by `gemini-3` models. If budget_tokens is specified and `thinking_level` is available, `budget_tokens` will be ignored.
      - ThinkingConfigAdaptiveSchema — Enables adaptive thinking mode where the model dynamically determines thinking depth
        - `type` 'adaptive', required — Lets the model dynamically determine when and how much to use extended thinking based on the complexity of each request. Supported on Claude Opus 4.6 and Sonnet 4.6.
    - `temperature` number, nullable — 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.
    - `top_p` number, nullable — An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass.
    - `top_k` number, nullable — Limits the model to consider only the top k most likely tokens at each step.
    - `tool_choice` union — Controls which (if any) tool is called by the model.
      - 'none' | 'auto' | 'required'
      - object
        - `type` 'function' — The type of the tool. Currently, only function is supported.
        - `function` object, required
          - `name` string, required — The name of the function to call.
    - `parallel_tool_calls` boolean — Whether to enable parallel function calling during tool use.
    - `modalities` string[], nullable — Output types that you would like the model to generate. Most models are capable of generating text, which is the default: ["text"]. The gpt-4o-audio-preview model can also be used to generate audio. To request that this model generate both text and audio responses, you can use: ["text", "audio"].
    - `guardrails` object[] — A list of guardrails to apply to the request.
      - `id` union, required
        - 'orq_pii_detection' | 'orq_secret_detection' | 'orq_sexual_moderation' | 'orq_harmful_moderation' — The key of the guardrail.
        - string — Unique key or identifier of the evaluator
      - `execute_on` 'input' | 'output', required — Determines whether the guardrail runs on the input (user message) or output (model response).
    - `plugins` union[] — Request-scoped transforms applied to the text exchanged with the model. Supports `pii_redaction`, which replaces PII with placeholders before the provider sees it and restores the original values in the response, and `response_healing`, which repairs malformed JSON in non-streaming output.
      - union
        - PIIRedactionPluginAuto
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `entities` string[] — Entity types to redact when no detector language is configured. Omit to redact every detected type.
        - PIIRedactionPluginEn
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `language` 'en', required — Detector language.
          - `entities` string[] — English entity types to redact. Omit to redact every type detected for the language.
        - PIIRedactionPluginNl
          - `id` 'pii_redaction', required — Plugin discriminator. Must be `pii_redaction`.
          - `on_failure` 'block' | 'passthrough' — Behavior when redaction is unavailable. `block` (default) fails the request; `passthrough` sends the original text.
          - `threshold` number — Detector confidence cutoff in [0,1].
          - `language` 'nl', required — Detector language.
          - `entities` string[] — Dutch entity types to redact. Omit to redact every type detected for the language.
        - ResponseHealingPlugin
          - `id` 'response_healing', required — Plugin discriminator. Must be `response_healing`.
    - `fallbacks` object[] — Array of fallback models to use if primary model fails
      - `model` string, required — Fallback model identifier
    - `retry` object — Retry configuration for the request
      - `count` number — Number of retry attempts (1-5)
      - `on_codes` number[] — HTTP status codes that trigger retry logic
    - `cache` object — Cache configuration for the request.
      - `ttl` number — Time to live for cached responses in seconds. Maximum 259200 seconds (3 days).
      - `type` 'exact_match', required
    - `load_balancer` object — Load balancer configuration for the request.
      - `type` 'weight_based', required
      - `models` object[], required
        - `model` string, required — Model identifier for load balancing
        - `weight` number — Weight assigned to this model for load balancing
    - `timeout` object — Timeout configuration to apply to the request. If the request exceeds the timeout, it will be retried or fallback to the next model if configured.
      - `call_timeout` number, required — Timeout value in milliseconds
    - `cache_control` object — Provider-level prompt caching configuration applied to the request. Creates a cache control breakpoint covering the request content. Only supported by `Anthropic` Claude models.
      - `type` 'ephemeral', required — Create a cache control breakpoint at this content block. Accepts only the value "ephemeral".
      - `ttl` '5m' | '1h' — The time-to-live for the cache control breakpoint. This may be one of the following values: - `5m`: 5 minutes - `1h`: 1 hour Defaults to `5m`. Only supported by `Anthropic` Claude models.
    - `prompt_cache_key` string — Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the legacy `user` field for prompt caching.
    - `messages` union[] — Array of messages that make up the conversation. Each message has a role (system, user, assistant, or tool) and content.
      - union
        - object — Developer-provided instructions that the model should follow, regardless of messages sent by the user.
          - `role` 'system', required — The role of the messages author, in this case `system`.
          - `content` union, required — The contents of the system message.
            - string — The contents of the system message.
            - TextContentPartSchema[] — An array of content parts with a defined type. For system messages, only type `text` is supported.
              - …
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
        - object
          - `role` 'user', required — The role of the messages author, in this case `user`.
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
          - `content` union, required — The contents of the user message.
            - string — The text contents of the message.
            - union[] — An array of content parts with a defined type. Supported options differ based on the model being used to generate the response. Can contain text, image, or audio inputs.
              - …
        - object
          - `content` union — The contents of the assistant message. Required unless `tool_calls` or `function_call` is specified.
            - string — The contents of the assistant message.
            - union[] — An array of content parts with a defined type. Can be one or more of type `text`, or exactly one of type `refusal`.
              - …
          - `refusal` string, nullable — The refusal message by the assistant.
          - `role` 'assistant', required — The role of the messages author, in this case `assistant`.
          - `name` string — An optional name for the participant. Provides the model information to differentiate between participants of the same role.
          - `audio` object, nullable — Data about a previous audio response from the model.
            - `id` string, required — Unique identifier for a previous audio response from the model.
          - `tool_calls` object[] — The tool calls generated by the model, such as function calls.
            - `id` string, required — The ID of the tool call.
            - `type` 'function', required — The type of the tool. Currently, only `function` is supported.
            - `function` object, required
              - …
            - `thought_signature` string — Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call.
        - object
          - `role` 'tool', required — The role of the messages author, in this case tool.
          - `content` union, required — The contents of the tool message.
            - string
            - TextContentPartSchema[]
              - …
          - `tool_call_id` string, nullable, required — Tool call that this message is responding to.
          - `cache_control` object
            - `type` 'ephemeral', required — Create a cache control breakpoint at this content block. Accepts only the value "ephemeral".
            - `ttl` '5m' | '1h' — The time-to-live for the cache control breakpoint. This may be one of the following values: - `5m`: 5 minutes - `1h`: 1 hour Defaults to `5m`. Only supported by `Anthropic` Claude models.
    - `model` string, nullable — Model ID used to generate the response, like `openai/gpt-4o` or `anthropic/claude-3-5-sonnet-20241022`. For private models, use format: `{workspaceKey}@{provider}/{model}`.
    - `version` string
  - `metadata` object
    - `use_cases` string[] — A list of use cases that the prompt is meant to be used for. Use this field to categorize the prompt for your own purpose
    - `language` 'Chinese' | 'Dutch' | 'English' | 'French' | 'German' | 'Russian' | 'Spanish' | 'null', nullable — The language that the prompt is written in. Use this field to categorize the prompt for your own purpose

---

[API](https://skmtc.net/orq-ai/apis/orq-ai-api.md) · [All operations](https://skmtc.net/orq-ai/apis/orq-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/orq-ai/orq-ai-api/versions/6a22c53a2580/schema)
