Skip to Content
Launching the open-source gateway

Replace a custom model

PUThttps://api.respan.ai/api/models/{model_name}/

Replace editable fields for a custom model. The model_name path value remains the identifier.

Servers

https://api.respan.ai — Respan API Server

Authentication

RespanApiKey

Use your Respan API key for Respan API authentication. Enter only the Respan API key value; clients send Authorization: Bearer <RESPAN_API_KEY>. For /api/responses, provider credentials such as Perplexity, OpenAI, or Azure OpenAI go in Settings -> Providers or respan_params.credential_override in the request body, not in this authentication field.

HTTP scheme: bearer; format: Respan API key.

HTTP
Authorization: Bearer $RESPAN_API_KEY

Or:

DashboardJwt

Use a dashboard JWT only for dashboard-authenticated endpoints. Respan API-key endpoints use the respanApiKey auth field instead.

HTTP scheme: bearer; format: Dashboard JWT.

HTTP
Authorization: Bearer $RESPAN_DASHBOARD_JWT

Path parameters

Parameter Type Required Description and constraints
model_name string Required
Model name. The route supports names containing slashes, such as openai/gpt-4o-mini.

Request body

A request body is required.

application/json

Field Type Requirement Description and constraints
$ object Required body
—
base_model_name string Optional
Base model to inherit properties from.
Example: "gpt-4o"
custom_provider_id string Optional
Custom provider string ID or provider identifier to associate.
Example: "my-vllm"
provider_id string Optional
Alternative to custom_provider_id.
Example: "my-vllm"
input_cost number Optional
Cost per 1M input tokens in USD.
Example: 2.5
output_cost number Optional
Cost per 1M output tokens in USD.
Example: 10
cache_hit_input_cost number Optional
Cost per 1M cached input tokens in USD.
cache_creation_input_cost number Optional
Cost per 1M cache creation input tokens in USD.
max_context_window integer Optional
Maximum context window size.
Example: 128000
function_call integer Optional
Allowed: 0, 1
image_support integer Optional
Allowed: 0, 1
supported_params_override object Optional
Partial override for the model’s parameters: a map of parameter name to a parameter definition with the same shape as supported_params entries (name, type, default, range with min and max, description, required), or null to remove the parameter. Replaces any earlier override. The response returns the computed supported_params.
Additional properties are allowed

OpenAPI request schema

{
  "type": "object",
  "properties": {
    "base_model_name": {
      "type": "string",
      "description": "Base model to inherit properties from.",
      "example": "gpt-4o"
    },
    "custom_provider_id": {
      "type": "string",
      "description": "Custom provider string ID or provider identifier to associate.",
      "example": "my-vllm"
    },
    "provider_id": {
      "type": "string",
      "description": "Alternative to `custom_provider_id`.",
      "example": "my-vllm"
    },
    "input_cost": {
      "type": "number",
      "description": "Cost per 1M input tokens in USD.",
      "example": 2.5
    },
    "output_cost": {
      "type": "number",
      "description": "Cost per 1M output tokens in USD.",
      "example": 10
    },
    "cache_hit_input_cost": {
      "type": "number",
      "description": "Cost per 1M cached input tokens in USD."
    },
    "cache_creation_input_cost": {
      "type": "number",
      "description": "Cost per 1M cache creation input tokens in USD."
    },
    "max_context_window": {
      "type": "integer",
      "description": "Maximum context window size.",
      "example": 128000
    },
    "function_call": {
      "type": "integer",
      "enum": [
        0,
        1
      ]
    },
    "image_support": {
      "type": "integer",
      "enum": [
        0,
        1
      ]
    },
    "supported_params_override": {
      "type": "object",
      "description": "Partial override for the model's parameters: a map of parameter name to a parameter definition with the same shape as `supported_params` entries (`name`, `type`, `default`, `range` with `min` and `max`, `description`, `required`), or `null` to remove the parameter. Replaces any earlier override. The response returns the computed `supported_params`.",
      "additionalProperties": true
    }
  }
}

