Returns the models your key has access to, with the parameter schema for each (so you can build forms / validate inputs without hard-coding) plus the credit cost band. New models you unlock with us appear here without any code change on your side.
GET /api/v1/models HTTP/1.1
Host: getvivix.com
Authorization: Bearer vvx_live_…HTTP/1.1 200 OK
{
"tier": "pro",
"credits_balance": 12847,
"rate_limit": { "calls_per_minute": 240, "concurrent_jobs": 5 },
"models": [
{
"slug": "grok-imagine-image-quality",
"name": "Grok Imagine Image Quality",
"category": "image",
"creator": "xAI",
"description": "Photorealistic 4K stills. Great for product shots, lifestyle scenes, and editorial composition.",
"params": {
"prompt": { "type": "string", "required": true, "max_length": 2000 },
"aspect_ratio": { "type": "enum", "values": ["1:1","4:5","9:16","16:9"], "default": "1:1" },
"resolution": { "type": "enum", "values": ["1K","2K","4K"], "default": "2K" },
"number_results":{ "type": "integer", "min": 1, "max": 4, "default": 1 }
},
"credits_band": { "min": 80, "max": 211 },
"example_request": {
"model": "grok-imagine-image-quality",
"prompt": "a misty forest at dawn, cinematic 24mm",
"aspect_ratio": "16:9",
"resolution": "4K"
}
},
{
"slug": "wan-2.7-text-to-video",
"name": "Wan 2.7 Text to Video",
"category": "video",
"creator": "Alibaba",
"description": "Text-to-video up to 10 seconds. Best for product demos, B-roll, atmospheric scenes.",
"params": {
"prompt": { "type": "string", "required": true },
"duration": { "type": "integer", "min": 2, "max": 10, "default": 5 },
"resolution": { "type": "enum", "values": ["720p","1080p"], "default": "1080p" },
"audio": { "type": "boolean", "default": false }
},
"credits_band": { "min": 400, "max": 1440 },
"example_request": {
"model": "wan-2.7-text-to-video",
"prompt": "neon-lit Tokyo street, cinematic",
"duration": 5
}
}
]
}The params schema is enough to render a form dynamically. type tells you the input kind (string, integer, enum,boolean); values populates dropdowns;min / max sets number-range bounds;required drives validation.
type ParamSpec =
| { type: 'string'; required?: boolean; max_length?: number }
| { type: 'integer'; min?: number; max?: number; default?: number }
| { type: 'enum'; values: string[]; default?: string }
| { type: 'boolean'; default?: boolean }
type Model = {
slug: string
name: string
category: 'image' | 'video' | 'audio' | 'text' | 'utility'
creator: string
description: string
params: Record<string, ParamSpec>
credits_band: { min: number; max: number }
example_request: Record<string, unknown>
}
const res = await fetch('https://getvivix.com/api/v1/models', {
headers: { Authorization: `Bearer ${process.env.VIVIX_KEY}` },
})
const { models } = await res.json() as { models: Model[] }401 KEY_INVALID — bad or missing key403 TIER_LOCKED — Pro/Ultimate only (Free/Standard get 403 here)