# Get a public model by name

**API:** Model API

**Endpoint:** `GET /api/platform/model-catalog/model`

Anonymous exact lookup by public name or registered alias. Returns the canonical model ID and the same model object as the catalog. Unknown or unlisted models return 404. locale controls document selection only.

## Base URL

- `https://openapi.felo.ai` — 本番環境

## Authentication

No authentication required — this endpoint is anonymous.

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `model` | query | yes | string | Exact case-sensitive public model name or registered alias |
| `locale` | query | no | string, enum: "en", "zh-CN", "zh-TW", "ja", "ko", "ru", …, default: "en" | Document language; falls back to English when unavailable |
| `If-None-Match` | header | no | string | Previous ETag; matching content returns 304 |

## Responses

### 200 — Public model details

Headers:
- `Cache-Control` (string) — public, max-age=60
- `ETag` (string) — Representation fingerprint

**application/json**

Schema: `ModelCatalogModelResponse` (`#/components/schemas/ModelCatalogModelResponse`)

Example:

```json
{
  "schema_version": 2,
  "locale": "en",
  "data": {
    "id": "example-model",
    "slug": "example/example-model",
    "name": "Example model",
    "short_name": "Example",
    "author": "example",
    "author_display_name": "Example",
    "icon_url": null,
    "model_kind": "chat",
    "recommended_protocol": "messages",
    "summary": "Example model.",
    "description": "Illustrative text, not a real model.",
    "best_for": [],
    "content_locale": "en",
    "available_content_locales": [
      "en"
    ],
    "document": {
      "notice": null,
      "extra": {},
      "updated_at": "2026-10-14T00:00:00Z"
    },
    "latency_class": null,
    "trial_status": "unknown",
    "released_at": null,
    "sort_order": 0,
    "updated_at": "2026-10-14T00:00:00Z",
    "context_length": 32768,
    "max_completion_tokens": 4096,
    "input_modalities": [
      "text"
    ],
    "output_modalities": [
      "text"
    ],
    "capabilities": [],
    "supported_parameters": [
      "temperature"
    ],
    "reasoning": null,
    "video_spec": null,
    "default_channel": "standard",
    "channels": [
      {
        "code": "standard",
        "name": "Standard",
        "service_tier": "standard",
        "region": null,
        "is_default": true,
        "runnable": true,
        "standard_pricing": {
          "channel": "standard",
          "currency": "USD",
          "basis": "standard",
          "billing_kind": "token",
          "prompt": "0.000001",
          "completion": "0.000002",
          "input_cache_write": "0.00000125",
          "input_cache_write_1h": "0.000002",
          "input_cache_write_12h": "0.000004",
          "tiers": []
        },
        "discount_multiplier": "0.8",
        "pricing_mode": "configured_rates"
      },
      {
        "code": "priority",
        "name": "Priority",
        "service_tier": "priority",
        "region": null,
        "is_default": false,
        "runnable": false,
        "standard_pricing": null,
        "discount_multiplier": null,
        "pricing_mode": "configured_rates"
      }
    ],
    "parameter_definitions": {
      "temperature": {}
    }
  }
}
```

### 304 — Unchanged representation; empty body

Headers:
- `Cache-Control` (string) — public, max-age=60
- `ETag` (string) — Representation fingerprint

### 400 — Invalid model name or locale

### 404 — Model not found

### 422 — Missing model query parameter

### 503 — Model catalog unavailable

## Schema definitions

### ModelCatalogAudioSpec

`#/components/schemas/ModelCatalogAudioSpec`

```json
{
  "additionalProperties": false,
  "properties": {
    "input": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Input"
    },
    "output": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output"
    },
    "output_optional": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Optional"
    }
  },
  "title": "AudioSpec",
  "type": "object"
}
```

### ModelCatalogCatalogModel

`#/components/schemas/ModelCatalogCatalogModel`

