Quickstart

Send your first post with the Bulkit API in 5 minutes.

This guide takes you from zero to a scheduled post.

Before you start, make sure you have:

Set these two values in your terminal:

export BULKIT_URL="http://localhost:3001/public/v1"
export BULKIT_API_KEY="bk_test_xxxxxxxxxxxxxxxx"

Start with a test key (bk_test_…). It checks everything but never posts, so you can try things safely. Switch to a live key when you are ready.

Find your channel id

Ask Bulkit which accounts you can post to:

curl "$BULKIT_URL/channels" -H "x-api-key: $BULKIT_API_KEY"
Response
[
  {
    "id": "clx3k2p9q0001abcd1234efgh",
    "platform": "linkedin",
    "name": "Acme Inc.",
    "username": "acme",
    "needsReconnect": false,
    "connectedAt": "2026-08-04T09:30:00.000Z"
  }
]

Copy the id. This is your channel id. Make sure needsReconnect is false.

Check what the platform accepts (optional)

Every platform has its own limits, like the number of characters or images. Get them here:

curl "$BULKIT_URL/platforms" -H "x-api-key: $BULKIT_API_KEY"

Look at limits.maxCharacters, limits.maxMedia and limits.requiresMedia for your platform.

Schedule a post

Replace CHANNEL_ID with your id, and pick a date in the future:

curl -X POST "$BULKIT_URL/posts" \
  -H "x-api-key: $BULKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "intent": "schedule",
    "scheduledAt": "2026-10-15T09:00:00Z",
    "channels": [
      {
        "channelId": "CHANNEL_ID",
        "blocks": [{ "content": "Hello from the Bulkit API!" }]
      }
    ]
  }'

You get back the post with status scheduled. Save its id.

  • intent — what to do: draft (save only), schedule (publish at scheduledAt), or now (publish right away).
  • scheduledAt — the time in ISO 8601 format. It must include a timezone: Z for UTC, or an offset like +02:00.
  • Idempotency-Key — a unique value per request. If you retry, Bulkit will not create the post twice. Read more.

Check the result

Publishing happens in the background. To see what happened, get the post:

curl "$BULKIT_URL/posts/POST_ID" -H "x-api-key: $BULKIT_API_KEY"

When status is published, each channel has a remoteUrl — the link to the live post.

Next steps

On this page