# Create an Explainer Video

Produce your first AI-powered explainer video in just a few steps. This walkthrough uses the same `/content/Create` endpoint as podcasts, but switches the payload to `outputType: "video"` so the service renders motion visuals instead of audio-only narration. Video requests support three formats: `explainer`, `brief`, and `cinematic`.

## Step 1: Create Content Request

Send a POST request to `/content/Create` with your preferred resources, set `outputType` to `video`, and optionally choose a `format`:

```bash
curl -X POST "https://api.autocontentapi.com/content/Create" \
  -H "accept: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": [
      {
        "type": "website",
        "content": "https://example.com/article-about-ai"
      },
      {
        "type": "youtube", 
        "content": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
      }
    ],
    "outputType": "video",
    "format": "explainer",
    "text": "Create an engaging explainer about current AI developments"
  }'
```

### Example Response

```json
{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": 0
}
```

**Important:** Save the `request_id` — you'll use it to poll status and download the final video.

### Choose a format

Explainer video requests use `format` to control the output. If you still send the generic `duration` parameter, it is ignored:

| Format      | Best for                                                           | Credits |
| ----------- | ------------------------------------------------------------------ | ------- |
| `explainer` | Balanced default for most product, education, and marketing videos | 50      |
| `brief`     | Tighter, punchier recaps and shorter social-friendly explainers    | 50      |
| `cinematic` | Premium, more polished storytelling treatment                      | 100     |

If you omit `format`, the API defaults to `explainer`. Use `style` separately when you want to change the visual aesthetic.

### Optional: Guide titles, descriptions, and visuals

Use these fields to steer how the service names and presents the video:

| Field                  | What it does                                                                                                       |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `title`                | Sets an explicit video title. When present, this overrides the auto-generated title.                               |
| `titlePrompt`          | Guides the model when auto-generating the title (e.g., ask for concise, listicle-style, or SEO-friendly phrasing). |
| `descriptionPrompt`    | Steers the generated video description (tone, call-to-action, hashtags, etc.).                                     |
| `thumbnailImagePrompt` | Directs the generated thumbnail artwork.                                                                           |
| `introImagePrompt`     | Directs the opening frame artwork.                                                                                 |

Add any combination of these to the POST body:

```bash
curl -X POST "https://api.autocontentapi.com/content/Create" \
  -H "accept: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": [
      {
        "type": "youtube",
        "content": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
      }
    ],
    "outputType": "video",
    "format": "brief",
    "text": "Summarize this tutorial into a concise explainer for enterprise buyers",
    "title": "Modern Identity Security in 90 Seconds",
    "titlePrompt": "Keep it punchy and benefits-forward",
    "descriptionPrompt": "Include a one-sentence CTA to download the whitepaper",
    "thumbnailImagePrompt": "Flat illustration of a secure cloud, teal and navy palette, minimal text",
    "introImagePrompt": "Logo lockup on gradient with subtle motion trails"
  }'
```

### Optional: Apply your brand via `projects`

If you have a saved project with brand assets, include the `projects` array (pass one or more IDs) to place your logo on the generated video and thumbnail:

```bash
curl -X POST "https://api.autocontentapi.com/content/Create" \
  -H "accept: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "outputType": "video",
    "format": "cinematic",
    "projects": ["YOUR_PROJECT_ID"],
    "topic": "Product launch overview with two customer wins",
    "text": "Create a polished launch explainer with a strong closing CTA."
  }'
```