```json
{
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "short_name": {
      "title": "Short Name",
      "type": "string"
    },
    "author": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Author"
    },
    "author_display_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Author Display Name"
    },
    "icon_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Icon Url"
    },
    "model_kind": {
      "enum": [
        "chat",
        "image_generation",
        "video_generation",
        "decisions"
      ],
      "title": "Model Kind",
      "type": "string"
    },
    "recommended_protocol": {
      "anyOf": [
        {
          "enum": [
            "responses",
            "messages"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "モデル全体に対するクライアント向けの推奨のみ。非チャットモデルでは null。呼び出せるプロトコルを制限するものではありません",
      "title": "Recommended Protocol"
    },
    "summary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Description"
    },
    "best_for": {
      "items": {
        "type": "string"
      },
      "title": "Best For",
      "type": "array"
    },
    "content_locale": {
      "anyOf": [
        {
          "enum": [
            "en",
            "zh-CN",
            "zh-TW",
            "ja",
            "ko",
            "ru",
            "pt-BR",
            "de",
            "fr",
            "es",
            "nl",
            "it",
            "vi",
            "id",
            "th",
            "ms",
            "hi",
            "bn",
            "pl",
            "cs",
            "uk",
            "tr",
            "ar",
            "he",
            "fa",
            "ur"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Content Locale"
    },
    "available_content_locales": {
      "items": {
        "enum": [
          "en",
          "zh-CN",
          "zh-TW",
          "ja",
          "ko",
          "ru",
          "pt-BR",
          "de",
          "fr",
          "es",
          "nl",
          "it",
          "vi",
          "id",
          "th",
          "ms",
          "hi",
          "bn",
          "pl",
          "cs",
          "uk",
          "tr",
          "ar",
          "he",
          "fa",
          "ur"
        ],
        "type": "string"
      },
      "title": "Available Content Locales",
      "type": "array"
    },
    "document": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogPublicDocument"
        },
        {
          "type": "null"
        }
      ],
      "description": "選択した言語のみ。summary/description/best_for はモデル側に保持されます"
    },
    "latency_class": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Latency Class"
    },
    "trial_status": {
      "title": "Trial Status",
      "type": "string"
    },
    "released_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Model release date in ISO 8601 UTC; may use the OpenRouter listing time. Manual overrides take precedence; null means unknown.",
      "title": "Released At"
    },
    "sort_order": {
      "title": "Sort Order",
      "type": "integer"
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At"
    },
    "context_length": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Context Length"
    },
    "max_completion_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Completion Tokens"
    },
    "input_modalities": {
      "items": {
        "type": "string"
      },
      "title": "Input Modalities",
      "type": "array"
    },
    "output_modalities": {
      "items": {
        "type": "string"
      },
      "title": "Output Modalities",
      "type": "array"
    },
    "capabilities": {
      "items": {
        "type": "string"
      },
      "title": "Capabilities",
      "type": "array"
    },
    "supported_parameters": {
      "items": {
        "type": "string"
      },
      "title": "Supported Parameters",
      "type": "array"
    },
    "parameter_definitions": {
      "additionalProperties": {
        "additionalProperties": true,
        "type": "object"
      },
      "description": "Supported parameters keyed by name, using OpenRouter type/values/min/max format (not JSON Schema); preserves unknown fields; an empty definition means supported with unspecified constraints. An empty object means no parameter metadata. No defaults or options are inferred.",
      "title": "Parameter Definitions",
      "type": "object"
    },
    "reasoning": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "description": "上流の reasoning JSON オブジェクト。不明なフィールドを保持します。利用できない場合は null",
      "title": "Reasoning"
    },
    "video_spec": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogVideoSpec"
        },
        {
          "type": "null"
        }
      ]
    },
    "default_channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Default Channel"
    },
    "channels": {
      "items": {
        "$ref": "#/components/schemas/ModelCatalogWalletPublicChannel"
      },
      "title": "Channels",
      "type": "array"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "short_name",
    "author",
    "author_display_name",
    "icon_url",
    "model_kind",
    "summary",
    "description",
    "best_for",
    "content_locale",
    "available_content_locales",
    "document",
    "latency_class",
    "trial_status",
    "released_at",
    "sort_order",
    "updated_at",
    "context_length",
    "max_completion_tokens",
    "input_modalities",
    "output_modalities",
    "capabilities",
    "supported_parameters",
    "reasoning",
    "video_spec"
  ],
  "title": "CatalogModel",
  "type": "object"
}
```

