# Reels, Shorts & Stories

Short-form, immersive content formats for deep engagement. Use Publer’s API to schedule or publish Reels (Instagram & Facebook), Shorts (YouTube), and Stories (Instagram & Facebook) with a single JSON payload.

### Supported Formats & Specs

<table><thead><tr><th width="79.0054931640625">Format</th><th width="108.24725341796875">Platform</th><th width="132.90667724609375">Max Duration</th><th width="109.989501953125">Aspect Ratio</th><th width="83.7396240234375">Max Size</th><th>Notes</th></tr></thead><tbody><tr><td>Reels</td><td>Instagram, Facebook</td><td>3–90 seconds</td><td>9:16</td><td>1 GB</td><td>Optional audio rename, feed toggle</td></tr><tr><td>Shorts</td><td>YouTube</td><td>≤ 60 seconds</td><td>9:16</td><td>2 GB</td><td><code>privacy</code>: <code>public</code>/<code>private</code>/<code>unlisted</code></td></tr><tr><td>Stories</td><td>Instagram, Facebook</td><td>≤ 15 seconds</td><td>9:16</td><td>1 GB</td><td>Photo or video, link stickers on IG</td></tr></tbody></table>

### Request Structure

Send to the scheduling endpoint or use `/posts/schedule/publish` for immediate posting:

#### 1. Instagram/Facebook Reel

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "instagram": {
          "type": "video",
          "text": "Our summer Reel!",
          "media": [{
            "id": "67c9630bedeb539dd87dd23c",
            "path": "https://cdn.publer.com/videos/67c9630b.mp4",
            "type": "video",
            "thumbnails": [
                  {
                    "id": "67da852b075cdb33821384ba",
                    "small": "https://.../thumb_67da852b075cdb33821384ba.jpg",
                    "real":  "https://.../67da852b075cdb33821384ba.jpg"
                  },
                  ......
                  {
                    "id": "67da852c075cdb33821384bb",
                    "small": "https://.../thumb_67da852c075cdb33821384bb.jpg",
                    "real":  "https://.../67da852c075cdb33821384bb.jpg"
                  },
            "default_thumbnail": 1
          }],
          "details": {
            "type": "reel",
            "audio": "Custom audio name",
            "feed": false
          }
        }
      },
      "accounts": [{
        "id": "67d1f5f13d9895bab04393ec",
        "scheduled_at": "2025-07-27T14:16:00+02:00"
      }]
    }]
  }
}
```

#### Instagram Trial Reels (optional)

Trial Reels let you publish a Reel as a trial before it’s shown to your followers.

Set `networks.instagram.details.trial_reel` when creating an Instagram Reel:

* `MANUAL`The Reel remains in trial until you approve sharing it with your followers.
* `SS_PERFORMANCE`: Instagram may automatically share the Reel to your followers if it performs well.

**Notes**

* `trial_reel` is only supported for Instagram Reels (`details.type = "reel"`).
* `trial_reel` is optional. If omitted, the Reel is created normally.

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "instagram": {
          "type": "video",
          "text": "Trial Reel",
          "media": [{
            "id": "67c9630bedeb539dd87dd23c",
            "path": "https://cdn.publer.com/videos/67c9630b.mp4",
            "type": "video",
            "thumbnails": [
                  {
                    "id": "67da852b075cdb33821384ba",
                    "small": "https://.../thumb_67da852b075cdb33821384ba.jpg",
                    "real":  "https://.../67da852b075cdb33821384ba.jpg"
                  },
                  ......
                  {
                    "id": "67da852c075cdb33821384bb",
                    "small": "https://.../thumb_67da852c075cdb33821384bb.jpg",
                    "real":  "https://.../67da852c075cdb33821384bb.jpg"
                  },
            "default_thumbnail": 1
          }],
          "details": {
            "type": "reel",
            "trial_reel": "SS_PERFORMANCE"
          }
        }
      },
      "accounts": [{
        "id": "67b5f97c2540fe322d786026",
        "scheduled_at": "2026-02-21T10:02+01:00"
      }]
    }]
  }
}
```

{% hint style="info" %}
`trial_reel` is only supported for Instagram Reels (`details.type: "reel"`).
{% endhint %}

