Discount on all models + if you follow us on twitter and hit us on dm you will get free credit to your email hurry up 🔥🔥🔥 click here
Any issues any issue at all join our discord or use the feedback system and report it we will solve it faster than you think ̲𝖢̲𝗅̲𝗂̲𝖼̲𝗄̲ ̲𝗁̲𝖾̲𝗋̲𝖾̲ it will redirect to discord server.
GET · /api/v1/models

Discover what your key can call.

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.

Request

GET /api/v1/models HTTP/1.1
Host: getvivix.com
Authorization: Bearer vvx_live_…

Response

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 response is filtered to youraccount's allowlist — two different customers may see different model lists from the same endpoint. Don't cache the response across customers if you're building a multi-tenant tool.

Building UIs against this

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[] }

Errors

  • 401 KEY_INVALID — bad or missing key
  • 403 TIER_LOCKED — Pro/Ultimate only (Free/Standard get 403 here)

Where to next