Responses

200

Updated model.

application/json

Field Type Requirement Description and constraints
$ object Body
Additional properties are allowed
id string Required in parent
Model string ID. Same value as model_name.
Example: "my-custom-gpt-4o"
model_name string Required in parent
Model name used in API calls.
Example: "my-custom-gpt-4o"
base_model_name string Optional
Base model inherited from, when configured.
Example: "gpt-4o"
affiliation_category string Optional
keywordsai for built-in models, custom for your organization’s models.
Allowed: "keywordsai", "custom"
Example: "custom"
is_called_by_custom_name boolean Optional
Whether requests are sent upstream using this custom model name.
Example: false
input_cost number Optional
Input list price per 1M tokens in USD. Same as pricing.current.input.list_price.
Deprecated
Example: 2.5
output_cost number Optional
Output list price per 1M tokens in USD. Same as pricing.current.output.list_price.
Deprecated
Example: 10
cache_hit_input_cost number Optional
Cached input list price per 1M tokens in USD. Same as pricing.current.cache_read.list_price.
Deprecated
Example: 0.5
cache_creation_input_cost number Optional
Cache creation input list price per 1M tokens in USD. Same as pricing.current.cache_creation.list_price.
Deprecated
Example: 3
max_context_window integer Optional
Maximum context window size.
Example: 128000
function_call integer Optional
Function/tool calling support. 0 = no, 1 = yes.
Allowed: 0, 1
Example: 1
image_support integer Optional
Vision input support. 0 = no, 1 = yes.
Allowed: 0, 1
Example: 1
model_type string Optional
Model type.
Allowed: "chat", "embedding", "audio"
Example: "chat"
supported_params object Optional
Computed parameter support after applying model-specific overrides.
Additional properties are allowed
provider object Optional
Additional properties are allowed
provider.id string Required in parent
Provider string ID. Same value as provider_id.
Example: "my-vllm"
provider.provider_id string Required in parent
Unique provider identifier within your organization.
Example: "my-vllm"
provider.provider_name string Required in parent
Human-readable provider name.
Example: "My vLLM Server"
provider.extra_kwargs object Optional
Provider configuration such as base_url and timeout values. Secret values are not returned here.
Additional properties are allowed
Example: {"base_url":"https://vllm.example.com/v1"}
provider.created_at string or null Optional
Format: date-time
provider.updated_at string or null Optional
Format: date-time
pricing object Optional
The model’s prices as the gateway bills them. Read prices from here rather than from the cost fields.
pricing (allOf 1) object Schema variant
The model’s prices, resolved from unit_prices.
Reference: #/components/schemas/ModelDetailPricing
pricing (allOf 1).current object Required in parent
What a plain request to the model pays at the time of the request. A dimension the model does not price, or whose price is hidden, is null.
Reference: #/components/schemas/CurrentPricing
pricing (allOf 1).current.input object or null Required in parent
Text input, else the first media input priced.
pricing (allOf 1).current.input (allOf 1) object Schema variant
One priced dimension of pricing.current.
Reference: #/components/schemas/PriceSide
pricing (allOf 1).current.input (allOf 1).price number Required in parent
What a request pays: after the Respan discount, at the time-of-day schedule multiplier in effect at the time of the request.
Example: 2.5
pricing (allOf 1).current.input (allOf 1).list_price number Required in parent
The same price before the discount.
Example: 2.5
pricing (allOf 1).current.input (allOf 1).unit string Required in parent
What a price is quoted per: token is 1M tokens, character is 1M characters, the others are one image, second, minute or hour.
Reference: #/components/schemas/PriceUnit
Allowed: "token", "image", "second", "minute", "hour", "character", "request", "megapixel_second"
pricing (allOf 1).current.output object or null Required in parent
Text output, else the first media output priced.
pricing (allOf 1).current.output (allOf 1) object Schema variant
One priced dimension of pricing.current.
Reference: #/components/schemas/PriceSide
pricing (allOf 1).current.output (allOf 1).price number Required in parent
What a request pays: after the Respan discount, at the time-of-day schedule multiplier in effect at the time of the request.
Example: 2.5
pricing (allOf 1).current.output (allOf 1).list_price number Required in parent
The same price before the discount.
Example: 2.5
pricing (allOf 1).current.output (allOf 1).unit string Required in parent
What a price is quoted per: token is 1M tokens, character is 1M characters, the others are one image, second, minute or hour.
Reference: #/components/schemas/PriceUnit
Allowed: "token", "image", "second", "minute", "hour", "character", "request", "megapixel_second"
pricing (allOf 1).current.cache_read object or null Required in parent
Cached input read.
pricing (allOf 1).current.cache_read (allOf 1) object Schema variant
One priced dimension of pricing.current.
Reference: #/components/schemas/PriceSide
pricing (allOf 1).current.cache_read (allOf 1).price number Required in parent
What a request pays: after the Respan discount, at the time-of-day schedule multiplier in effect at the time of the request.
Example: 2.5
pricing (allOf 1).current.cache_read (allOf 1).list_price number Required in parent
The same price before the discount.
Example: 2.5
pricing (allOf 1).current.cache_read (allOf 1).unit string Required in parent
What a price is quoted per: token is 1M tokens, character is 1M characters, the others are one image, second, minute or hour.
Reference: #/components/schemas/PriceUnit
Allowed: "token", "image", "second", "minute", "hour", "character", "request", "megapixel_second"
pricing (allOf 1).current.cache_creation object or null Required in parent
Cache write.
pricing (allOf 1).current.cache_creation (allOf 1) object Schema variant
One priced dimension of pricing.current.
Reference: #/components/schemas/PriceSide
pricing (allOf 1).current.cache_creation (allOf 1).price number Required in parent
What a request pays: after the Respan discount, at the time-of-day schedule multiplier in effect at the time of the request.
Example: 2.5
pricing (allOf 1).current.cache_creation (allOf 1).list_price number Required in parent
The same price before the discount.
Example: 2.5
pricing (allOf 1).current.cache_creation (allOf 1).unit string Required in parent
What a price is quoted per: token is 1M tokens, character is 1M characters, the others are one image, second, minute or hour.
Reference: #/components/schemas/PriceUnit
Allowed: "token", "image", "second", "minute", "hour", "character", "request", "megapixel_second"
pricing (allOf 1).current.schedule_multiplier number or null Required in parent
The time-of-day multiplier in the prices; null without a schedule.
pricing (allOf 1).current.valid_until string or null Required in parent
When the schedule next changes the prices; null without one.
Format: date-time
pricing (allOf 1).sheet object Required in parent
Every rate the model states: one block per long-prompt tier and schedule level.
Reference: #/components/schemas/PriceSheet
pricing (allOf 1).sheet.blocks array<object> Required in parent
—
pricing (allOf 1).sheet.blocks[] object Array item
Reference: #/components/schemas/PriceSheetBlock
pricing (allOf 1).sheet.blocks[].prompt_tokens_above integer or null Required in parent
The long-prompt tier the block prices; null for the base.
pricing (allOf 1).sheet.blocks[].schedule_multiplier number or null Required in parent
The schedule level the block prices; null without a schedule.
pricing (allOf 1).sheet.blocks[].windows array<object> or null Required in parent
This week’s hours the level applies; null for all other times.
pricing (allOf 1).sheet.blocks[].windows[] object Array item
One occurrence this week of a schedule window.
Reference: #/components/schemas/PriceSheetWindow
pricing (allOf 1).sheet.blocks[].windows[].start string Required in parent
Format: date-time
pricing (allOf 1).sheet.blocks[].windows[].end string Required in parent
Format: date-time
pricing (allOf 1).sheet.blocks[].lines array<object> Required in parent
—
pricing (allOf 1).sheet.blocks[].lines[] object Array item
Reference: #/components/schemas/PriceSheetLine
pricing (allOf 1).sheet.blocks[].lines[].dimension string Required in parent
What is priced, such as input, output, cache_read or cache_creation.
Example: "input"
pricing (allOf 1).sheet.blocks[].lines[].price number Required in parent
After the Respan discount.
Example: 2.5
pricing (allOf 1).sheet.blocks[].lines[].list_price number Required in parent
Before the Respan discount.
Example: 2.5
pricing (allOf 1).sheet.blocks[].lines[].unit string Required in parent
What the price is quoted per, such as token, image, second or request.
Example: "token"
pricing (allOf 1).sheet.blocks[].lines[].conditions array<object> Required in parent
Conditions under which this price applies. Empty for the base price.
pricing (allOf 1).sheet.blocks[].lines[].conditions[] object Array item
A condition a price depends on, such as a long prompt, a service tier or a resolution.
Reference: #/components/schemas/PriceCondition
pricing (allOf 1).sheet.blocks[].lines[].conditions[].key string Required in parent
Example: "cache_ttl"
pricing (allOf 1).sheet.blocks[].lines[].conditions[].value any Required in parent
The value of the condition.
Example: "1h"
pricing (allOf 1).sheet.multipliers array<object> Required in parent
Multipliers on every price when the conditions hold.
pricing (allOf 1).sheet.multipliers[] object Array item
—
pricing (allOf 1).sheet.multipliers[].conditions array<object> Required in parent
—
pricing (allOf 1).sheet.multipliers[].conditions[] object Array item
A condition a price depends on, such as a long prompt, a service tier or a resolution.
Reference: #/components/schemas/PriceCondition
pricing (allOf 1).sheet.multipliers[].conditions[].key string Required in parent
Example: "cache_ttl"
pricing (allOf 1).sheet.multipliers[].conditions[].value any Required in parent
The value of the condition.
Example: "1h"
pricing (allOf 1).sheet.multipliers[].multiplier number Required in parent
—
unit_prices object Optional
The stored price entries, multipliers and schedule that pricing is resolved from. Read-only: set prices with the cost fields on the request.
Additional properties are allowed
Example: {"entries":[{"dimension":"input","unit":"token","price":2.5},{"dimension":"output","unit":"token","price":10}]}

