---
title: Generation workflows
description: Submit Avatar 1.0 and Avatar Video 1.0 from the CLI; use the API for Image, Video, and Music.
---

## CLI generation coverage

| Family | CLI submit today | Recommended path |
|---|---|---|
| Avatar 1.0 | `sume avatars create` | CLI or [Avatar guide](/models/avatar) |
| Avatar Video 1.0 | `sume avatar-videos create` | CLI or [Avatar Video guide](/models/avatar-videos) |
| Image 1.0 | **No CLI subcommand** | [Developer API](/models/image) |
| Video 1.0 | **No CLI subcommand** | [Developer API](/models/video) |
| Music 1.0 | **No CLI subcommand** | [Developer API](/models/music) |

Do not invent Image/Video/Music CLI commands. Call `POST /v1/<family>/generate`
(or the model-run alias) with an `Idempotency-Key`, then recover the job with
`sume jobs …` if you want CLI polling/download.

Hosted MCP is a different surface: `generate_image` / `generate_video` /
`music_create` exist there. CLI still has no Image/Video/Music subcommands.
See [MCP overview](/mcp).

## Avatar 1.0

```bash
sume avatars create \
  --confirm-paid \
  --avatar-handle studio_presenter \
  --type prompt \
  --prompt "A friendly presenter in neutral studio lighting" \
  --json
```

The command submits the primary Avatar route
`POST /v1/avatar-1.0/generate` (legacy model-run aliases remain on the API for
compatibility). Use `--type prompt`, `--type photo`, or `--type props`; use
`--payload-json` or `--payload-file` when you need to send an exact request body.
Optional `--model` accepts an exact model-run id when you need that path.

## Avatar Video 1.0

```bash
sume avatar-videos create \
  --confirm-paid \
  --avatar-handle sume_clawra \
  --product-image https://example.com/product.png \
  --script "Say hello to the Sume developer platform." \
  --quality plus \
  --json
```

The command submits `POST /v1/avatar-1.0/talking-video`. Read avatar handles
with `sume avatars list --agent --json` or
`sume avatars get <avatar_id> --agent --json`.
Avatar-video scripts must estimate to 4-60 seconds inclusive; the CLI validates
this before submission.

`quality` accepts `standard`, `plus`, or `max`. The CLI default when omitted is
**`plus`** (same as the public API). Use `--quality standard` for the fastest
path, or `--quality max` when quality matters more than turnaround.

## Image, Video, and Music (API-first)

Example Image submit with curl, then CLI job recovery:

```bash
curl -sS https://api.sume.com/v1/image-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"prompt":"Studio product photo on white background"}'

sume jobs status <job_id> --agent --json
sume jobs result <job_id> --agent --json
```

Full request fields and constraints:

- [Image 1.0](/models/image)
- [Video 1.0](/models/video)
- [Music 1.0](/models/music)

## Recover after submit

All submit commands return or print a job id. Use job commands to recover
instead of resubmitting paid work:

```bash
sume jobs status <job_id> --agent --json
sume jobs events <job_id> --agent --json
sume jobs result <job_id> --agent --json
sume jobs watch <job_id>
sume jobs download <job_id> --output-dir ./out
```

Submit commands support exact payloads, idempotency keys, communication modes,
webhook URLs, and bounded wait timeouts where the CLI exposes those flags.
