Qulture API
DocsAPI referencePlaygroundPricingConnectors
Sign in
Qulture API

The Qulture Studio API: AI video and images from your own app.

Build

  • Docs
  • API reference
  • Playground
  • Changelog

Account

  • Pricing
  • Console
  • Connectors

Qulture

  • Qulture Studio
  • Support
  • Terms
  • Privacy

© 2026 Qulture

Get started

  • Introduction
  • Quickstart
  • Authentication

Guides

  • Making videos
  • Images
  • Jobs & polling
  • Webhooks

Reference

  • Pricing & billing
  • Rate limits
  • Errors
  • API reference

More

  • Changelog
  • FAQ
Console & API keys PlaygroundAI ChatGPT & Claude (MCP)

Guides

Making videos

Text-to-video, photo-to-video, templates and camera moves.

All videos are made with POST /api/v1/studio/jobs. The mode field says what kind of video you want.

Text to video

Describe the scene. Be concrete: subject, place, light, camera.

Text to video
curl -X POST https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/jobs \
  -H "Authorization: Bearer $QULTURE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "text_to_video",
  "prompt": "A neon-lit street market at night, slow camera push in",
  "tier": "draft",
  "duration": 5,
  "aspect": "9:16"
}'

Photo to video

Two steps: upload the photo, then create the job with the upload's key.

1. Upload

Upload a photo
curl -X POST https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/uploads \
  -H "Authorization: Bearer $QULTURE_API_KEY" \
  -F "file=@photo.jpg"

JPEG, PNG, WebP or HEIC, up to 10 MB. The response includes key and has_face.

2. Create the job

Photo to video
curl -X POST https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/jobs \
  -H "Authorization: Bearer $QULTURE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "photo_to_video",
  "image_keys": [
    "UPLOAD_KEY"
  ],
  "prompt": "She turns to the camera and smiles",
  "preset_id": "dolly-in",
  "tier": "draft",
  "duration": 5,
  "consent": true
}'

Photos of people need consent

If has_face is true, send "consent": true to confirm the people in the photo agreed. Without it you get 422 studio_consent_required.

Templates

Templates are ready-made ideas (party intro, birthday hype…). List them with GET /api/v1/studio/templates. Each one lists the inputs it needs; send them in inputs by key.

List templates
curl https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/templates \
  -H "Authorization: Bearer $QULTURE_API_KEY"
Use a template
curl -X POST https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/jobs \
  -H "Authorization: Bearer $QULTURE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "template",
  "template_id": "party-intro",
  "inputs": {
    "photo": "UPLOAD_KEY"
  },
  "tier": "draft",
  "duration": 5,
  "consent": true
}'

Camera moves & effects

Over 100 presets — dolly in, orbit, whip pan, zooms, effects and styles. List them with GET /api/v1/studio/presets (filter with ?category= or ?mode=) and pass the id as preset_id. Each preset lists the modes it works with.

List camera moves
curl https://qulture-webapi-staging-381114038302.us-central1.run.app/api/v1/studio/presets?mode=text_to_video \
  -H "Authorization: Bearer $QULTURE_API_KEY"

Duration, aspect, tier, sound

FieldValuesNotes
duration5 or 10Seconds. Billed per second.
aspect9:16, 1:1, 4:5, 16:9Default 9:16 (vertical).
tierdraft, standard, proDraft is cheapest; every tier is available with an API key. See pricing.
soundtrue / falseGenerated sound effects and ambience.
preset_ida preset idCamera move or effect.

Other modes

modeWhat it doesInputs
text_to_videoVideo from a descriptionprompt
photo_to_videoAnimate one photoimage_keys: [key], prompt
transitionMorph from a first to a last frameimage_keys: [first, last]
referenceUse photos as style / subject referencesimage_keys (up to 9), prompt
talking_photoMake a photo speakimage_keys: [key], voice, speech_text
templateReady-made ideatemplate_id, inputs

Safe retries

Network blips happen. Send a unique X-Qulture-Request-ID header with each create request; if you retry with the same value, Qulture returns the original job instead of making (and charging for) a second one.

Header
X-Qulture-Request-ID: 7f1c2a90-order-1234
← PreviousAuthenticationNext →Images

On this page

  • Text to video
  • Photo to video
  • Templates
  • Camera moves & effects
  • Duration, aspect, tier, sound
  • Other modes
  • Safe retries