OpenAPI response schema

{
  "type": "object",
  "required": [
    "id",
    "model_name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Model string ID. Same value as `model_name`.",
      "example": "my-custom-gpt-4o"
    },
    "model_name": {
      "type": "string",
      "description": "Model name used in API calls.",
      "example": "my-custom-gpt-4o"
    },
    "base_model_name": {
      "type": "string",
      "description": "Base model inherited from, when configured.",
      "example": "gpt-4o"
    },
    "affiliation_category": {
      "type": "string",
      "description": "`keywordsai` for built-in models, `custom` for your organization's models.",
      "enum": [
        "keywordsai",
        "custom"
      ],
      "example": "custom"
    },
    "is_called_by_custom_name": {
      "type": "boolean",
      "description": "Whether requests are sent upstream using this custom model name.",
      "example": false
    },
    "input_cost": {
      "type": "number",
      "description": "Input list price per 1M tokens in USD. Same as `pricing.current.input.list_price`.",
      "example": 2.5,
      "deprecated": true
    },
    "output_cost": {
      "type": "number",
      "description": "Output list price per 1M tokens in USD. Same as `pricing.current.output.list_price`.",
      "example": 10,
      "deprecated": true
    },
    "cache_hit_input_cost": {
      "type": "number",
      "description": "Cached input list price per 1M tokens in USD. Same as `pricing.current.cache_read.list_price`.",
      "example": 0.5,
      "deprecated": true
    },
    "cache_creation_input_cost": {
      "type": "number",
      "description": "Cache creation input list price per 1M tokens in USD. Same as `pricing.current.cache_creation.list_price`.",
      "example": 3,
      "deprecated": true
    },
    "max_context_window": {
      "type": "integer",
      "description": "Maximum context window size.",
      "example": 128000
    },
    "function_call": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "description": "Function/tool calling support. `0` = no, `1` = yes.",
      "example": 1
    },
    "image_support": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "description": "Vision input support. `0` = no, `1` = yes.",
      "example": 1
    },
    "model_type": {
      "type": "string",
      "description": "Model type.",
      "enum": [
        "chat",
        "embedding",
        "audio"
      ],
      "example": "chat"
    },
    "supported_params": {
      "type": "object",
      "description": "Computed parameter support after applying model-specific overrides.",
      "additionalProperties": true
    },
    "provider": {
      "type": "object",
      "required": [
        "id",
        "provider_id",
        "provider_name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Provider string ID. Same value as `provider_id`.",
          "example": "my-vllm"
        },
        "provider_id": {
          "type": "string",
          "description": "Unique provider identifier within your organization.",
          "example": "my-vllm"
        },
        "provider_name": {
          "type": "string",
          "description": "Human-readable provider name.",
          "example": "My vLLM Server"
        },
        "extra_kwargs": {
          "type": "object",
          "description": "Provider configuration such as `base_url` and timeout values. Secret values are not returned here.",
          "additionalProperties": true,
          "example": {
            "base_url": "https://vllm.example.com/v1"
          }
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        }
      },
      "additionalProperties": true
    },
    "pricing": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ModelDetailPricing"
        }
      ],
      "description": "The model's prices as the gateway bills them. Read prices from here rather than from the cost fields."
    },
    "unit_prices": {
      "type": "object",
      "additionalProperties": true,
      "description": "The stored price entries, multipliers and schedule that `pricing` is resolved from. Read-only: set prices with the cost fields on the request.",
      "example": {
        "entries": [
          {
            "dimension": "input",
            "unit": "token",
            "price": 2.5
          },
          {
            "dimension": "output",
            "unit": "token",
            "price": 10
          }
        ]
      }
    }
  },
  "additionalProperties": true
}

