Images, video, speech and 3D
One key for Nano Banana, GPT Image, Seedream, FLUX, Veo, Seedance, Kling, Wan, ElevenLabs and Tripo.
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.
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.
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"
}
}'{
"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.
curl https://api.uplinkswitch.com/v1/generations/gen_4f1c9a… \
-H "Authorization: Bearer $UPLINK_API_KEY"{
"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:
{
"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.