Xenodia Docs
API Reference

Model Discovery API

Discover public Xenodia models, modalities, pricing hints, async support, and capability metadata.

Use GET /v1/models before sending model-specific requests. The catalog prevents clients from guessing which models are currently enabled and which parameters they support.

This endpoint is public. You can call it before an API key exists, then use the selected model ID in authenticated runtime requests.

Endpoint

GET https://api.xenodia.xyz/v1/models

cURL

curl "https://api.xenodia.xyz/v1/models"

Example model item

{
  "id": "nano-banana-pro",
  "object": "model",
  "name": "nano-banana-pro",
  "owned_by": "kie",
  "brand_key": "kie",
  "brand_image_url": "/v1/models/brands/kie/image",
  "upstream_id": "google/nano-banana-pro",
  "released_at": null,
  "modalities": ["image"],
  "description": "Image generation and editing model.",
  "price_input_per_m": 0,
  "price_output_per_m": 0,
  "capabilities": {
    "async_supported": true,
    "request_mode": ["sync", "task"],
    "pricing": {
      "mode": "resolution",
      "tiers": [
        { "id": "1k_2k", "label": "1K / 2K", "unit": "image", "price_micro_usdc": 0 },
        { "id": "4k", "label": "4K", "unit": "image", "price_micro_usdc": 0 }
      ]
    },
    "parameters": [
      {
        "name": "aspect_ratio",
        "enum": ["1:1", "16:9", "auto"]
      },
      {
        "name": "resolution",
        "enum": ["1K", "2K", "4K"]
      }
    ],
    "reference_input": {
      "supported": true,
      "transport": ["url", "multipart_file"],
      "max_items": 8
    }
  },
  "enabled": true,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-01-01T00:00:00Z",
  "available_channels": [
    {
      "id": 1,
      "name": "KIE",
      "slug": "kie",
      "description": "KIE media provider",
      "price_input_per_m": 0,
      "price_output_per_m": 0
    }
  ]
}

Fields to read

FieldWhy it matters
idThe public model ID to pass in requests.
nameDisplay name derived from the public or upstream model ID.
owned_by, brand_key, brand_image_urlProvider and brand metadata for model catalog UI.
upstream_idProvider-facing model ID when it differs from the Xenodia public ID.
modalitiesWhether a model supports text, image, video, audio, or mixed inputs.
price_input_per_m, price_output_per_mPublic token-price fields for text models, or provider-specific display fields for media entries.
capabilities.async_supportedWhether task mode is available.
capabilities.request_modeWhether the model accepts sync requests, async tasks, or both.
capabilities.pricingMedia pricing mode and tiers, such as per-resolution image/video prices or Seedance per-second tiers by resolution and video input.
capabilities.parametersSupported request controls and enums.
capabilities.reference_inputReference input transport and item limits.
available_channelsActive channels that can currently serve the model. If this array is empty, the model is omitted from the response.

The response also includes a top-level payment object with minimum and recommended top-up hints.

Client rule

Do not infer media support from a model name. Read modalities and capabilities instead.

For price-sensitive UI, treat zero-price tiers as “not priced in this snapshot” unless your product has confirmed the model is enabled on a billable channel. Runtime calls may still reject requests if a video price tier is not configured.

On this page