# Video Posts

Dynamic, high-impact video content for social networks. Video posts drive significantly more views and shares than static media, and the Publer API makes it easy to upload, configure, and schedule videos across multiple platforms.

### Overview

Programmatically create and schedule video content—standard uploads, short-form (Reels/Shorts/Stories), and rich metadata (titles, descriptions, custom thumbnails)—while meeting each network’s format rules and size limits.

### Key Capabilities

* **Cross-Platform Publishing**\
  One API call to distribute videos to Facebook, Instagram, YouTube, TikTok, LinkedIn, and more.
* **Format Versatility**\
  Support for standard videos, short-form (Reels, Shorts), and Stories.
* **Rich Metadata**\
  Attach titles, captions, and custom thumbnail selections.
* **Advanced Scheduling**\
  Schedule per time zone or publish immediately; poll job status for completion.

### Platform Support & Specifications

| Network   | Video Types            | Duration                                                      | Size Limit | Aspect Ratio                                     | Additional Features                 |
| --------- | ---------------------- | ------------------------------------------------------------- | ---------- | ------------------------------------------------ | ----------------------------------- |
| Facebook  | Standard, Reels, Story | <p>Standard: up to 5 h<br>Reels: 3–90 s<br>Stories: ≤60 s</p> | < 2 GB     | Flexible                                         | Auto-captions, premiere scheduling  |
| Instagram | Feed, Reels, Story     | <p>Feed: any<br>Reels: 3 s–15 min<br>Stories: ≤60 s</p>       | < 1 GB     | <p>1.91:1–4:5 (feed)<br>9:16 (Reels/Stories)</p> | Location tagging, first comment     |
| YouTube   | Standard, Shorts       | <p>Standard: up to 12 h<br>Shorts: up to 3 min</p>            | < 2 GB     | <p>16:9 (standard)<br>9:16 (Shorts)</p>          | Custom thumbnails, tags, categories |
| TikTok    | Standard               | 3 s–10 min                                                    | < 2 GB     | 9:16 (recommended)                               | Sound attribution                   |
| LinkedIn  | Standard               | 3 s–15 min                                                    | < 2 GB     | 1:2.4–2.4:1                                      | Native profile/page posting         |
| Pinterest | Standard               | 4 s–15 min                                                    | < 2 GB     | —                                                | —                                   |
| Twitter/X | Standard               | Up to 10 min                                                  | < 512 MB   | Flexible                                         | Alt text support                    |
| Telegram  | Standard               | Unlimited                                                     | < 50 MB    | Flexible                                         | —                                   |
| Mastodon  | Standard               | Unlimited                                                     | < 40 MB    | Up to 1920×1200 px                               | —                                   |
| Threads   | Standard               | Up to 5 min                                                   | < 1 GB     | Flexible                                         | —                                   |
| Bluesky   | Standard               | Up to 3 min                                                   | < 50 MB    | Flexible                                         | —                                   |

### Request Structure

Schedule a video post using the unified scheduling endpoint:

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "video",
            "media": [
              {
                "id": "67da8532075cdb33821384c4",
                "thumbnails": [
                  {
                    "id": "67da852b075cdb33821384ba",
                    "small": "https://.../thumb_67da852b075cdb33821384ba.jpg",
                    "real":  "https://.../67da852b075cdb33821384ba.jpg"
                  },
                  ......
                  {
                    "id": "67da852c075cdb33821384bb",
                    "small": "https://.../thumb_67da852c075cdb33821384bb.jpg",
                    "real":  "https://.../67da852c075cdb33821384bb.jpg"
                  }
                ],
                "title": "My Video Title",
                "default_thumbnail": 1
              }
            ],
            "text": "Optional description or caption"
          }
        },
        "accounts": [
          {
            "id": "YOUR_ACCOUNT_ID",
            "scheduled_at": "2025-05-24T23:07:00+02:00"
          }
        ]
      }
    ]
  }
}
```

### Required Parameters

<table><thead><tr><th width="418.9637451171875">Field</th><th>Description</th></tr></thead><tbody><tr><td><code>bulk.state</code></td><td>Must be <code>"scheduled"</code>.</td></tr><tr><td><code>networks.{provider}.type</code></td><td>Set to <code>"video"</code>.</td></tr><tr><td><code>networks.{provider}.media</code></td><td>Array of video metadata objects.</td></tr><tr><td><code>networks.{provider}.media[].id</code></td><td>ID returned by the Media Upload endpoint.</td></tr><tr><td><code>networks.{provider}.media[].thumbnails</code></td><td>Array of thumbnail objects with <code>id</code>, <code>small</code>, and <code>real</code> URLs. To add a custom thumbnail, append an object with <code>small</code> and <code>real</code>.  Always fetch the full <code>thumbnails</code> array, either from <a href="../../../api-reference/media">Listing Media</a> or from <a href="../media-handling">Media Upload</a>, when uploading.</td></tr><tr><td><code>networks.{provider}.media[].default_thumbnail</code></td><td>0-based index to select default thumbnail.</td></tr><tr><td><code>networks.{provider}.text</code></td><td>Optional caption or description.</td></tr><tr><td><code>accounts[].id</code></td><td>Target social media account ID.</td></tr><tr><td><code>accounts[].scheduled_at</code>*</td><td>ISO 8601 timestamp (omit for immediate publishing).</td></tr></tbody></table>

\* Optional if you publish immediately via `/posts/schedule/publish`.

### Workflow for Creating Video Posts

1. **Upload Video**\
   Use the [Media Handling](https://publer.com/docs/posting/create-posts/media-handling) endpoint to upload your video.
2. **Receive Media ID**\
   Note the returned `id` for referencing in your post payload.
3. **Configure Thumbnails**\
   Upload or select thumbnail images and include their IDs/URLs.
4. **Compose & Schedule**\
   Build your post object, set `state` and `scheduled_at`, then send to `/posts/schedule`.
5. **Monitor Job**\
   Poll `/api/v1/job_status/{job_id}` until status is `completed`.

### Best Practices

* **Select Engaging Thumbnails**\
  Choose a frame or custom image that drives clicks.
* **Provide Clear Titles & Descriptions**\
  Improve accessibility and SEO with detailed metadata.
* **Validate Platform Requirements**\
  Confirm aspect ratio, encoding, and file format (MP4/H.264 recommended).

### Related Topics

* [Media Handling](https://publer.com/docs/posting/create-posts/media-handling)
* [Content Types](https://publer.com/docs/posting/create-posts/content-types)
* [Publishing Methods](https://publer.com/docs/posting/create-posts/publishing-methods)
