Sora 2 Pro API

Integrate Sora 2 Pro via API

Create text, image, or storyboard video tasks with /api/v1/video/sora-pro, then poll status and deliver results with check-result.

Everything you need for Sora 2 Pro delivery

One API covers Sora 2, Sora 2 Pro, and storyboard workflows with clear billing and predictable polling.

Five supported models

Choose from Sora 2 text/image and Sora 2 Pro text/image/storyboard variants.

Tiered credits

Credits scale with duration and quality, including standard/high for Sora 2 Pro.

Task-based delivery

Create a task, poll check-result, and ship the final result_url.

Authentication & Base URL

All endpoints are served from https://sora2-api.com. Send the API key from the console in the Authorization header.

  • Include Authorization: Bearer YOUR_API_KEY on every request.
  • Use Content-Type: application/json for JSON payloads.
  • Responses include code/message/data; check-result can return 4xx/5xx so validate the HTTP status too.

Credits & billing

Billing varies by model, duration, and quality tier.

  • Sora 2 text/image: 10s = 20 credits, 15s = 30 credits.
  • Sora 2 Pro text/image: Standard 10s = 375, 15s = 675; High 10s = 825, 15s = 1575.
  • Sora 2 Pro storyboard: 10s = 375, 15s = 675, 25s = 675.
  • Prices above are final; charges are rounded up.

Core endpoints

Start by creating a generation task, then poll or check your credit balance.

Create Sora 2 Pro video

Submit text, image, or storyboard jobs, deduct credits immediately, and receive taskId.

Method: POSTPath: /api/v1/video/sora-pro

Payload parameters

  • Required. Use one of the supported model strings above.
  • Required except for storyboard. Describe the scene you want to generate.
  • Required for image-to-video. Base64 data URL with prefix "data:image/*;base64,".
  • Optional. Public image URL if you prefer not to send base64.
  • Optional. "landscape" or "portrait" (default landscape).
  • Optional. "10"/"15"/"25" (25 is storyboard only).
  • Optional (Pro text/image). "standard" or "high".
  • Optional (text/image). Remove watermark flag, default true.
  • Required for storyboard. Array of shots with scene and duration.
  • Optional. Whether the result is public, default true.

Notes

  • Supported models: sora-2-text-to-video, sora-2-image-to-video, sora-2-pro-text-to-video, sora-2-pro-image-to-video, sora-2-pro-storyboard.
  • Credits are deducted on submit; failed jobs are refunded automatically.
  • Storyboard mode requires the shots array.

Shots structure

Required for storyboard requests; each item defines a scene and duration.

[
  { "scene": "A cozy cafe at sunrise, warm light.", "duration": 7.5 }
]
  • scene: Description of the shot.
  • duration: Seconds (supports decimals like 7.5).

Sample request

curl -X POST https://sora2-api.com/api/v1/video/sora-pro \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2-pro-text-to-video",
    "prompt": "A cinematic tracking shot through a neon-lit street market at dusk.",
    "aspectRatio": "landscape",
    "nFrames": "10",
    "size": "high",
    "removeWatermark": true,
    "isPublic": true
  }'

Sample response

{
  "code": 0,
  "message": "ok",
  "data": {
    "id": "task_1234567890",
    "taskId": "task_1234567890"
  }
}

Check generation result

Poll task status and sync results.

Method: POSTPath: /api/video-generations/check-result

Payload parameters

  • Required. The identifier returned when you created the generation task.

Notes

  • Returns status, progress, and result_url when available.
  • May return 4xx/5xx for validation, permission, or not-found cases.

Sample request

curl -X POST https://sora2-api.com/api/video-generations/check-result \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskId": "task_1234567890"
  }'

Sample response

{
  "code": 0,
  "message": "Success",
  "data": {
    "task_id": "task_1234567890",
    "status": "running",
    "progress": 0,
    "result_url": ""
  }
}

Get user credits

Fetch remaining credits and VIP status.

Method: POSTPath: /api/get-user-credits

Notes

  • Requires a valid API key or session.
  • Returns left_credits and is_vip fields.

Sample request

curl -X POST https://sora2-api.com/api/get-user-credits \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Sample response

{
  "code": 0,
  "message": "ok",
  "data": {
    "left_credits": 120,
    "is_vip": true
  }
}

1. Create the task

Send /api/v1/video/sora-pro with your payload, then store the taskId.

2. Track progress

Poll /api/video-generations/check-result until the status is succeeded or failed.

3. Deliver the video

Use result_url/result_urls to distribute or store the generated video.

Frequently asked questions

Which models are supported?

Use sora-2-text-to-video or sora-2-image-to-video; Sora 2 Pro adds text, image, and storyboard variants.

What values does nFrames support?

Use "10" or "15" for all modes; "25" is only for storyboard. Pro text/image supports standard or high size.

Why can check-result return 4xx/5xx?

The endpoint validates ownership and input, so invalid or unauthorized tasks can return 4xx/5xx alongside code/message.

Helpful resources

Launch with Sora 2 Pro API

Create your API key and start generating Sora 2 Pro videos in minutes.