---
title: "Generate short-form video"
method: POST
path: "/api/agent/shorts"
tags: ["Shorts"]
---

# Generate short-form video

`POST /api/agent/shorts`

Starts short-form video generation and returns immediate processing status for polling.

## Request body

- ShortsGenerateRequest
  - `article_id` string, uuid — Optional article ID. When provided, shorts_video_url is saved to article metadata on completion.
  - `prompt` string, required
  - `avatar_url` string, uri, required
  - `duration` 5 | 10 | 15, required
  - `resolution` '480p' | '720p'
  - `aspect_ratio` '9:16' | '16:9' | '1:1'
  - `speech_text` string

## Response `200`

Generation accepted. Poll GET /api/agent/shorts/{id} with the same Authorization: Bearer <AGENT_API_KEY> header for status.

- ShortsGenerateAcceptedResponse
  - `id` string, uuid, required
  - `status` 'generating', required
  - `video_url` string, nullable, required
  - `credits_charged` integer, required
  - `estimated_seconds` integer, required

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `402` — Insufficient credits
- `409` — Conflict
- `429` — Rate limit exceeded
- `500` — Internal server error

## Changes

- **2026-03-03** `9cd5ce117b1d` — 1 info
  - added the new optional request property `article_id`
- **2026-03-01** `2df2182b5901` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/citedy/apis/citedy-agent-api/changes/api/agent/shorts/post.md)

---

[API](https://skmtc.dev/citedy/apis/citedy-agent-api.md) · [All operations](https://skmtc.dev/citedy/apis/citedy-agent-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/citedy/citedy-agent-api/revisions/b5785d3fe446/schema)
