Documentation

Reference for the Artlio API. Endpoints and fields may change before general availability.

Demo console. The Artlio API isn't live yet. Keys created here are demo keys and the numbers come from your activity in the studio. Request early access

Base URL https://api.artlio.ai/v1

Authentication

Every request sends your key as a bearer token. Keys belong to an account and draw from its balance. Call the API from your server only, never from a browser or mobile app.

Authorization: Bearer $ARTLIO_API_KEY

Generate video

POST /{vendor}/{model}/text-to-video or image-to-video. Common fields: prompt, duration (seconds), resolution, aspect_ratio, generate_audio, start_image_url, end_image_url and camera_preset. Models ignore fields they don't support.

curl https://api.artlio.ai/v1/bytedance/seedance-2-5/text-to-video \
  -H "Authorization: Bearer $ARTLIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"A cinematic tracking shot along a sunlit coastal road","duration":5,"resolution":"720p","aspect_ratio":"16:9","generate_audio":true}'

Generate image

Same shape for images: send prompt, aspect_ratio, resolution (1K, 2K, 4K), num_images (1–4) and optional reference_image_urls.

curl https://api.artlio.ai/v1/google/nano-banana-pro/text-to-image \
  -H "Authorization: Bearer $ARTLIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Blue glass flask on a mirror, neon reflections","aspect_ratio":"3:4","resolution":"2K","num_images":2}'

Speech

Text to speech takes text, voice_id and optional speed, pitch and output_format. Voice change and dubbing take a video_url plus a voice_id or target_language.

curl https://api.artlio.ai/v1/elevenlabs/elevenlabs-v4/text-to-speech \
  -H "Authorization: Bearer $ARTLIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Welcome back to the channel.","voice_id":"rowan","speed":1.0,"output_format":"mp3"}'

Generations & webhooks

Requests are asynchronous and return { id, status }. Poll GET /generations/{id} or add webhook_url to be called with the finished generation. Statuses: queued, running, succeeded, failed.

curl https://api.artlio.ai/v1/generations/gen_8f2k1x \
  -H "Authorization: Bearer $ARTLIO_API_KEY"

{
  "id": "gen_8f2k1x",
  "status": "succeeded",
  "outputs": [{ "url": "https://cdn.artlio.ai/gen_8f2k1x.mp4" }]
}

Errors

Errors return JSON with a code and a readable message. 401 invalid key, 402 not enough balance, 422 invalid input for the model, 429 rate limited, 5xx provider trouble. Failed generations are never charged.

{ "error": { "code": "insufficient_balance", "message": "This request needs €0.42; your balance is €0.10." } }

Rate limits

Early access starts at 10 concurrent generations and 120 requests per minute per key. Responses include x-ratelimit-remaining and x-ratelimit-reset headers.

MCP server

Agents can use Artlio over the Model Context Protocol. Tools: generate_video, generate_image, edit_image, upscale, get_generation and list_models.

https://mcp.artlio.ai/mcp