### ModelCatalogCatalogNotice

`#/components/schemas/ModelCatalogCatalogNotice`

```json
{
  "properties": {
    "title": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Title"
    },
    "body": {
      "title": "Body",
      "type": "string"
    },
    "link_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Link Text"
    },
    "target_slug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Slug"
    }
  },
  "required": [
    "title",
    "body",
    "link_text",
    "target_slug"
  ],
  "title": "CatalogNotice",
  "type": "object"
}
```

### ModelCatalogCatalogPricing

`#/components/schemas/ModelCatalogCatalogPricing`

```json
{
  "properties": {
    "channel": {
      "title": "Channel",
      "type": "string"
    },
    "currency": {
      "const": "USD",
      "title": "Currency",
      "type": "string"
    },
    "basis": {
      "const": "standard",
      "title": "Basis",
      "type": "string"
    },
    "billing_kind": {
      "title": "Billing Kind",
      "type": "string"
    },
    "prompt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "入力トークンあたりの USD。null は利用不可、0 は無料を意味します",
      "title": "Prompt"
    },
    "completion": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "出力トークンあたりの USD",
      "title": "Completion"
    },
    "audio": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "入力音声トークンあたりの USD",
      "title": "Audio"
    },
    "input_audio_cache": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "キャッシュされた音声トークンあたりの USD",
      "title": "Input Audio Cache"
    },
    "input_image_cache": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "USD per cached image token",
      "title": "Input Image Cache"
    },
    "internal_reasoning": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "推論トークンあたりの USD",
      "title": "Internal Reasoning"
    },
    "input_cache_read": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "キャッシュされた入力トークンあたりの USD",
      "title": "Input Cache Read"
    },
    "input_cache_write": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "キャッシュ書き込みトークンあたりの USD",
      "title": "Input Cache Write"
    },
    "input_cache_write_1h": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "1 時間のキャッシュ書き込みトークンあたりの USD。既定の TTL 書き込みとは別です",
      "title": "Input Cache Write 1H"
    },
    "input_cache_write_12h": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "USD per 12-hour cache write token; separate from default TTL writes",
      "title": "Input Cache Write 12H"
    },
    "input_image": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "入力画像あたりの USD",
      "title": "Input Image"
    },
    "output_image": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "生成画像あたりの USD",
      "title": "Output Image"
    },
    "input_image_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "入力画像トークンあたりの USD",
      "title": "Input Image Token"
    },
    "output_image_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "出力画像トークンあたりの USD",
      "title": "Output Image Token"
    },
    "input_video_second": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "入力動画 1 秒あたりの USD",
      "title": "Input Video Second"
    },
    "output_video_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "USD per generated video token",
      "title": "Output Video Token"
    },
    "output_video_second": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "生成動画 1 秒あたりの USD",
      "title": "Output Video Second"
    },
    "request": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "リクエストあたりの USD",
      "title": "Request"
    },
    "credit": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "USD per credit; billed using the upstream call multiplier",
      "title": "Credit"
    },
    "web_search": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ウェブ検索リクエストあたりの USD",
      "title": "Web Search"
    },
    "tiers": {
      "description": "順序を保持します。最初に一致したティアが基本料金を上書きします",
      "items": {
        "$ref": "#/components/schemas/ModelCatalogPriceTier"
      },
      "title": "Tiers",
      "type": "array"
    }
  },
  "required": [
    "channel",
    "currency",
    "basis",
    "billing_kind",
    "tiers"
  ],
  "title": "CatalogPricing",
  "type": "object"
}
```

### ModelCatalogDurationSpec

`#/components/schemas/ModelCatalogDurationSpec`

