# AI UGC Ad Video API

> Generate UGC-style ad videos with an API call: one of 58 AI avatar reactions, your hook text, and your own product demo clip, rendered vertical.

- Canonical page: https://www.autofeed.ai/video-api/ugc-ads
- API reference: https://www.autofeed.ai/docs/api
- Publisher: AutoFeed.ai (https://www.autofeed.ai)

Send a hook line, pick an avatar and point at your product footage. AutoFeed renders the reaction, the hook overlay and your demo into one vertical ad.

- 58 AI avatar reaction clips to choose from
- Your hook text on screen, up to 300 characters, styled how you want
- Your own product demo in the same ad, or the reaction on its own
- Vertical 1080x1920, flat price per ad

## Example request

Costs 1,000 credits, the same as in the dashboard.

```bash
curl -X POST https://www.autofeed.ai/api/v1/videos \
  -H "Authorization: Bearer $AUTOFEED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "ugc",
    "input": {
      "hook": "I cancelled four subscriptions after finding this app",
      "avatarSrc": "/ugc-templates/1.mp4",
      "demoSrc": "https://example.com/media/app-demo.mp4"
    },
    "webhookUrl": "https://example.com/webhooks/autofeed",
    "idempotencyKey": "order-1042-ugc-ads"
  }'
```

202 Accepted:

```json
{
  "id": "1c9d6c3e-1f5b-4d2e-9c31-2b8b0f0f9a11",
  "type": "ugc",
  "status": "processing",
  "costInCredits": 1000,
  "createdAt": "2026-11-02T12:00:00.000Z"
}
```

`video.completed` webhook body:

```json
{
  "id": "1c9d6c3e-1f5b-4d2e-9c31-2b8b0f0f9a11",
  "type": "ugc",
  "status": "completed",
  "error": null,
  "costInCredits": 1000,
  "createdAt": "2026-11-02T12:00:00.000Z",
  "completedAt": "2026-11-02T12:03:41.000Z",
  "url": "https://.../1c9d6c3e-1f5b-4d2e-9c31-2b8b0f0f9a11.mp4"
}
```

## Input fields

| Field | Type | Default | Notes |
|---|---|---|---|
| `hook` (required) | string (max 300) | - | Required. The line shown on screen over the avatar. |
| `avatarSrc` | one of 58 values | "/ugc-templates/1.mp4" | Which avatar clip to use, by its path. The dashboard shows every option. |
| `demoSrc` (required) | string (max 2048) | - | An https URL to your product footage. Empty means no demo. Private and local addresses are rejected. |
| `soundId` | one of 77 values | "none" |  |
| `hookAlignment` | "start" \| "center" \| "end" | "center" |  |
| `hookConfig` | object | preset | Text styling for the hook. Any field you leave out comes from the preset. |

Included with Ultimate. Rendered files are kept for 14 days.

## Frequently asked questions

### Is the avatar a talking-head lip-sync?

No. The avatar is a pre-made reaction clip with your hook text over it, combined with your demo if you send one. There is no script read aloud and no lip-sync.

### Where does my demo video need to be?

At a public https URL we can fetch. URLs that point at private, local or link-local addresses are rejected before anything is charged.

### How is a UGC ad billed?

From the same credit balance as the dashboard, at the same price per video. The cost is in the 202 response before any work starts, and a failed render refunds it. UGC ads are a flat price.
