AirCubeAirCube
API Reference

List Models

Discover all available AI models, their supported tasks, and starting prices.

Endpoint

GET https://aircube.ai/api/v3/models

Returns the full list of available models. Use this to programmatically discover model slugs and build request URLs.

Authentication

Authorization: Bearer YOUR_API_KEY

Response

Status: 200 OK

{
  "success": true,
  "data": [
    {
      "slug": "seedream-v5.0-pro",
      "name": "Seedream 5.0 Pro",
      "type": "image",
      "tasks": ["text-to-image", "image-to-image"],
      "price_from_usd": 0.045
    },
    {
      "slug": "seedance-2.0",
      "name": "Seedance 2.0",
      "type": "video",
      "tasks": ["text-to-video", "image-to-video", "reference-to-video", "video-to-video", "video-extend"],
      "price_from_usd": 0.48
    },
    {
      "slug": "qwen3-tts",
      "name": "Qwen3 TTS",
      "type": "audio",
      "tasks": ["text-to-speech"],
      "price_from_usd": 0.05
    }
  ]
}

Response fields

FieldTypeDescription
slugstringURL path segment for the model — use this in POST /api/v3/{slug}/{task}
namestringHuman-readable display name
typestringOutput category: image, video, audio, or face-swap
tasksstring[]Supported task types — each can be used as the {task} segment
price_from_usdnumber | nullLowest price per generation in USD, or null if not listed

Building a request URL

Combine slug + any entry from tasks to form the submit URL:

POST https://aircube.ai/api/v3/{slug}/{task}

For example, if a model returns slug: "seedance-2.0" with tasks: ["text-to-video", "image-to-video"]:

POST https://aircube.ai/api/v3/seedance-2.0/text-to-video
POST https://aircube.ai/api/v3/seedance-2.0/image-to-video

See Submit Generation for the full parameter reference per task.

Examples

cURL

curl https://aircube.ai/api/v3/models \
  -H "Authorization: Bearer $AIRCUBE_API_KEY"

Python — find all video models

import os
import requests

API_KEY = os.environ["AIRCUBE_API_KEY"]

response = requests.get(
    "https://aircube.ai/api/v3/models",
    headers={"Authorization": f"Bearer {API_KEY}"},
)
models = response.json()["data"]

# Filter video models that support text-to-video
for m in models:
    if m["type"] == "video" and "text-to-video" in m["tasks"]:
        print(f"{m['slug']:30s} {m['name']:20s} from ${m['price_from_usd']}")

JavaScript — build a request from the catalog

const API_KEY = process.env.AIRCUBE_API_KEY;
const BASE = "https://aircube.ai/api/v3";

// 1. Fetch models
const res = await fetch(`${BASE}/models`, {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const { data: models } = await res.json();

// 2. Pick the cheapest image model
const imageModels = models
  .filter((m) => m.type === "image" && m.price_from_usd !== null)
  .sort((a, b) => a.price_from_usd - b.price_from_usd);

const cheapest = imageModels[0];
console.log(`Using ${cheapest.slug} (${cheapest.name})`);

// 3. Submit a generation
const gen = await fetch(`${BASE}/${cheapest.slug}/${cheapest.tasks[0]}`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ prompt: "a futuristic robot in a garden" }),
});
const { data } = await gen.json();
console.log(`Generation ID: ${data.id}`);

Caching

Responses include Cache-Control: public, max-age=3600. The model list changes infrequently, so caching for up to 1 hour is safe.

On this page