```json
{
  "additionalProperties": false,
  "properties": {
    "min": {
      "minimum": 0,
      "title": "Min",
      "type": "number"
    },
    "max": {
      "exclusiveMinimum": 0,
      "title": "Max",
      "type": "number"
    },
    "step": {
      "exclusiveMinimum": 0,
      "title": "Step",
      "type": "number"
    }
  },
  "required": [
    "min",
    "max",
    "step"
  ],
  "title": "DurationSpec",
  "type": "object"
}
```

### ModelCatalogModelResponse

`#/components/schemas/ModelCatalogModelResponse`

```json
{
  "properties": {
    "schema_version": {
      "const": 2,
      "title": "Schema Version",
      "type": "integer"
    },
    "locale": {
      "enum": [
        "en",
        "zh-CN",
        "zh-TW",
        "ja",
        "ko",
        "ru",
        "pt-BR",
        "de",
        "fr",
        "es",
        "nl",
        "it",
        "vi",
        "id",
        "th",
        "ms",
        "hi",
        "bn",
        "pl",
        "cs",
        "uk",
        "tr",
        "ar",
        "he",
        "fa",
        "ur"
      ],
      "title": "Locale",
      "type": "string"
    },
    "data": {
      "$ref": "#/components/schemas/ModelCatalogCatalogModel"
    }
  },
  "required": [
    "schema_version",
    "locale",
    "data"
  ],
  "title": "CatalogModelResponse",
  "type": "object"
}
```

### ModelCatalogPixelFrameEstimator

`#/components/schemas/ModelCatalogPixelFrameEstimator`

```json
{
  "additionalProperties": false,
  "properties": {
    "kind": {
      "const": "pixel_frames",
      "default": "pixel_frames",
      "title": "Kind",
      "type": "string"
    },
    "version": {
      "const": 1,
      "default": 1,
      "title": "Version",
      "type": "integer"
    },
    "fps": {
      "const": "24",
      "default": "24",
      "title": "Fps",
      "type": "string"
    },
    "pixels_per_token": {
      "const": "1024",
      "default": "1024",
      "title": "Pixels Per Token",
      "type": "string"
    }
  },
  "title": "PixelFrameEstimator",
  "type": "object"
}
```

### ModelCatalogPriceCondition

`#/components/schemas/ModelCatalogPriceCondition`

```json
{
  "properties": {
    "field": {
      "description": "Felo の料金コンテキスト（例：input_context_tokens）",
      "title": "Field",
      "type": "string"
    },
    "operator": {
      "enum": [
        "eq",
        "gt",
        "gte"
      ],
      "title": "Operator",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        }
      ],
      "title": "Value"
    }
  },
  "required": [
    "field",
    "operator",
    "value"
  ],
  "title": "PriceCondition",
  "type": "object"
}
```

### ModelCatalogPriceTier

`#/components/schemas/ModelCatalogPriceTier`

```json
{
  "properties": {
    "conditions": {
      "items": {
        "$ref": "#/components/schemas/ModelCatalogPriceCondition"
      },
      "title": "Conditions",
      "type": "array"
    },
    "overrides": {
      "additionalProperties": {
        "type": "string"
      },
      "title": "Overrides",
      "type": "object"
    }
  },
  "required": [
    "conditions",
    "overrides"
  ],
  "title": "PriceTier",
  "type": "object"
}
```

### ModelCatalogPublicDocument

`#/components/schemas/ModelCatalogPublicDocument`

```json
{
  "properties": {
    "notice": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogCatalogNotice"
        },
        {
          "type": "null"
        }
      ]
    },
    "extra": {
      "additionalProperties": true,
      "title": "Extra",
      "type": "object"
    },
    "updated_at": {
      "description": "選択した言語のドキュメントの更新日時",
      "title": "Updated At",
      "type": "string"
    }
  },
  "required": [
    "notice",
    "extra",
    "updated_at"
  ],
  "title": "PublicDocument",
  "type": "object"
}
```

### ModelCatalogPublicSettlementPolicy