#### 2. YouTube Short

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "youtube": {
          "type": "video",
          "title": "Our Latest Short",
          "text": "Quick highlights!",
          "media": [{
            "id": "67c9630bedeb539dd87dd23c",
            "path": "https://cdn.publer.com/videos/67c9630b.mp4",
            "type": "video",
            "thumbnails": [
                  {
                    "id": "67da852b075cdb33821384ba",
                    "small": "https://.../thumb_67da852b075cdb33821384ba.jpg",
                    "real":  "https://.../67da852b075cdb33821384ba.jpg"
                  },
                  .....
                  {
                    "id": "67da852c075cdb33821384bb",
                    "small": "https://.../thumb_67da852c075cdb33821384bb.jpg",
                    "real":  "https://.../67da852c075cdb33821384bb.jpg"
                  }
          }],
          "details": {
            "type": "short",
            "privacy": "public"
          }
        }
      },
      "accounts": [{
        "id": "64abc34d4e299e662bfd6389",
        "scheduled_at": "2025-08-01T14:16:00+02:00"
      }]
    }]
  }
}
```

#### 3. Instagram/Facebook Story

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "instagram": {
          "type": "photo",
          "text": "Behind the scenes!",
          "media": [{
            "id": "680fa5cc48487c4ccbf8c146",
            "path": "https://cdn.publer.com/photos/680fa5cc.jpg",
            "type": "photo"
          }],
          "details": {
            "type": "story"
          }
        }
      },
      "accounts": [{
        "id": "67d1f5f13d9895bab04393ec",
        "scheduled_at": "2025-08-24T14:16:00+02:00"
      }]
    }]
  }
}
```

### Common Parameters

<table><thead><tr><th width="267.07183837890625">Field</th><th width="83.39630126953125">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>networks.{provider}.type</code></td><td>string</td><td><code>"video"</code> for Reels/Shorts/Stories, <code>"photo"</code> for Stories</td></tr><tr><td><code>networks.{provider}.text</code></td><td>string</td><td>Caption or overlay text</td></tr><tr><td><code>networks.youtube.title</code></td><td>string</td><td>Title for YouTube Shorts</td></tr><tr><td><code>networks.{provider}.media[]</code></td><td>array</td><td>Media array (from Media API)</td></tr><tr><td><code>media[].id</code></td><td>string</td><td>Publer media identifier</td></tr><tr><td><code>media[].path</code></td><td>string</td><td>URL to the video or image</td></tr><tr><td><code>media[].type</code></td><td>string</td><td><code>"video"</code> or <code>"photo"</code></td></tr><tr><td><code>media[].thumbnails</code></td><td>array</td><td>An array of thumbnail objects with <code>id</code>, <code>small</code>, and <code>real</code> URLs (Video only)</td></tr><tr><td><code>media[].default_thumbnail</code></td><td>integer</td><td>Index of the thumbnail image (Video only)</td></tr><tr><td><code>networks.{provider}.details</code></td><td>object</td><td>Format-specific settings</td></tr><tr><td><code>details.type</code></td><td>string</td><td><code>"reel"</code>, <code>"short"</code>, or <code>"story"</code></td></tr><tr><td><code>details.audio</code></td><td>string</td><td>Custom audio name for Reels (optional)</td></tr><tr><td><code>details.feed</code></td><td>boolean</td><td><code>true</code> to also post Reel in Feed tab (Instagram only)</td></tr><tr><td><code>details.trial_reel</code></td><td>string</td><td>Instagram only. Trial Reel mode: <code>"MANUAL"</code> or <code>"SS_PERFORMANCE"</code>.</td></tr><tr><td><code>details.privacy</code></td><td>string</td><td><code>"public"</code>, <code>"private"</code>, or <code>"unlisted"</code> (Shorts only)</td></tr><tr><td><code>accounts[].id</code></td><td>string</td><td>Target account identifier</td></tr><tr><td><code>accounts[].scheduled_at</code></td><td>string</td><td>ISO 8601 timestamp for scheduling (omit for immediate publishing)</td></tr></tbody></table>

### Workflow

#### Reels

1. **Upload**: Use [Media API](/docs/posting/create-posts/media-handling.md) to upload vertical video (9:16).
2. **Compose**: Set `"details.type": "reel"`, optional `audio` and `feed` flags.
3. **(Optional) Trial Reel**: Set `details.trial_reel` to `MANUAL` or `SS_PERFORMANCE`.
4. **Schedule**: Provide `scheduled_at` or publish immediately.
5. **Verify**: Monitor job status and preview in dashboard.

#### Shorts

1. **Upload**: Upload video ≤ 60 sec, 9:16 ratio.
2. **Configure**: Set `"details.type": "short"` and `privacy`.
3. **Add Title/Text**: Populate `title` and `text`.
4. **Publish**: Schedule or publish immediately.

#### Stories

1. **Upload**: Add photo or video ≤ 15 sec.
2. **Tag as Story**: Use `"details.type": "story"`.
3. **Caption**: Add `text` overlay.
4. **Schedule**: Set `scheduled_at` or publish now.

### Best Practices

* Use high-quality, platform-compliant media (9:16 ratio).
* Rename Reel audio to match branding.
* Schedule according to audience peak times.

### Related Topics

* [Platform-Specific Formats](/docs/posting/create-posts/content-types/platform-specific-formats.md)
* [Publishing Methods](/docs/posting/create-posts/publishing-methods.md)
* [Content Types](/docs/posting/create-posts/content-types.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://publer.com/docs/posting/create-posts/content-types/platform-specific-formats/reels-shorts-and-stories.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.
