Platform Limits
Return Publora's per-platform posting limits (character counts, image / video / document / GIF / thumbnail rules, and platform requirements) as live JSON. These are the API-specific limits Publora validates against before scheduling — fetch them to drive client-side validation instead of hard-coding values. For the human-readable tables and the API-vs-native-app differences, see the Platform Limits guide.
The limits come from the shared @publora/platform-limits package, so this endpoint always reflects the same rules the scheduler enforces.
Endpoint
GET https://api.publora.com/api/v1/platform-limitsHeaders
| Header | Required | Description |
|---|---|---|
x-publora-key |
Yes | Your API key |
No query parameters or request body.
Response
The JSON below is abridged: only twitter is shown under platforms. The live response includes an object for every one of the 11 supportedPlatforms keys.
{
"success": true,
"schemaVersion": 1,
"source": "@publora/platform-limits",
"packageVersion": "1.0.0",
"limitsLastUpdated": "2026-03-11",
"supportedPlatforms": ["twitter", "instagram", "threads", "tiktok", "linkedin", "youtube", "facebook", "mastodon", "bluesky", "telegram", "pinterest"],
"platforms": {
"twitter": {
"platform": "twitter",
"displayName": "Twitter/X",
"characters": { "standard": 280, "premium": 25000 },
"images": { "supported": true, "maxSizeBytes": 5242880, "maxCount": 4, "formats": ["image/jpeg", "image/png", "image/gif", "image/webp"] },
"videos": { "supported": true, "maxDurationSeconds": 140, "minDurationSeconds": 0.5, "maxSizeBytes": 536870912, "maxCount": 1, "formats": ["video/mp4", "video/quicktime"], "aspectRatioRange": { "min": 0.3333333333333333, "max": 3 } },
"requirements": { "requiresMedia": false, "requiresVideo": false, "supportsTextOnly": true, "supportsThreading": true },
"documents": null,
"gifs": null,
"thumbnails": null
}
}
}| Field | Description |
|---|---|
success |
true when the limits were returned. |
schemaVersion |
Response schema version (currently 1); bumped on breaking shape changes. |
source |
Always "@publora/platform-limits" — the package the values come from. |
packageVersion |
Version of that package (e.g. "1.0.0"). |
limitsLastUpdated |
ISO date the limit values were last revised. |
supportedPlatforms |
Array of platform keys included in platforms. |
platforms |
Object keyed by platform. Each value carries platform, displayName, characters, images, videos, requirements, plus documents, gifs, and thumbnails (each null when the platform has no distinct spec). |
Pinterest is present in
supportedPlatformsandplatformsas an internal reference key, but Pinterest is not currently available for posting — treat the other 10 platforms as active.
Usage
cURL
curl https://api.publora.com/api/v1/platform-limits \
-H "x-publora-key: $PUBLORA_API_KEY"JavaScript (fetch)
const res = await fetch('https://api.publora.com/api/v1/platform-limits', {
headers: { 'x-publora-key': process.env.PUBLORA_API_KEY },
});
const { platforms } = await res.json();
const twitterMax = platforms.twitter.characters.standard; // 280Errors
| Status | Error | Cause |
|---|---|---|
401 |
Invalid API key |
Missing or invalid x-publora-key. |
Notes
- Cache friendly. Limits change rarely — cache the response and refresh when
limitsLastUpdatedchanges rather than calling per request. - API limits, not native-app limits. These reflect what the third-party APIs accept, which is often stricter than the platforms' own apps. See the guide for the differences.
- Units.
maxSizeBytesis in bytes; durations are in seconds.