Examples
Create a Reel
Upload a video by URL and publish it as short-form vertical video.
Scopes: media:write, posts:write, posts:publish.
Setting "contentType": "REEL" publishes the post to the platform's short-form video
surface instead of the regular feed.
1. Import the video
curl -X POST https://api.nimply.io/v1/media \
-H "Authorization: Bearer $NIMPLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/videos/behind-the-scenes.mp4",
"name": "behind-the-scenes.mp4"
}'{
"id": "c4d5e6f7-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"name": "behind-the-scenes.mp4",
"type": "VIDEO",
"url": "https://β¦signedβ¦",
"thumbnailUrl": null,
"size": 18874368,
"createdAt": "2026-07-09T10:00:00.000Z"
}Confirm type is VIDEO. thumbnailUrl may still be null right after upload β
thumbnails are generated asynchronously.
2. Create the post with contentType: REEL
curl -X POST https://api.nimply.io/v1/posts \
-H "Authorization: Bearer $NIMPLY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: bts-reel-001" \
-d '{
"channelIds": ["123e4567-e89b-12d3-a456-426614174000"],
"content": "Behind the scenes of our launch π¬",
"contentType": "REEL",
"mediaIds": ["c4d5e6f7-1a2b-4c3d-9e8f-0a1b2c3d4e5f"],
"schedule": "next_slot"
}'[
{
"id": "7a245d46-β¦",
"channelId": "123e4567-e89b-12d3-a456-426614174000",
"contentType": "REEL",
"status": "SCHEDULED",
"scheduledAt": "2026-07-09T18:00:00.000Z",
"mediaIds": ["c4d5e6f7-1a2b-4c3d-9e8f-0a1b2c3d4e5f"]
}
]Gotchas
- A Reel needs a video media asset β attach the
VIDEOmedia id, not an image. - Media import happens by URL: the video must be publicly reachable over http(s). Plan quotas (file size, storage, monthly uploads) apply β an oversized file returns
400. - Target a channel type that has a Reels-style format; check your channel's
typefromGET /v1/channels. - Video publishing takes longer than images β watch for
post.published/post.failedwebhooks rather than assuming success.