Nimply Developers

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.

Next steps

On this page