Publora — Facebook
Facebook platform skill for the Publora API. For auth, core scheduling, media upload, and workspace/webhook docs, see the publora core skill.
Base URL: https://api.publora.com/api/v1
Header: x-publora-key: sk_YOUR_KEY
Platform ID format: facebook-{pageId}
If you manage multiple Pages, each Page gets its own platform ID.
Requirements
- A Facebook Page (not a personal profile) connected via OAuth
- Page admin permissions granted during OAuth
Platform Limits (API)
⚠️ API video limits are significantly stricter than native.
| Property | API Limit | Native App |
|---|---|---|
| Text | 63,206 characters | Same |
| Images | Up to 10 × 10 MB | JPEG, PNG, GIF, BMP, TIFF |
| Video | 45 min / 2 GB | 240 min / 4 GB |
| Reels duration | 90 seconds | 90 seconds |
| Reels rate limit | 30 Reels/day/Page | — |
| Reels posting | Pages only (not profiles) | — |
| Text only | ✅ Yes | — |
Common errors:
Error 1363026— video over 40 min → trim to under 45 minError 1363023— file over 2 GB → compressError 1363128— Reels duration outside 3–90s range
Posts under 80 characters get 66% more engagement on Facebook.
Post a Text Update
await fetch('https://api.publora.com/api/v1/create-post', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },
body: JSON.stringify({
content: 'Exciting news from our team! We just launched a new feature. Check it out at publora.com 🎉',
platforms: ['facebook-123456789']
})
});
Schedule a Post
body: JSON.stringify({
content: 'Your Facebook Page update',
platforms: ['facebook-123456789'],
scheduledTime: '2026-03-20T13:00:00.000Z'
})
Post with Image
// Step 1: Create post
const post = await fetch('https://api.publora.com/api/v1/create-post', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },
body: JSON.stringify({
content: 'Check out our latest product photo!',
platforms: ['facebook-123456789']
})
}).then(r => r.json());
// Step 2: Get upload URL
const upload = await fetch('https://api.publora.com/api/v1/get-upload-url', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },
body: JSON.stringify({
postGroupId: post.postGroupId,
fileName: 'photo.jpg',
contentType: 'image/jpeg',
type: 'image'
})
}).then(r => r.json());
// Step 3: Upload
await fetch(upload.uploadUrl, {
method: 'PUT',
headers: { 'Content-Type': 'image/jpeg' },
body: imageBytes
});
Post a Reel (3–90 seconds)
Use the same flow but upload a short video file. Reels are posted to Pages only.
Platform Quirks
- Pages only — personal profiles are not supported via the Facebook Graph API
- Multiple pages — each Page has a separate platform ID; connect them individually in Publora dashboard
- Video limits: 45 min / 2 GB via API (native allows 240 min / 4 GB)
- Reels: Must be 3–90 seconds; limited to 30 per day per Page
- Carousels: Up to 10 images or videos (cannot mix in the same carousel)
- Rate limit formula: 200 × users/hour