Quickstart
Create and schedule your first post with curl.
This walkthrough takes you from an empty terminal to a scheduled post in four requests.
You need an API key with the channels:read, media:write,
posts:write, and posts:publish scopes.
Export your key once so the examples stay short:
export NIMPLY_API_KEY="nim_live_4f8a2cā¦"1. Find your channels
Posts are published to channels ā the social accounts connected to your workspace. List them to get their ids:
curl https://api.nimply.io/v1/channels \
-H "Authorization: Bearer $NIMPLY_API_KEY"{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corp",
"type": "INSTAGRAM_PROFESSIONAL",
"username": "acmecorp",
"isConnected": true,
"tokenStatus": "HEALTHY",
"timezone": "Europe/Berlin"
}
]
}Pick the id of the channel you want to post to. Make sure isConnected is true and
tokenStatus is not NEEDS_RECONNECT.
2. Upload media
Give Nimply a publicly reachable URL and it downloads and stores the file, returning a media id you can attach to posts:
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/images/launch-banner.png",
"name": "launch-banner.png"
}'{
"id": "9f2b1c3d-5a6e-4f70-8b91-2c3d4e5f6a70",
"name": "launch-banner.png",
"type": "image"
}3. Create a draft post
Create the post as a draft first ("schedule": "draft"), so you can review it in the
Nimply app before anything goes live:
curl -X POST https://api.nimply.io/v1/posts \
-H "Authorization: Bearer $NIMPLY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 4b1f2b6e-launch-post-001" \
-d '{
"channelIds": ["123e4567-e89b-12d3-a456-426614174000"],
"content": "Launching something new today š",
"mediaIds": ["9f2b1c3d-5a6e-4f70-8b91-2c3d4e5f6a70"],
"schedule": "draft"
}'One post is created per channel id. The response includes the post id you need in the next step.
Idempotency-Key
Send an Idempotency-Key header (any unique string per logical operation) on POST
requests. If a request times out or your retry logic fires twice, Nimply returns the
original result instead of creating a duplicate post.
4. Schedule it
When you are happy with the draft, schedule it for a specific ISO 8601 time:
curl -X POST https://api.nimply.io/v1/posts/{postId}/schedule \
-H "Authorization: Bearer $NIMPLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "scheduledAt": "2026-08-01T09:00:00.000Z" }'The post status moves to SCHEDULED and Nimply publishes it at that time.
Prefer to skip the draft step? Set schedule directly when creating the post:
"next_slot" uses the channel's next free posting-schedule slot, "now" publishes
immediately, and an ISO 8601 datetime schedules it ā all of these require the
posts:publish scope.