400

Bad Request

application/json

Field Type Requirement Description and constraints
$ object Body
—
detail string Optional
—
error string Optional
—

OpenAPI response schema

{
  "type": "object",
  "properties": {
    "detail": {
      "type": "string"
    },
    "error": {
      "type": "string"
    }
  }
}
Example
JSON
{ "error": "Invalid request" }

403

The API key is missing, invalid or expired, or it doesn’t have permission for this action.

application/json

Field Type Requirement Description and constraints
$ object Body
—
detail string Required in parent
—

OpenAPI response schema

{
  "type": "object",
  "required": [
    "detail"
  ],
  "properties": {
    "detail": {
      "type": "string"
    }
  }
}
Example
JSON
{ "detail": "Your API key is invalid or expired, please check your API key in the platform settings." }

404

Not Found

application/json

Field Type Requirement Description and constraints
$ object Body
—
detail string Optional
—
error string Optional
—

OpenAPI response schema

{
  "type": "object",
  "properties": {
    "detail": {
      "type": "string"
    },
    "error": {
      "type": "string"
    }
  }
}
Example
JSON
{ "error": "Not found" }

OpenAPI source

The operation and referenced components below retain the complete OpenAPI definitions, including constraints and examples.

OpenAPI operation

{
  "summary": "Replace a custom model",
  "operationId": "replaceCustomModel",
  "tags": [
    "Models"
  ],
  "description": "Replace editable fields for a custom model. The `model_name` path value remains the identifier.",
  "parameters": [
    {
      "name": "model_name",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string"
      },
      "description": "Model name. The route supports names containing slashes, such as `openai/gpt-4o-mini`."
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "base_model_name": {
              "type": "string",
              "description": "Base model to inherit properties from.",
              "example": "gpt-4o"
            },
            "custom_provider_id": {
              "type": "string",
              "description": "Custom provider string ID or provider identifier to associate.",
              "example": "my-vllm"
            },
            "provider_id": {
              "type": "string",
              "description": "Alternative to `custom_provider_id`.",
              "example": "my-vllm"
            },
            "input_cost": {
              "type": "number",
              "description": "Cost per 1M input tokens in USD.",
              "example": 2.5
            },
            "output_cost": {
              "type": "number",
              "description": "Cost per 1M output tokens in USD.",
              "example": 10
            },
            "cache_hit_input_cost": {
              "type": "number",
              "description": "Cost per 1M cached input tokens in USD."
            },
            "cache_creation_input_cost": {
              "type": "number",
              "description": "Cost per 1M cache creation input tokens in USD."
            },
            "max_context_window": {
              "type": "integer",
              "description": "Maximum context window size.",
              "example": 128000
            },
            "function_call": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            },
            "image_support": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            },
            "supported_params_override": {
              "type": "object",
              "description": "Partial override for the model's parameters: a map of parameter name to a parameter definition with the same shape as `supported_params` entries (`name`, `type`, `default`, `range` with `min` and `max`, `description`, `required`), or `null` to remove the parameter. Replaces any earlier override. The response returns the computed `supported_params`.",
              "additionalProperties": true
            }
          }
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Updated model.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "required": [
              "id",
              "model_name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Model string ID. Same value as `model_name`.",
                "example": "my-custom-gpt-4o"
              },
              "model_name": {
                "type": "string",
                "description": "Model name used in API calls.",
                "example": "my-custom-gpt-4o"
              },
              "base_model_name": {
                "type": "string",
                "description": "Base model inherited from, when configured.",
                "example": "gpt-4o"
              },
              "affiliation_category": {
                "type": "string",
                "description": "`keywordsai` for built-in models, `custom` for your organization's models.",
                "enum": [
                  "keywordsai",
                  "custom"
                ],
                "example": "custom"
              },
              "is_called_by_custom_name": {
                "type": "boolean",
                "description": "Whether requests are sent upstream using this custom model name.",
                "example": false
              },
              "input_cost": {
                "type": "number",
                "description": "Input list price per 1M tokens in USD. Same as `pricing.current.input.list_price`.",
                "example": 2.5,
                "deprecated": true
              },
              "output_cost": {
                "type": "number",
                "description": "Output list price per 1M tokens in USD. Same as `pricing.current.output.list_price`.",
                "example": 10,
                "deprecated": true
              },
              "cache_hit_input_cost": {
                "type": "number",
                "description": "Cached input list price per 1M tokens in USD. Same as `pricing.current.cache_read.list_price`.",
                "example": 0.5,
                "deprecated": true
              },
              "cache_creation_input_cost": {
                "type": "number",
                "description": "Cache creation input list price per 1M tokens in USD. Same as `pricing.current.cache_creation.list_price`.",
                "example": 3,
                "deprecated": true
              },
              "max_context_window": {
                "type": "integer",
                "description": "Maximum context window size.",
                "example": 128000
              },
              "function_call": {
                "type": "integer",
                "enum": [
                  0,
                  1
                ],
                "description": "Function/tool calling support. `0` = no, `1` = yes.",
                "example": 1
              },
              "image_support": {
                "type": "integer",
                "enum": [
                  0,
                  1
                ],
                "description": "Vision input support. `0` = no, `1` = yes.",
                "example": 1
              },
              "model_type": {
                "type": "string",
                "description": "Model type.",
                "enum": [
                  "chat",
                  "embedding",
                  "audio"
                ],
                "example": "chat"
              },
              "supported_params": {
                "type": "object",
                "description": "Computed parameter support after applying model-specific overrides.",
                "additionalProperties": true
              },
              "provider": {
                "type": "object",
                "required": [
                  "id",
                  "provider_id",
                  "provider_name"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Provider string ID. Same value as `provider_id`.",
                    "example": "my-vllm"
                  },
                  "provider_id": {
                    "type": "string",
                    "description": "Unique provider identifier within your organization.",
                    "example": "my-vllm"
                  },
                  "provider_name": {
                    "type": "string",
                    "description": "Human-readable provider name.",
                    "example": "My vLLM Server"
                  },
                  "extra_kwargs": {
                    "type": "object",
                    "description": "Provider configuration such as `base_url` and timeout values. Secret values are not returned here.",
                    "additionalProperties": true,
                    "example": {
                      "base_url": "https://vllm.example.com/v1"
                    }
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                },
                "additionalProperties": true
              },
              "pricing": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ModelDetailPricing"
                  }
                ],
                "description": "The model's prices as the gateway bills them. Read prices from here rather than from the cost fields."
              },
              "unit_prices": {
                "type": "object",
                "additionalProperties": true,
                "description": "The stored price entries, multipliers and schedule that `pricing` is resolved from. Read-only: set prices with the cost fields on the request.",
                "example": {
                  "entries": [
                    {
                      "dimension": "input",
                      "unit": "token",
                      "price": 2.5
                    },
                    {
                      "dimension": "output",
                      "unit": "token",
                      "price": 10
                    }
                  ]
                }
              }
            },
            "additionalProperties": true
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "detail": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          },
          "example": {
            "error": "Invalid request"
          }
        }
      }
    },
    "403": {
      "description": "The API key is missing, invalid or expired, or it doesn't have permission for this action.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "required": [
              "detail"
            ],
            "properties": {
              "detail": {
                "type": "string"
              }
            }
          },
          "example": {
            "detail": "Your API key is invalid or expired, please check your API key in the platform settings."
          }
        }
      }
    },
    "404": {
      "description": "Not Found",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "detail": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          },
          "example": {
            "error": "Not found"
          }
        }
      }
    }
  },
  "security": [
    {
      "RespanApiKey": []
    },
    {
      "DashboardJwt": []
    }
  ]
}

