# 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": "ออบเจ็กต์ JSON ของ reasoning จากต้นทาง โดยคงฟิลด์ที่ไม่รู้จักไว้ และเป็น 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 ต่อโทเคน reasoning",
      "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": "USD ต่อโทเคนที่เขียนลงแคชแบบ 1 ชั่วโมง แยกจากรายการเขียนด้วย 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": "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": "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": "อัตราต่อหน่วยมาตรฐานก่อนหักส่วนลดการขาย เป็น null สำหรับช่องทางแบบ upstream_cost"
    },
    "discount_multiplier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "ตัวคูณส่วนลดการขายแบบแม่นยำตั้งแต่ 0 ถึง 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"
}
```