See the [brand logo recipe](https://docs.autocontentapi.com/quick-start/explainer-videos/brand-with-project-id) for more variations. Need a project first? Follow [Create a Project (Brand Assets)](https://docs.autocontentapi.com/quick-start/tools/create-project) to save a logo via `imageUrl` or `imageData`.

## Step 2: Poll for Status

Use the `request_id` to check the processing status by calling `/content/Status/{id}`:

```bash
curl -X GET "https://api.autocontentapi.com/content/Status/550e8400-e29b-41d4-a716-446655440000" \
  -H "accept: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

### While Processing

```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": 5,
  "updated_on": "2024-01-15T10:32:00Z",
  "error_code": 0,
  "requested_on": "2024-01-15T10:30:00Z"
}
```

**Status Codes:**

* `0` = Pending (queued for processing)
* `5` = Processing (generation in progress)
* `100` = Completed (video ready!)

## Step 3: Get Your Video

When `status` reaches `100`, the payload includes a link to your generated video:

Titles or prompts you set in Step 1 flow into `video_title`, and image prompts steer `image_url`/`thumbnail` assets returned here.

```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "video_title": "AI Developments Discussion",
  "status": 100,
  "video_url": "https://storage.autocontentapi.com/video/550e8400-e29b-41d4-a716-446655440000.mp4",
  "image_url": "https://storage.autocontentapi.com/thumbnails/550e8400-e29b-41d4-a716-446655440000.jpg",
  "response_text": "Full narration that describes the generated visuals...",
  "requested_on": "2024-01-15T10:30:00Z",
  "updated_on": "2024-01-15T10:35:00Z",
  "request_type_id": 1,
  "error_code": 0,
  "error_on": null,
  "citations": [],
  "file_size": 51234567,
  "video_duration": 456,
  "share_url": "https://autocontentapi.com/share/video/550e8400-e29b-41d4-a716-446655440000/20240115"
}
```

**🎉 Success!** Your explainer video is ready at the `video_url`, and you can grab the thumbnail from `image_url`.

## Resource Types

You can mix and match resource types just like you would for a podcast:

| Type      | Description         | Example                                      |
| --------- | ------------------- | -------------------------------------------- |
| `website` | Any web page URL    | `"https://techcrunch.com/article"`           |
| `youtube` | YouTube video URL   | `"https://www.youtube.com/watch?v=VIDEO_ID"` |
| `text`    | Direct text content | `"Your custom instructions or content"`      |
| `pdf`     | PDF document URL    | `"https://example.com/document.pdf"`         |

> Need a specific payload? Check the new [Explainer Video Scenario Examples](https://docs.autocontentapi.com/quick-start/explainer-videos/explainer-video-examples) for copy-paste `curl` requests covering languages, formats, styles, and every supported resource type.

## Tips for Better Results

1. **Mix resource types** – Combine websites, videos, and text for richer storytelling.
2. **Provide clear instructions** – Use the `text` field to direct the pacing, tone, or call-to-action.
3. **Surface thumbnails** – Store the `image_url` for embedding preview artwork alongside the finished video.
4. **Check status regularly** – Processing typically takes 2-5 minutes for most requests; `cinematic` can take longer.
5. **Save the request\_id** – You'll need it to retrieve your video and any associated transcript.

## Error Handling

If something goes wrong, the status response will include error details:

```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": 0,
  "error_code": 400,
  "error_message": "Invalid resource URL provided",
  "error_on": "2024-01-15T10:31:00Z",
  "requested_on": "2024-01-15T10:30:00Z"
}
```

## What's Next?

* 🎨 Pick reusable formats and styles in [Explainer Video Scenario Examples](https://docs.autocontentapi.com/quick-start/explainer-videos/explainer-video-examples)
* 🧪 Explore language-specific snippets in the [video code samples](https://docs.autocontentapi.com/code-samples/explainer-videos/video-explainer-samples)
* 🎙️ Add branded voices with [Clone a Voice](https://docs.autocontentapi.com/quick-start/tools/clone-voice)
* 📝 Need captions? Run the final audio track through [Transcribe Audio](https://docs.autocontentapi.com/quick-start/tools/transcribe-audio)
* 🔮 Check out [Advanced Integrations](https://docs.autocontentapi.com/integrations) for automation ideas
* ❓ Have questions? Visit our [FAQ](https://docs.autocontentapi.com/faq)