OpenAPI path metadata

{}

Referenced OpenAPI components

{
  "schemas": {
    "CurrentPricing": {
      "type": "object",
      "description": "What a plain request to the model pays at the time of the request. A dimension the model does not price, or whose price is hidden, is `null`.",
      "required": [
        "input",
        "output",
        "cache_read",
        "cache_creation",
        "schedule_multiplier",
        "valid_until"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/components/schemas/PriceSide"
            }
          ],
          "nullable": true,
          "description": "Text input, else the first media input priced."
        },
        "output": {
          "allOf": [
            {
              "$ref": "#/components/schemas/PriceSide"
            }
          ],
          "nullable": true,
          "description": "Text output, else the first media output priced."
        },
        "cache_read": {
          "allOf": [
            {
              "$ref": "#/components/schemas/PriceSide"
            }
          ],
          "nullable": true,
          "description": "Cached input read."
        },
        "cache_creation": {
          "allOf": [
            {
              "$ref": "#/components/schemas/PriceSide"
            }
          ],
          "nullable": true,
          "description": "Cache write."
        },
        "schedule_multiplier": {
          "type": "number",
          "nullable": true,
          "description": "The time-of-day multiplier in the prices; `null` without a schedule."
        },
        "valid_until": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "When the schedule next changes the prices; `null` without one."
        }
      }
    },
    "ModelDetailPricing": {
      "type": "object",
      "description": "The model's prices, resolved from `unit_prices`.",
      "required": [
        "current",
        "sheet"
      ],
      "properties": {
        "current": {
          "$ref": "#/components/schemas/CurrentPricing"
        },
        "sheet": {
          "$ref": "#/components/schemas/PriceSheet"
        }
      }
    },
    "PriceCondition": {
      "type": "object",
      "description": "A condition a price depends on, such as a long prompt, a service tier or a resolution.",
      "required": [
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string",
          "example": "cache_ttl"
        },
        "value": {
          "description": "The value of the condition.",
          "example": "1h"
        }
      }
    },
    "PriceSheet": {
      "type": "object",
      "description": "Every rate the model states: one block per long-prompt tier and schedule level.",
      "required": [
        "blocks",
        "multipliers"
      ],
      "properties": {
        "blocks": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PriceSheetBlock"
          }
        },
        "multipliers": {
          "type": "array",
          "description": "Multipliers on every price when the conditions hold.",
          "items": {
            "type": "object",
            "required": [
              "conditions",
              "multiplier"
            ],
            "properties": {
              "conditions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PriceCondition"
                }
              },
              "multiplier": {
                "type": "number"
              }
            }
          }
        }
      }
    },
    "PriceSheetBlock": {
      "type": "object",
      "required": [
        "prompt_tokens_above",
        "schedule_multiplier",
        "windows",
        "lines"
      ],
      "properties": {
        "prompt_tokens_above": {
          "type": "integer",
          "nullable": true,
          "description": "The long-prompt tier the block prices; `null` for the base."
        },
        "schedule_multiplier": {
          "type": "number",
          "nullable": true,
          "description": "The schedule level the block prices; `null` without a schedule."
        },
        "windows": {
          "type": "array",
          "nullable": true,
          "items": {
            "$ref": "#/components/schemas/PriceSheetWindow"
          },
          "description": "This week's hours the level applies; `null` for all other times."
        },
        "lines": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PriceSheetLine"
          }
        }
      }
    },
    "PriceSheetLine": {
      "type": "object",
      "required": [
        "dimension",
        "price",
        "list_price",
        "unit",
        "conditions"
      ],
      "properties": {
        "dimension": {
          "type": "string",
          "description": "What is priced, such as `input`, `output`, `cache_read` or `cache_creation`.",
          "example": "input"
        },
        "price": {
          "type": "number",
          "description": "After the Respan discount.",
          "example": 2.5
        },
        "list_price": {
          "type": "number",
          "description": "Before the Respan discount.",
          "example": 2.5
        },
        "unit": {
          "type": "string",
          "description": "What the price is quoted per, such as `token`, `image`, `second` or `request`.",
          "example": "token"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PriceCondition"
          },
          "description": "Conditions under which this price applies. Empty for the base price."
        }
      }
    },
    "PriceSheetWindow": {
      "type": "object",
      "description": "One occurrence this week of a schedule window.",
      "required": [
        "start",
        "end"
      ],
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time"
        },
        "end": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "PriceSide": {
      "type": "object",
      "description": "One priced dimension of `pricing.current`.",
      "required": [
        "price",
        "list_price",
        "unit"
      ],
      "properties": {
        "price": {
          "type": "number",
          "description": "What a request pays: after the Respan discount, at the time-of-day schedule multiplier in effect at the time of the request.",
          "example": 2.5
        },
        "list_price": {
          "type": "number",
          "description": "The same price before the discount.",
          "example": 2.5
        },
        "unit": {
          "$ref": "#/components/schemas/PriceUnit"
        }
      }
    },
    "PriceUnit": {
      "type": "string",
      "enum": [
        "token",
        "image",
        "second",
        "minute",
        "hour",
        "character",
        "request",
        "megapixel_second"
      ],
      "description": "What a price is quoted per: `token` is 1M tokens, `character` is 1M characters, the others are one image, second, minute or hour."
    }
  },
  "securitySchemes": {
    "DashboardJwt": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "Dashboard JWT",
      "description": "Use a dashboard JWT only for dashboard-authenticated endpoints. Respan API-key endpoints use the respanApiKey auth field instead.",
      "x-fern-bearer": {
        "name": "dashboardJwt",
        "env": "RESPAN_DASHBOARD_JWT"
      }
    },
    "RespanApiKey": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "Respan API key",
      "description": "Use your Respan API key for Respan API authentication. Enter only the Respan API key value; clients send Authorization: Bearer <RESPAN_API_KEY>. For /api/responses, provider credentials such as Perplexity, OpenAI, or Azure OpenAI go in Settings -> Providers or respan_params.credential_override in the request body, not in this authentication field.",
      "x-fern-bearer": {
        "name": "respanApiKey",
        "env": "RESPAN_API_KEY"
      }
    }
  }
}