Guides
Media & images
Upload media once to get an id, then attach it to a post. Each network has its own limits — a media set that isn't valid for one target fails just that target.
Upload
POST the raw bytes with the correct Content-Type. You get back a MediaAsset.
curl -X POST https://api.postlake.dev/v1/media \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpg{ "id": "med_abc", "url": "https://…", "contentType": "image/jpeg", "size": 208134 }Supported: JPEG, PNG, WebP images; MP4 video. Video-only networks (YouTube, TikTok) require a video asset.
Attach — globally or per platform
Put ids in media to attach to every account, or use mediaOverrides to give each platform its own set (a square image for Instagram, a video for TikTok).
{
"text": "Launch day",
"media": ["med_abc"],
"mediaOverrides": { "tiktok": ["med_video"] },
"accounts": ["acc_ig", "acc_tt"]
}Per-platform media limits
| Platform | Media |
|---|---|
| Bluesky | Up to 4 images, or 1 video |
| Threads | Image carousel, or video |
| Image or video (Reels) | |
| TikTok / YouTube | Video only |
| X, LinkedIn, Facebook | Images and video |
Image or video (needs a boardId) |
These are the practical rules today; call GET /v1/platforms/{platform} for the live, authoritative limits (max count, size, aspect) so you — or an agent — can validate before posting.
Alt text
Provide accessibility alt text per media item through platformOptions / media alt overrides. If a media set is invalid for a target, that target fails with a clear error and the others still publish — see Errors.