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

| Platform   | Max Photos | Photo Size Limit | Caption Support | Notes  |
|------------|------------|------------------|-----------------|--------|
| **Facebook**   | Unlimited    | No restriction    | Yes               | No restrictions on photo size. |
| **Instagram**  | 10         | 8 MB             | Yes               | Minimum resolution: 320x320 px, automatically cropped. |
| **TikTok**     | 35         | No restriction    | Yes               | Cannot mix photos with GIFs or videos. |
| **Threads**    | 20         | 8 MB             | Yes               | Cannot mix photos with GIFs or videos. |
| **Twitter**    | 4          | 5 MB             | Yes               | Supports only up to 4 photos per post. |
| **LinkedIn**   | 20         | No restriction    | Yes               | Photos and GIFs are supported, cannot mix with videos. |
| **Telegram**   | 10         | 10 MB            | Yes               | Cannot mix photos with GIFs or videos. |
| **Mastodon**   | 4          | 8 MB             | Yes               | Supports JPEG, PNG, or WEBP formats. |

> **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

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

Omit `scheduled_at` for immediate posts.

Copy

```
{
  "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

| Field                              | Description                                                                 |
|------------------------------------|-----------------------------------------------------------------------------|
| `networks.{provider}.type`         | Must be `"photo"`.                                                        |
| `networks.{provider}.media`        | Array of `{ id, type, caption }` objects.                                   |
| `accounts[].id`                    | Target social account ID.                                                  |
| `accounts[].scheduled_at`*         | ISO 8601 timestamp for scheduling (optional).                              |

\* 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.
