# Otto AI x402 — AI Video Generation (video-gen)

> Otto AI x402 — AI Video Generation (video-gen) is a paid API for AI agents from x402.ottoai.services, paid per call via x402, $1.75/call, status unknown (last checked 2026-09-14).

Generates short AI videos from a text prompt (and optional image) using models like Seedance, Sora, or Veo, returning a hosted MP4 URL.

## Facts

- Endpoint: POST https://x402.ottoai.services/video-gen
- Price: $1.75/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otto-ai-x402-ai-video-generation-video-gen-8929d3f2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_wNglUG1f8MgpgZbx5scAN

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 otto-ai-x402-ai-video-generation-video-gen-8929d3f2 -d '<json body>'
```

Example prompt: Generate a 6-second 16:9 video using the Sora-2 model of a golden retriever running through a sunlit meadow with slow camera pan — pay with USDC.

## When to prefer this

Use this endpoint when an AI agent needs to generate short-form video (4–10 seconds) from a text prompt or image, and wants to choose from premium models (Seedance, Sora-2, Sora-2-Pro, Veo-3.1) with per-call USDC micropayment pricing. Prefer this over image-generation endpoints when motion and scene animation are required, and over full video production platforms when a single short clip is sufficient.

## Known failure modes

- Prompt too short or too long (must be 20–1000 chars) — returns error
- Duration out of range for selected model (4–10 seconds enforced) — returns error
- Invalid model name not in enum — returns error
- Payment failure or insufficient USDC balance — request rejected before generation
- Upstream model provider timeout or failure — returns status: failed with error message
- Invalid image_url for image-to-video — returns error

## How this service works

AI video generation via fal.ai — default model: ByteDance Seedance 2.0. Alternatives: fal-ai/sora-2/text-to-video, fal-ai/veo3.1. Dynamic pricing per request: at-cost fal.ai rate + 15% margin (floor $0.05); the advertised price is the Seedance 5s reference quote — the actual quote is returned per request. Supports text-to-video and image-to-video.

## Output

A JSON object containing a hosted MP4 video URL, the model used, resolution (e.g. 720p), duration in seconds, price in USDC, and a success/failed status string.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "prompt",
      "duration"
     ],
     "properties": {
      "model": {
       "enum": [
        "seedance-2.0",
        "sora-2",
        "sora-2-pro",
        "veo-3.1"
       ],
       "type": "string",
       "description": "Video model (default: seedance-2.0)"
      },
      "prompt": {
       "type": "string",
       "description": "Video prompt (20-1000 chars). Describe motion, camera, scene."
      },
      "duration": {
       "type": "integer",
       "maximum": 10,
       "minimum": 4,
       "description": "Duration in seconds (per-model caps enforced)"
      },
      "image_url": {
       "type": "string",
       "description": "Optional: Input image URL for image-to-video"
      },
      "aspect_ratio": {
       "enum": [
        "16:9",
        "9:16",
        "1:1"
       ],
       "type": "string",
       "description": "Output aspect ratio (default 16:9)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "status"
     ],
     "properties": {
      "error": {
       "type": "string"
      },
      "model": {
       "type": "string"
      },
      "price": {
       "type": "number"
      },
      "status": {
       "enum": [
        "success",
        "failed"
       ],
       "type": "string"
      },
      "duration": {
       "type": "number"
      },
      "videoUrl": {
       "type": "string"
      },
      "resolution": {
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "model": "seedance-2.0",
  "price": 1.75,
  "status": "success",
  "duration": 5,
  "videoUrl": "https://images.useotto.xyz/xyz.mp4",
  "resolution": "720p"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otto-ai-x402-ai-video-generation-video-gen-8929d3f2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ottoai.services](https://www.zero.xyz/host/x402.ottoai.services/llms.txt)
