Model catalog and schemas
The first 12 model families, how family endpoints are grouped, and how to build requests dynamically from JSON Schema.
createTask.model takes the exact model returned by the catalog. Its input is defined by that model's inputSchema. The runtime catalog is the source of truth; this page documents the stable integration pattern.
First model families
| Model | Modality | Family endpoints |
|---|---|---|
kie/minimax-h3-spicy | video | text/image to video, generated audio, up to 15 seconds |
seedance-2.5-spicy | video | text/image/reference to video, up to 30 seconds, synchronized audio |
seedance-2.0-spicy | video | text/image/reference to video |
seedance-2.0-fast-spicy | video | the Seedance 2.0 endpoint set, fast tier |
wan-2.7-spicy | video | image to video |
wan-2.2-spicy | video | image to video |
seedream-5-pro-spicy | image | text to image / image editing |
seedream-5-lite-spicy | image | text to image / image editing |
qwen-image-edit-spicy | image | image editing |
kie/z-image-spicy | image | text to image |
face-swap-spicy | image | face swap |
qwen-3.8-27b-spicy | text | chat (secondary capability) |
Visible is not callable
The launch snapshot supports family-page and schema integration. A model becomes available: true only after its real KIE upstream model ID has been verified from authoritative documentation and a binding exists. Clients must check both enabled and available.
Multiple endpoints, one family
A family keeps one model page and one model value. input.endpoint selects text-to-video, image-to-video, or reference-to-video. The schema uses allOf with if/then/required to express endpoint-specific required fields.
{
"model": "kie/minimax-h3-spicy",
"input": {
"endpoint": "image-to-video",
"prompt": "slow camera move with synchronized ambience",
"first_frame_url": "inputs/usr_.../reference.png",
"duration": 8,
"resolution": "768p",
"generate_audio": true
}
}endpoint is SpicyAPI's stable family contract. Provider-specific paths and field names are converted by server-side adapters; clients never depend on KIE's internal mapping.
Read the catalog programmatically
GET /api/v1/models
GET /api/v1/models/{model}curl "https://api.spicyapi.ai/api/v1/models?modality=video&includeSchema=1&includeExamples=1" \
-H "Authorization: Bearer $SPICY_API_KEY"| Parameter | Meaning |
|---|---|
modality | image video audio text |
provider | exact provider identifier |
task | exact task, such as image-to-video |
search | up to 128 characters |
includeSchema | true / 1 includes inputSchema |
includeExamples | true / 1 includes examples validated against the current schema |
If a model identifier contains a slash inside /models/{model}, percent-encode it when your HTTP client treats path parameters as a single segment.
Fields clients should consume
| Field | Purpose |
|---|---|
family | stable product-family identifier for page grouping |
tasks | supported tasks within the family |
inputSchema | JSON Schema 2020-12 used for form generation and request validation |
pricing / startingPrice | current account price; USD amounts are strings |
quantityField | billed quantity field, commonly duration for video |
available | whether a usable deployment exists now |
version / updatedAt | catalog cache invalidation and change tracking |
The catalog may be cached privately for 60 seconds. Never put it in a public CDN cache because prices include the authenticated account's group multiplier.

