{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azurade-com/json-schema/azurade-com-model-schema.json",
  "title": "Model",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azurade-com-openapi.json#/components/schemas/Model",
  "properties": {
    "best_for": {
      "description": "What the model is best at, in one clause",
      "type": "string"
    },
    "fields": {
      "items": {
        "$ref": "#/$defs/FieldInfo"
      },
      "type": "array"
    },
    "id": {
      "type": "string"
    },
    "inputs": {
      "description": "Kinds of input the model takes",
      "items": {
        "enum": [
          "text",
          "image",
          "video",
          "audio"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "max_duration": {
      "description": "Longest duration in seconds; absent when the model has no duration field",
      "type": "integer"
    },
    "max_resolution": {
      "description": "Largest resolution value the model accepts; absent when it has no resolution field",
      "type": "string"
    },
    "name": {
      "description": "Display name",
      "type": "string"
    },
    "pricing": {
      "properties": {
        "changes": {
          "description": "The request that sends only a prompt with one field changed, where that changes the price; absent when none does. Changes combined are not listed: estimate them",
          "items": {
            "properties": {
              "credits": {
                "description": "Total credits for that whole request, every other field at its default (a video model's clip at its default duration)",
                "type": "number"
              },
              "field": {
                "type": "string"
              },
              "value": {
                "description": "The field's value; \"any\" for an input file field, meaning a file is given"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "credits": {
          "description": "Total credits for a request that sends only a prompt, the figure the estimate endpoint returns for it (a video model's is the whole default clip); absent when the pricing row is missing",
          "type": "number"
        },
        "per": {
          "description": "The unit the price multiplies by: each second of video, or each image asked for. Absent when the price is per request",
          "enum": [
            "second",
            "image"
          ],
          "type": "string"
        },
        "unit_credits": {
          "description": "Credits per unit named by per; absent when the pricing row is missing",
          "type": "number"
        },
        "varies": {
          "description": "True when a request can cost something other than the default price (credits): the price is per unit (per), or a change in changes costs something else. The estimate prices any request",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "requires_image": {
      "description": "True when an image or video input is required, so a prompt alone is refused",
      "type": "boolean"
    },
    "type": {
      "enum": [
        "image",
        "video"
      ],
      "type": "string"
    }
  },
  "type": "object",
  "$defs": {
    "FieldInfo": {
      "properties": {
        "default": {},
        "description": {
          "type": "string"
        },
        "enum": {
          "description": "Allowed values, matched without case",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "input": {
          "description": "Kind of file whose public URL the field takes (upload one with POST /api/v2/uploads); absent for every other field",
          "enum": [
            "image",
            "video",
            "audio"
          ],
          "type": "string"
        },
        "maximum": {
          "description": "Largest value accepted (integer and number fields)",
          "type": "number"
        },
        "minimum": {
          "description": "Smallest value accepted (integer and number fields)",
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "required": {
          "type": "boolean"
        },
        "type": {
          "enum": [
            "string",
            "integer",
            "number",
            "boolean",
            "array"
          ],
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}