# Photo Posts

Visual content that drives engagement across social networks. Use photo posts to share high-quality images—single or multiple—while respecting each platform’s unique requirements.

### Key Features

* **Multi-Platform Publishing**\
  Post images simultaneously to all supported networks.
* **Multiple Image Support**\
  Single photos or carousels (up to platform limits).
* **Advanced Customization**\
  Captions and location tags where available.
* **Resolution Optimization**\
  Automatic resizing and format handling per network.

### Platform Support & Limits

<table><thead><tr><th width="105.3690185546875">Platform</th><th width="100.15966796875">Max Photos</th><th width="125.1968994140625">Photo Size Limit</th><th width="134.597412109375">Caption Support</th><th>Notes</th></tr></thead><tbody><tr><td><strong>Facebook</strong></td><td>Unlimited</td><td>No restriction</td><td>Yes</td><td>No restrictions on photo size.</td></tr><tr><td><strong>Instagram</strong></td><td>10</td><td>8 MB</td><td>Yes</td><td>Minimum resolution: 320x320 px, automatically cropped.</td></tr><tr><td><strong>TikTok</strong></td><td>35</td><td>No restriction</td><td>Yes</td><td>Cannot mix photos with GIFs or videos.</td></tr><tr><td><strong>Threads</strong></td><td>20</td><td>8 MB</td><td>Yes</td><td>Cannot mix photos with GIFs or videos.</td></tr><tr><td><strong>Twitter</strong></td><td>4</td><td>5 MB</td><td>Yes</td><td>Supports only up to 4 photos per post.</td></tr><tr><td><strong>LinkedIn</strong></td><td>20</td><td>No restriction</td><td>Yes</td><td>Photos and GIFs are supported, cannot mix with videos.</td></tr><tr><td><strong>Telegram</strong></td><td>10</td><td>10 MB</td><td>Yes</td><td>Cannot mix photos with GIFs or videos.</td></tr><tr><td><strong>Mastodon</strong></td><td>4</td><td>8 MB</td><td>Yes</td><td>Supports JPEG, PNG, or WEBP formats.</td></tr></tbody></table>

> **Note**: Inserting Alt text is supported on Publer for all social networks. However, when creating multi-photo posts on Facebook, adding Alt text will also count as the photo caption.

> **Note**: You cannot add Alt text to Facebook Personal Profiles/Groups posts, due to API limitations from the networks.

### Request Structure <a href="#request-structure" id="request-structure"></a>

Below is an example showing a photo post scheduled for multiple platforms.

Omit `scheduled_at` for immediate posts.

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "photo",
            "text": "Our new office is complete! #OfficeLife",
            "media": [
              {
                "id": "asset123456",
                "type": "photo",
                "caption": "Modern office with open layout"
              },
              {
                "id": "asset123457",
                "type": "photo",
                "caption": "Collaborative meeting area"
              }
            ]
          },
          "instagram": {
            "type": "photo",
            "text": "We’ve moved into our new HQ! 🏢✨",
            "media": [
              { "id": "asset123456", "type": "photo", "caption": "Modern office space" },
              { "id": "asset123457", "type": "photo", "caption": "Meeting area" }
            ]
          }
        },
        "accounts": [
          { "id": "FB_ACCOUNT_ID", "scheduled_at": "2025-05-20T14:30:00Z" },
          { "id": "IG_ACCOUNT_ID", "scheduled_at": "2025-05-20T15:00:00Z" }
        ]
      }
    ]
  }
}
```

### Required Parameters

<table><thead><tr><th width="282.17669677734375">Field</th><th>Description</th></tr></thead><tbody><tr><td><code>networks.{provider}.type</code></td><td>Must be <code>"photo"</code>.</td></tr><tr><td><code>networks.{provider}.media</code></td><td>Array of <code>{ id, type, caption }</code> objects.</td></tr><tr><td><code>accounts[].id</code></td><td>Target social account ID.</td></tr><tr><td><code>accounts[].scheduled_at</code>*</td><td>ISO 8601 timestamp for scheduling (optional).</td></tr></tbody></table>

\* Omit `scheduled_at` when publishing immediately.

### Media Workflow

1. **Upload Images**: Use the [Media Handling API ](https://publer.com/docs/posting/create-posts/media-handling)to upload files.
2. **Receive IDs**: Note each media object’s `id`.
3. **Compose Post**: Reference those IDs in your `media` array.
4. **Publish/Schedule**: Send the payload to the posts endpoint.

### Best Practices

* **Optimize Quality**: Compress and resize images to platform specs.
* **Descriptive Alt Text**: Enhance accessibility and SEO.
* **Tailor Captions**: Adjust tone and length per network.
* **Experiment Carousels**: Test image order to boost engagement.
* **Consistent Branding**: Use uniform styles and watermarks.

### 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)
