A post body’sDocumentation Index
Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt
Use this file to discover all available pages before exploring further.
media array accepts three sources per item. Pick exactly one.
| field | what it is | when to use |
|---|---|---|
mediaId | reference to a POST /v1/media upload | production. Preferred — bytes already on our CDN. |
url | passthrough; we fetch from your CDN | you host your own assets and want zero copies. |
bytesBase64 | inline base64 | tiny images, scripts, tests. Don’t use for video. |
The mediaId path
The two-step flow: upload bytes once, then reference them on every post that uses them. Latency at publish time stays low because the platform fetches from our CDN (or we already have the bytes).upload.sh
post-with-media.json
mediaId matches the regex ^med_[0-9A-Za-z]{22}$ — anything else fails request validation.
The url path
Send a public URL we canGET anonymously:
url.json
instagram.media.reachable for the canonical version of that failure (Instagram’s OAuthException 2207052).
When in doubt, upload via POST /v1/media and use mediaId.
The bytesBase64 path
Inline base64. Convenient for tests and tiny assets:inline.json
media.bytes_inline_unsupported — upload via POST /v1/media and switch to mediaId.
Per-platform constraints
Each platform has its own ceilings. The full set is enforced in preflight; here’s the headline shape:| platform | image max | video max | mime allowed | carousel size |
|---|---|---|---|---|
| Bluesky | 976 KB | 100 MB | jpeg, png, webp, gif / mp4 | up to 4 imgs / 1 vid |
| Threads | 8 MB | 1 GB | jpeg, png, webp / mp4, mov | 2–20 mixed |
| 8 MB | 1 GB | jpeg only / mp4, mov | 2–10 mixed | |
| 4 MB | 4 GB | jpeg, png / mp4, mov | up to 10 | |
| 20 MB | — | jpeg, png / — | single only | |
| Twitter / X | 5 MB | 512 MB | jpeg, png, webp / mp4 (gif: 15 MB) | single (v1) |
| (uploads handled per-asset by LinkedIn) |
packages/schemas/src/post.ts. Each ceiling has a preflight rule with its own page; e.g. instagram.media.image_size_max.
Notes per platform
- Instagram is JPEG-only on the photo path. PNG, WebP, HEIC, and GIF all surface as opaque IG
code 100errors upstream — preflight catches them withinstagram.media.mime_allowedand points you at the remediation. - Bluesky enforces image-vs-video exclusivity. A single post can have images or a video, not both. See
bluesky.media.image_video_exclusive. - Pinterest is single-image only in v1. Multi-pin and video pins are deferred.
- Threads is the most permissive carousel. 2–20 children, mixed images and videos.
Alt text
Always providealtText. Most platforms cap it (Bluesky 2000, Instagram 2200, Threads 1000); see the per-rule pages for the exact ceiling.