Images, video, speech and 3D

One key for Nano Banana, GPT Image, Seedream, FLUX, Veo, Seedance, Kling, Wan, ElevenLabs and Tripo.

Checked 2026-10-12

·All guides·Models

Images: OpenAI’s image API

Image models answer POST /v1/images/generations the way OpenAI does: size maps to each model’s aspect ratio and resolution, and quality to its quality setting where it has one. Model-specific settings go in input(extra_body in the SDKs). The call waits for the image, usually 10 to 40 seconds.

images.py
from openai import OpenAI

client = OpenAI(base_url="https://api.uplinkswitch.com/v1", api_key="sk-uplink-live-...")
result = client.images.generate(
    model="nano-banana-2",
    prompt="A red paper boat on a calm blue pond, morning light",
    size="1536x1024",
)
print(result.data[0].url)

Add response_format: "b64_json" for the image bytes in the response instead of a URL.

Everything else: generations

Every media model, images included, takes POST /v1/generations with the model and its input. The answer comes back at once with the price already set; video takes one to five minutes.

shell
curl https://api.uplinkswitch.com/v1/generations \
  -H "Authorization: Bearer $UPLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1-fast",
    "input": {
      "prompt": "A paper boat drifting across a pond at sunrise",
      "resolution": "1080p",
      "aspect_ratio": "16:9"
    }
  }'
202 Accepted
{
  "id": "gen_4f1c9a…",
  "object": "generation",
  "model": "veo-3.1-fast",
  "kind": "video",
  "status": "queued",
  "outputs": [],
  "charge": { "amount_usd": "0.5400", "units": 1, "unit": "generation", "refunded": false }
}

Poll the generation until its status is succeeded or failed.

shell
curl https://api.uplinkswitch.com/v1/generations/gen_4f1c9a… \
  -H "Authorization: Bearer $UPLINK_API_KEY"
200 OK
{
  "id": "gen_4f1c9a…",
  "status": "succeeded",
  "outputs": [
    { "url": "https://api.uplinkswitch.com/v1/files/2026-10-12/gen_4f1c9a…/0.mp4", "content_type": "video/mp4", "bytes": 4810213 }
  ],
  "charge": { "amount_usd": "0.5400", "units": 1, "unit": "generation", "refunded": false }
}

Speech is the same call with text in the input:

elevenlabs-v3
{
  "model": "elevenlabs-v3",
  "input": { "text": "Your order has shipped.", "voice": "Aria" }
}

Settings and prices

Each model’s settings, their allowed values and the price of each combination are in the media price list and at GET /v1/catalog/media. A setting that changes the price and has no default must be sent. An unknown setting is refused before anything runs. Model guides: Nano Banana Pro, Veo 3.1.

Billing

The price is fixed when the request is accepted and is charged then. A generation that fails is refunded in full. Files are served from api.uplinkswitch.com and stay available for 30 days, so download what you want to keep.