---
title: Video 1.0
description: Generate video with Sume Video 1.0 using prompts, frames, references, and routing presets.
---

Video 1.0 is Sume's **optimal video-model router**. Send a prompt (and optional
frames/references); Sume picks the best available video model for the job.
Steer only with `routing_preset` (`cost`, `speed`, `quality`, `grok`, `kling`) —
never with a provider model id. Job receipts always report `sume/video-1.0`.

Primary invoke URL:

```text
POST /v1/video-1.0/generate
```

Model-run alias (same body):

```text
POST /v1/models/sume/video-1.0/runs
```

Public model id: `sume/video-1.0`.

## When to use

| Goal | Approach |
|---|---|
| Text → video | `prompt` only |
| Image → video | `prompt` + `image_url` (first frame) |
| Start + end frames | `image_url` + `end_image_url` |
| Reference-guided | `reference_image_urls` and/or `reference_video_urls` (optional `reference_audio_urls` with at least one image or video reference) |

Use public HTTPS media URLs only.

## Request fields

| Field | Required | Notes |
|---|---|---|
| `prompt` | Yes | Non-empty string. |
| `image_url` | No | First-frame image URL. Prefer over deprecated `first_frame_url`. |
| `end_image_url` | No | End-frame image URL. Requires `image_url` (or deprecated `first_frame_url`). Prefer over deprecated `last_frame_url`. |
| `reference_image_urls` | No | 1–9 image URLs. |
| `reference_video_urls` | No | 1–3 video URLs. |
| `reference_audio_urls` | No | 1–3 audio URLs; requires at least one reference image or video. |
| `resolution` | No | `480p`, `720p`, `1080p`. `1080p` uses the high-resolution lane, which is capped at 15 seconds. `4k` is reserved and rejected in v1. |
| `duration` | No | Integer seconds. 4–30 on the default/`quality` lane at 480p/720p; 4–15 for `cost`, `speed`, `grok`, `kling`, and any `1080p` request. Prefer over `duration_seconds`. If both are set, they must agree. |
| `duration_seconds` | No | Alias of `duration`. |
| `bitrate_mode` | No | `standard`, `high`. |
| `aspect_ratio` | No | `auto`, `adaptive`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`. |
| `generate_audio` | No | Boolean. |
| `routing_preset` | No | Sume-owned routing hint: `cost`, `speed`, `quality`, `grok`, `kling`. Omitting it is equivalent to `quality`; `cost` and `speed` share the fast lane. Never a provider model id. |
| `metadata` | No | Caller metadata stored on the job; not sent to the provider. |
| `mode` | No | `async`, `sync`, `subscribe`, `webhook`. |
| `webhook_url` | No | Public HTTPS callback for webhook mode. |
| `wait_timeout_seconds` | No | 0–30 for `sync` / `subscribe`. |

Video 1.0 does **not** accept a `model` body field. Use `routing_preset` for
Sume-owned routing hints only.

## Create a video job

<!-- api-call-example:video-generate -->

Image-to-video example:

```bash
curl -X POST https://api.sume.com/v1/video-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: video-i2v-001" \
  -d '{
    "prompt": "Gentle camera drift; keep the product locked in frame",
    "image_url": "https://example.com/first-frame.png",
    "resolution": "1080p",
    "duration": 6,
    "aspect_ratio": "16:9",
    "routing_preset": "speed"
  }'
```

## Poll and fetch the result

```bash
curl https://api.sume.com/v1/jobs/job_123/status \
  -H "Authorization: Bearer $SUME_API_KEY"

curl https://api.sume.com/v1/jobs/job_123/events \
  -H "Authorization: Bearer $SUME_API_KEY"

curl https://api.sume.com/v1/jobs/job_123/result \
  -H "Authorization: Bearer $SUME_API_KEY"
```

Follow `next_action` from the submit envelope (`poll_status`, then
`fetch_result`). Full lifecycle details live in
[Jobs and results](/workflows/jobs-and-results).

## Artifacts

Completed Video 1.0 jobs return Sume-hosted video (and sometimes image) artifacts:

```json
{
  "id": "job_...",
  "status": "completed",
  "result": {
    "artifacts": [
      {
        "id": "artifact_...",
        "type": "video",
        "url": "https://media.sume.com/artifacts/...",
        "content_type": "video/mp4"
      }
    ]
  }
}
```

Treat artifact URLs as opaque. Do not parse paths for workspace, job, or
provider identifiers.

## Next

- [Image 1.0](/models/image) for stills / first frames
- [Avatar video](/models/avatar-videos) for talking-head scripts on a reusable avatar
- [Generation admission](/workflows/generation-admission) for queue and concurrency behavior
