Operation

Generate Sora 2 Character Video

Generate a Sora 2 video with one or two reusable OpenAI Sora character IDs.

Operation: sora2.video.generate_with_characters
Submit via POST /api/v1/requests
Credits: dynamic
Sora 2

Request fields

promptsora_cameossora_characterscharactersdurationaspect_ratioqualityresolution

Example request

{
  "operation": "sora2.video.generate_with_characters",
  "input": {
    "prompt": "Mara walks through a rain-slick station concourse, looking over her shoulder.",
    "sora_cameos": [
      "char_abc123"
    ],
    "duration": 20,
    "aspect_ratio": "16:9",
    "quality": "cinematic",
    "resolution": "1080p"
  }
}
curl -X POST https://www.cannonstudio.app/api/v1/requests \
  -H "Content-Type: application/json" \
  -H "x-api-key: $CANNON_API_KEY" \
  -H "x-idempotency-key: sora2-video-generate-with-characters-001" \
  -d @- <<'JSON'
{
  "operation": "sora2.video.generate_with_characters",
  "input": {
    "prompt": "Mara walks through a rain-slick station concourse, looking over her shoulder.",
    "sora_cameos": [
      "char_abc123"
    ],
    "duration": 20,
    "aspect_ratio": "16:9",
    "quality": "cinematic",
    "resolution": "1080p"
  }
}
JSON

Notes

  • Uses OpenAI Sora character IDs created through `sora2.character.create` or the Cannon Studio Sora Cameos workspace.
  • Sora supports at most two characters in one video request.
  • Sora 2 Pro accepts 1080p native portrait or landscape output sizes.

Success output

{
  "task_id": "video_123",
  "asset_type": "video",
  "status": "succeeded",
  "video_url": "https://storage.googleapis.com/.../sora-character-video.mp4",
  "provider": "sora2",
  "model": "sora2",
  "duration": 20
}