`#/components/schemas/ModelCatalogPublicSettlementPolicy`

```json
{
  "properties": {
    "version": {
      "const": 1,
      "title": "Version",
      "type": "integer"
    },
    "primary": {
      "const": "configured_rates",
      "title": "Primary",
      "type": "string"
    },
    "fallback": {
      "enum": [
        "upstream_cost",
        "review_required"
      ],
      "title": "Fallback",
      "type": "string"
    }
  },
  "required": [
    "version",
    "primary",
    "fallback"
  ],
  "title": "PublicSettlementPolicy",
  "type": "object"
}
```

### ModelCatalogSecondVideoReference

`#/components/schemas/ModelCatalogSecondVideoReference`

```json
{
  "additionalProperties": false,
  "properties": {
    "version": {
      "const": 1,
      "default": 1,
      "title": "Version",
      "type": "integer"
    },
    "currency": {
      "const": "USD",
      "default": "USD",
      "title": "Currency",
      "type": "string"
    },
    "basis": {
      "const": "public_reference_before_discount",
      "default": "public_reference_before_discount",
      "title": "Basis",
      "type": "string"
    },
    "as_of": {
      "title": "As Of",
      "type": "string"
    },
    "snapshot_id": {
      "title": "Snapshot Id",
      "type": "string"
    },
    "settlement_basis": {
      "const": "upstream_cost",
      "default": "upstream_cost",
      "title": "Settlement Basis",
      "type": "string"
    },
    "source_model_id": {
      "title": "Source Model Id",
      "type": "string"
    },
    "canonical_slug": {
      "title": "Canonical Slug",
      "type": "string"
    },
    "supported_durations": {
      "items": {
        "type": "integer"
      },
      "title": "Supported Durations",
      "type": "array"
    },
    "supported_resolutions": {
      "items": {
        "type": "string"
      },
      "title": "Supported Resolutions",
      "type": "array"
    },
    "supported_aspect_ratios": {
      "items": {
        "type": "string"
      },
      "title": "Supported Aspect Ratios",
      "type": "array"
    },
    "supported_frame_images": {
      "items": {
        "type": "string"
      },
      "title": "Supported Frame Images",
      "type": "array"
    },
    "seed_supported": {
      "title": "Seed Supported",
      "type": "boolean"
    },
    "reservation": {
      "$ref": "#/components/schemas/ModelCatalogVideoReservation"
    },
    "request_defaults": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "boolean"
          }
        ]
      },
      "title": "Request Defaults",
      "type": "object"
    },
    "rows": {
      "items": {
        "$ref": "#/components/schemas/ModelCatalogVideoReferenceRow"
      },
      "title": "Rows",
      "type": "array"
    },
    "pricing_type": {
      "const": "per_second",
      "title": "Pricing Type",
      "type": "string"
    }
  },
  "required": [
    "as_of",
    "snapshot_id",
    "source_model_id",
    "canonical_slug",
    "supported_durations",
    "supported_resolutions",
    "supported_aspect_ratios",
    "supported_frame_images",
    "seed_supported",
    "reservation",
    "request_defaults",
    "rows",
    "pricing_type"
  ],
  "title": "SecondVideoReference",
  "type": "object"
}
```

### ModelCatalogTokenVideoReference

`#/components/schemas/ModelCatalogTokenVideoReference`

