Publishing
| content.type | ||
|---|---|---|
text | ✓ | ✗ (Instagram rejects text-only) |
link | ✓ | ✗ |
image | ✓ | ✓ (JPEG, public HTTPS URL) |
Images
Either a public URL, or upload first with POST /api/v1/uploads and use the uploadId. Type, size and dimensions are checked from the bytes.
"media": [ { "source": "upload", "uploadId": "0192..." } ]
Scheduling
"publishing": { "mode": "scheduled", "scheduledAt": "2026-10-01T09:00:00Z" }
Cancel before publishing starts: POST /api/v1/posts/{id}/cancel.
A result per account
Each target has its own status. The post ends as published, partially_published or failed. Retry only the failed ones with POST /api/v1/posts/{id}/retry.
Automatic retries
Rate limits and temporary Meta outages are retried automatically with growing delays. Expired tokens, missing permissions and rejected media are not, because repeating would not change the outcome.