# 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](/quick-start/explainer-videos/brand-with-project-id.md) for more variations. Need a project first? Follow [Create a Project (Brand Assets)](/quick-start/tools/create-project.md) 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](/quick-start/explainer-videos/explainer-video-examples.md) 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](/quick-start/explainer-videos/explainer-video-examples.md)
* 🧪 Explore language-specific snippets in the [video code samples](/code-samples/explainer-videos/video-explainer-samples.md)
* 🎙️ Add branded voices with [Clone a Voice](/quick-start/tools/clone-voice.md)
* 📝 Need captions? Run the final audio track through [Transcribe Audio](/quick-start/tools/transcribe-audio.md)
* 🔮 Check out [Advanced Integrations](/integrations.md) for automation ideas
* ❓ Have questions? Visit our [FAQ](/faq.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.autocontentapi.com/quick-start/explainer-videos/create-explainer-video.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