```json
{
  "additionalProperties": false,
  "properties": {
    "version": {
      "const": 1,
      "default": 1,
      "title": "Version",
      "type": "integer"
    },
    "currency": {
      "const": "USD",
      "default": "USD",
      "title": "Currency",
      "type": "string"
    },
    "basis": {
      "const": "public_reference_before_discount",
      "default": "public_reference_before_discount",
      "title": "Basis",
      "type": "string"
    },
    "as_of": {
      "title": "As Of",
      "type": "string"
    },
    "snapshot_id": {
      "title": "Snapshot Id",
      "type": "string"
    },
    "settlement_basis": {
      "const": "upstream_cost",
      "default": "upstream_cost",
      "title": "Settlement Basis",
      "type": "string"
    },
    "source_model_id": {
      "title": "Source Model Id",
      "type": "string"
    },
    "canonical_slug": {
      "title": "Canonical Slug",
      "type": "string"
    },
    "supported_durations": {
      "items": {
        "type": "integer"
      },
      "title": "Supported Durations",
      "type": "array"
    },
    "supported_resolutions": {
      "items": {
        "type": "string"
      },
      "title": "Supported Resolutions",
      "type": "array"
    },
    "supported_aspect_ratios": {
      "items": {
        "type": "string"
      },
      "title": "Supported Aspect Ratios",
      "type": "array"
    },
    "supported_frame_images": {
      "items": {
        "type": "string"
      },
      "title": "Supported Frame Images",
      "type": "array"
    },
    "seed_supported": {
      "title": "Seed Supported",
      "type": "boolean"
    },
    "reservation": {
      "$ref": "#/components/schemas/ModelCatalogVideoReservation"
    },
    "request_defaults": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "boolean"
          }
        ]
      },
      "title": "Request Defaults",
      "type": "object"
    },
    "rows": {
      "items": {
        "$ref": "#/components/schemas/ModelCatalogVideoReferenceRow"
      },
      "title": "Rows",
      "type": "array"
    },
    "pricing_type": {
      "const": "video_token",
      "title": "Pricing Type",
      "type": "string"
    },
    "token_estimator": {
      "$ref": "#/components/schemas/ModelCatalogPixelFrameEstimator"
    }
  },
  "required": [
    "as_of",
    "snapshot_id",
    "source_model_id",
    "canonical_slug",
    "supported_durations",
    "supported_resolutions",
    "supported_aspect_ratios",
    "supported_frame_images",
    "seed_supported",
    "reservation",
    "request_defaults",
    "rows",
    "pricing_type",
    "token_estimator"
  ],
  "title": "TokenVideoReference",
  "type": "object"
}
```

### ModelCatalogVideoReferenceRow

`#/components/schemas/ModelCatalogVideoReferenceRow`

```json
{
  "additionalProperties": false,
  "properties": {
    "resolution": {
      "title": "Resolution",
      "type": "string"
    },
    "aspect_ratio": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Aspect Ratio"
    },
    "size": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Size"
    },
    "input_mode": {
      "enum": [
        "text_to_video",
        "image_to_video",
        "first_last_frame"
      ],
      "title": "Input Mode",
      "type": "string"
    },
    "generate_audio": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Generate Audio"
    },
    "unit": {
      "enum": [
        "output_video_second",
        "video_token"
      ],
      "title": "Unit",
      "type": "string"
    },
    "unit_price_usd": {
      "title": "Unit Price Usd",
      "type": "string"
    },
    "derived_output_second_usd": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Derived Output Second Usd"
    },
    "input_image_billing": {
      "enum": [
        "per_image",
        "included",
        "not_applicable"
      ],
      "title": "Input Image Billing",
      "type": "string"
    },
    "input_image_price_usd": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Input Image Price Usd"
    },
    "reservation_supported": {
      "const": true,
      "default": true,
      "title": "Reservation Supported",
      "type": "boolean"
    },
    "reservation_unavailable_reason": {
      "default": null,
      "title": "Reservation Unavailable Reason",
      "type": "null"
    },
    "max_duration_output_estimate_usd": {
      "title": "Max Duration Output Estimate Usd",
      "type": "string"
    }
  },
  "required": [
    "resolution",
    "input_mode",
    "unit",
    "unit_price_usd",
    "input_image_billing",
    "max_duration_output_estimate_usd"
  ],
  "title": "VideoReferenceRow",
  "type": "object"
}
```

### ModelCatalogVideoReservation

`#/components/schemas/ModelCatalogVideoReservation`

