# OpenAI Sora 2 Pro Text-to-Video Generation

> OpenAI Sora 2 Pro Text-to-Video Generation is a paid API for AI agents from video.withzero.xyz, paid per call via MPP, $1.2/call, status unknown (last checked 2026-09-13).

Generates a production-quality video with synchronized audio from a text prompt using OpenAI Sora 2 Pro, returning a job ID to poll for the finished video URL.

## Facts

- Endpoint: POST https://video.withzero.xyz/api/v1/videos/sora-2-pro
- Price: $1.2/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 3
- Provider: video.withzero.xyz
- Website: https://video.withzero.xyz
- Canonical page: https://www.zero.xyz/c/video-withzero-xyz-openai-sora-2-pro-text-to-video-generation-6ad1c846
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_P9GtIM1BvgVDtjs0mw53Q

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability video-withzero-xyz-openai-sora-2-pro-text-to-video-generation-6ad1c846 -d '<json body>'
```

Example prompt: Use Sora 2 Pro to generate a 12-second 1080p video in 16:9 format of a lone astronaut walking across a red Martian landscape at sunset, dust swirling around their boots.

## When to prefer this

Choose this endpoint when you need production-quality video with synchronized audio powered specifically by OpenAI Sora 2 Pro, especially for cinematic or motion-rich scenes. Prefer this over Google Veo or Kling endpoints when the user explicitly wants Sora or OpenAI's video model, or when the use case demands high-quality synchronized audio with motion. Use the 1080p option for professional output quality.

## Known failure modes

- Invalid or missing prompt returns a 400 validation error
- Duration not in allowed set (4, 8, 12, 16, 20) returns a 400 error
- Resolution value outside '720p' or '1080p' returns a 400 validation error
- Aspect ratio outside '16:9' or '9:16' returns a 400 error
- Service unavailable or model overloaded may return a 503 or 500 error
- Polling the job status may show a failed state if generation did not complete successfully

## How this service works

Generate a video from a text prompt with OpenAI Sora 2 Pro — production-quality motion with synchronized audio. Returns a job id; poll the status route for the finished video URL.

## Output

Returns a JSON object with a job_id string for tracking the generation, a status of 'pending', the model name, the price charged in USDC, and a poll_path to check on the finished video URL once generation completes.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "example": {
  "prompt": "A slow aerial shot over a foggy pine forest at dawn",
  "duration": 8
 },
 "required": [
  "prompt",
  "duration",
  "resolution"
 ],
 "properties": {
  "seed": {
   "type": "integer",
   "maximum": 9007199254740991,
   "minimum": -9007199254740991,
   "description": "Seed for repeatable generation (best effort)."
  },
  "prompt": {
   "type": "string",
   "maxLength": 4000,
   "minLength": 1,
   "description": "Text description of the video to generate."
  },
  "duration": {
   "anyOf": [
    {
     "type": "number",
     "const": 4
    },
    {
     "type": "number",
     "const": 8
    },
    {
     "type": "number",
     "const": 12
    },
    {
     "type": "number",
     "const": 16
    },
    {
     "type": "number",
     "const": 20
    }
   ],
   "default": 8,
   "description": "Clip length in seconds. One of: 4, 8, 12, 16, 20."
  },
  "resolution": {
   "enum": [
    "720p",
    "1080p"
   ],
   "type": "string",
   "default": "720p",
   "description": "Output resolution. One of: 720p, 1080p."
  },
  "aspect_ratio": {
   "enum": [
    "16:9",
    "9:16"
   ],
   "type": "string",
   "description": "Aspect ratio of the output. One of: 16:9, 9:16."
  }
 },
 "additionalProperties": false
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "job_id",
  "status",
  "model",
  "price_usdc",
  "poll_path"
 ],
 "properties": {
  "model": {
   "type": "string",
   "description": "The model generating the video."
  },
  "job_id": {
   "type": "string",
   "description": "Job id for the generation. Poll the status route with this id."
  },
  "status": {
   "type": "string",
   "const": "pending",
   "description": "The job has been accepted and is generating."
  },
  "poll_path": {
   "type": "string",
   "description": "Path of the free status route to poll for the finished video."
  },
  "price_usdc": {
   "type": "string",
   "description": "The amount charged for this generation, in USDC."
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/video-withzero-xyz-openai-sora-2-pro-text-to-video-generation-6ad1c846/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from video.withzero.xyz](https://www.zero.xyz/host/video.withzero.xyz/llms.txt)
