# Echo Router Video Generation

> Echo Router Video Generation is a paid API for AI agents from echo-staging.up.railway.app, paid per call via x402, $0.625/call, status unknown (last checked 2026-09-14).

Generates videos using OpenAI Sora models based on a text prompt, returning a video job with status and progress tracking.

## Facts

- Endpoint: POST https://echo-staging.up.railway.app/v1/videos
- Price: $0.625/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/echo-router-video-generation-bfa7931b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4hrfUO_-l5Qxdo6VzkNlm

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 echo-router-video-generation-bfa7931b -d '<json body>'
```

Example prompt: Generate a 8-second video of a golden retriever running through a sunlit meadow using the sora-2 model at 1080p resolution.

## When to prefer this

Use this endpoint when you need to programmatically generate short AI videos from text prompts using OpenAI's Sora models (sora-2 or sora-2-pro) with configurable duration (4, 8, or 12 seconds) and size, and want a pay-per-call model via x402 protocol without managing API keys.

## Known failure modes

- Invalid model name returns an error object with code and message
- Unsupported seconds value (not 4, 8, or 12) causes validation failure
- Prompt too long or violating content policy triggers a failed status with error
- Job queued but times out before completion, expires_at exceeded
- Payment not accepted or insufficient USDC balance results in 402 response

## How this service works

Generates videos using OpenAI's video generation models. Accepts various parameters to customize video output including prompts and configuration options.

## Output

Returns a video job object with a unique ID, model used (sora-2 or sora-2-pro), status (queued/in_progress/completed/failed), progress percentage (0-100), duration in seconds, size, creation and expiry timestamps, and any error details if the job fails.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "size": {
   "type": "string"
  },
  "model": {
   "enum": [
    "sora-2",
    "sora-2-pro"
   ],
   "type": "string"
  },
  "prompt": {
   "type": "string"
  },
  "seconds": {
   "type": "string"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "id": {
  "type": "string"
 },
 "size": {
  "type": "string"
 },
 "error": {
  "type": "object",
  "nullable": true,
  "required": [
   "code",
   "message"
  ],
  "properties": {
   "code": {
    "type": "string"
   },
   "param": {
    "type": "string",
    "nullable": true
   },
   "message": {
    "type": "string"
   }
  },
  "additionalProperties": false
 },
 "model": {
  "enum": [
   "sora-2",
   "sora-2-pro"
  ],
  "type": "string"
 },
 "object": {
  "enum": [
   "video"
  ],
  "type": "string"
 },
 "status": {
  "enum": [
   "queued",
   "in_progress",
   "completed",
   "failed"
  ],
  "type": "string"
 },
 "seconds": {
  "anyOf": [
   {
    "enum": [
     4
    ],
    "type": "number"
   },
   {
    "enum": [
     8
    ],
    "type": "number"
   },
   {
    "enum": [
     12
    ],
    "type": "number"
   }
  ]
 },
 "progress": {
  "type": "number",
  "maximum": 100,
  "minimum": 0
 },
 "created_at": {
  "type": "number"
 },
 "expires_at": {
  "type": "number"
 },
 "completed_at": {
  "type": "number",
  "nullable": true
 },
 "remixed_from_video_id": {
  "type": "string"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/echo-router-video-generation-bfa7931b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from echo-staging.up.railway.app](https://www.zero.xyz/host/echo-staging.up.railway.app/llms.txt)