```json
{
  "additionalProperties": false,
  "properties": {
    "strategy": {
      "const": "requested_duration_or_model_max",
      "default": "requested_duration_or_model_max",
      "title": "Strategy",
      "type": "string"
    },
    "max_duration_seconds": {
      "exclusiveMinimum": 0,
      "title": "Max Duration Seconds",
      "type": "integer"
    },
    "output_count": {
      "const": 1,
      "default": 1,
      "title": "Output Count",
      "type": "integer"
    }
  },
  "required": [
    "max_duration_seconds"
  ],
  "title": "VideoReservation",
  "type": "object"
}
```

### ModelCatalogVideoSalePricing

`#/components/schemas/ModelCatalogVideoSalePricing`

```json
{
  "properties": {
    "currency": {
      "const": "USD",
      "title": "Currency",
      "type": "string"
    },
    "basis": {
      "const": "sale_before_discount",
      "title": "Basis",
      "type": "string"
    },
    "unit": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Primary billing unit, e.g. output_video_second or video_token",
      "title": "Unit"
    },
    "selection": {
      "anyOf": [
        {
          "const": "first_match",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "First matching rule wins; the final empty rule is the default",
      "title": "Selection"
    },
    "minimum_charge_usd": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Marked-up minimum charge in USD, before discount; null if none",
      "title": "Minimum Charge Usd"
    },
    "rows": {
      "description": "Per-spec sale unit prices. Final charge uses the upstream-reported usage, so the billed amount is upstream cost times markup_multiplier times discount_multiplier; a minimum billable duration may apply.",
      "items": {
        "$ref": "#/components/schemas/ModelCatalogVideoSalePricingRow"
      },
      "title": "Rows",
      "type": "array"
    }
  },
  "required": [
    "currency",
    "basis",
    "rows"
  ],
  "title": "VideoSalePricing",
  "type": "object"
}
```

### ModelCatalogVideoSalePricingRow

`#/components/schemas/ModelCatalogVideoSalePricingRow`

```json
{
  "properties": {
    "conditions": {
      "additionalProperties": true,
      "description": "Equality-condition summary; predicates retain the complete rule semantics",
      "title": "Conditions",
      "type": "object"
    },
    "predicates": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/ModelCatalogPriceCondition"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ordered rule predicates including range comparisons",
      "title": "Predicates"
    },
    "rates": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "USD sale unit prices (purchase price times markup_multiplier), before discount",
      "title": "Rates",
      "type": "object"
    }
  },
  "required": [
    "conditions",
    "rates"
  ],
  "title": "VideoSalePricingRow",
  "type": "object"
}
```

### ModelCatalogVideoSecondPricing

`#/components/schemas/ModelCatalogVideoSecondPricing`

```json
{
  "properties": {
    "currency": {
      "const": "USD",
      "title": "Currency",
      "type": "string"
    },
    "basis": {
      "const": "sale_before_discount",
      "title": "Basis",
      "type": "string"
    },
    "pricing_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "per_second or video_token",
      "title": "Pricing Type"
    },
    "second_basis": {
      "description": "exact for per-second models; token_pixel_frames_estimate when per_second_usd is derived from the video_token rate (token price x resolution pixels x fps 24 / 1024). Token models still settle on reported token usage; per-second price is for display.",
      "enum": [
        "exact",
        "token_pixel_frames_estimate"
      ],
      "title": "Second Basis",
      "type": "string"
    },
    "rows": {
      "items": {
        "$ref": "#/components/schemas/ModelCatalogVideoSecondPricingRow"
      },
      "title": "Rows",
      "type": "array"
    }
  },
  "required": [
    "currency",
    "basis",
    "second_basis",
    "rows"
  ],
  "title": "VideoSecondPricing",
  "type": "object"
}
```

### ModelCatalogVideoSecondPricingRow

`#/components/schemas/ModelCatalogVideoSecondPricingRow`

```json
{
  "properties": {
    "resolution": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resolution"
    },
    "aspect_ratio": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Aspect Ratio"
    },
    "input_mode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Input Mode"
    },
    "generate_audio": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Generate Audio"
    },
    "predicates": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/ModelCatalogPriceCondition"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Full conditions for this per-second price row",
      "title": "Predicates"
    },
    "per_second_usd": {
      "description": "USD per output second (sale price before discount); markup already applied",
      "title": "Per Second Usd",
      "type": "string"
    },
    "input_image_usd": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "USD per input image (sale price before discount); null if none",
      "title": "Input Image Usd"
    },
    "estimated": {
      "description": "True when derived from a video_token rate via the pixel-frame formula",
      "title": "Estimated",
      "type": "boolean"
    }
  },
  "required": [
    "per_second_usd",
    "estimated"
  ],
  "title": "VideoSecondPricingRow",
  "type": "object"
}
```

### ModelCatalogVideoSpec

`#/components/schemas/ModelCatalogVideoSpec`

```json
{
  "additionalProperties": false,
  "properties": {
    "resolutions": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resolutions"
    },
    "duration_seconds": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogDurationSpec"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "aspect_ratios": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Aspect Ratios"
    },
    "input_modes": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Input Modes"
    },
    "audio": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogAudioSpec"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "reference_limits": {
      "anyOf": [
        {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Reference Limits"
    },
    "constraints": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "有効なリクエストの組み合わせを示すデータ専用の JSON Schema",
      "title": "Constraints"
    },
    "request_defaults": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Request Defaults"
    },
    "example_request": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Example Request"
    }
  },
  "title": "VideoSpec",
  "type": "object"
}
```

### ModelCatalogWalletPublicChannel

`#/components/schemas/ModelCatalogWalletPublicChannel`

```json
{
  "properties": {
    "reference_pricing": {
      "anyOf": [
        {
          "discriminator": {
            "mapping": {
              "per_second": "#/components/schemas/ModelCatalogSecondVideoReference",
              "video_token": "#/components/schemas/ModelCatalogTokenVideoReference"
            },
            "propertyName": "pricing_type"
          },
          "oneOf": [
            {
              "$ref": "#/components/schemas/ModelCatalogSecondVideoReference"
            },
            {
              "$ref": "#/components/schemas/ModelCatalogTokenVideoReference"
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Public video reference before discount; not a final charge",
      "title": "Reference Pricing"
    },
    "sale_pricing": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogVideoSalePricing"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Video sale unit prices (purchase price times markup_multiplier), before discount; null when no synchronized video rates are frozen"
    },
    "second_pricing": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogVideoSecondPricing"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Per-second sale prices by resolution/mode (markup applied, before discount). For video_token models the per-second value is an estimate; settlement uses token usage"
    },
    "settlement_policy": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogPublicSettlementPolicy"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Published primary pricing and missing-usage fallback policy"
    },
    "pricing_mode": {
      "default": "configured_rates",
      "description": "設定済みの単価、または報告されたメディアコストに販売時の割引率を掛けたもの",
      "enum": [
        "configured_rates",
        "upstream_cost"
      ],
      "title": "Pricing Mode",
      "type": "string"
    },
    "code": {
      "title": "Code",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "service_tier": {
      "title": "Service Tier",
      "type": "string"
    },
    "region": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Region"
    },
    "is_default": {
      "title": "Is Default",
      "type": "boolean"
    },
    "runnable": {
      "title": "Runnable",
      "type": "boolean"
    },
    "standard_pricing": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ModelCatalogCatalogPricing"
        },
        {
          "type": "null"
        }
      ],
      "description": "販売時の割引前の標準単価。upstream_cost チャンネルでは null"
    },
    "discount_multiplier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "0 から 1 の正確な販売乗数。設定済みの料金または上流コストに 1 回だけ適用します",
      "title": "Discount Multiplier"
    },
    "markup_multiplier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Sale markup (>= 1) applied to the purchase price or upstream cost to form the sale price, before discount_multiplier",
      "title": "Markup Multiplier"
    }
  },
  "required": [
    "code",
    "name",
    "service_tier",
    "region",
    "is_default",
    "runnable",
    "standard_pricing",
    "discount_multiplier"
  ],
  "title": "WalletPublicChannel",
  "type": "object"
}
```
