Skip to content
Getting Started

Quickstart

You’ll need a connected Kirim organisation with at least one approved WhatsApp Business number. If you haven’t onboarded yet, sign up at app.kirim.dev and connect your number first — the dashboard walks you through the embedded Meta signup flow.

By the end of this page you’ll have:

  1. Issued an API key.
  2. Sent a text message to your own phone.
  3. Polled the message status and seen delivered.

Total time: under five minutes if Meta is in a cooperative mood.

  1. Issue an API key.

    In the Kirim dashboard, navigate to Developers → API Keys and click Create key. Give it a descriptive label (e.g. local-laptop or n8n-prod) and copy the plaintext value immediately — Kirim shows it exactly once.

    Terminal window
    # Store the key in your shell — never commit it.
    export KIRIM_KEY=kdv_live_xxxxxxxxxxxxxxxxxxxxxxxx
  2. Verify the key works.

    The /v1/me endpoint introspects your key and returns the organisation context.

    Terminal window
    curl -sS https://api-kckit.kirim.chat/v1/me \
    -H "Authorization: Bearer $KIRIM_KEY"

    Expected response:

    {
    "data": {
    "organization": {
    "id": "org_…",
    "object": "organization",
    "name": "Your Org"
    },
    "api_key": {
    "id": "key_…",
    "object": "api_key",
    "label": "local-laptop",
    "last4": "abcd"
    },
    "rate_limits": {
    "tier": "default",
    "write_per_minute": 60,
    "read_per_minute": 600
    }
    },
    "request_id": "req_…"
    }
  3. Send your first message.

    Replace +628123456789 with a phone number Meta has already received a message from in the past 24 hours — Meta only allows free-form text inside an open conversation window.

    Terminal window
    curl -sS https://api-kckit.kirim.chat/v1/messages \
    -H "Authorization: Bearer $KIRIM_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "to": "+628123456789",
    "type": "text",
    "text": { "body": "Halo dari Kirim API" }
    }'

    Expected response:

    {
    "data": {
    "id": "msg_01HXYZABCDEFGHJKMNPQRSTVWX",
    "object": "message",
    "to": "+628123456789",
    "type": "text",
    "status": "pending",
    "created_at": "2026-05-24T08:00:00.000Z"
    },
    "request_id": "req_…"
    }

    The recipient should receive the message within a few seconds.

  4. Poll the status.

    The send is asynchronous — status flips from pendingsentdeliveredread as Meta returns callbacks.

    Terminal window
    curl -sS https://api-kckit.kirim.chat/v1/messages/msg_01HXYZABCDEFGHJKMNPQRSTVWX \
    -H "Authorization: Bearer $KIRIM_KEY"
    {
    "data": {
    "id": "msg_01HXYZABCDEFGHJKMNPQRSTVWX",
    "object": "message",
    "status": "delivered",
    "to": "+628111111111",
    "type": "text",
    "created_at": ""
    },
    "request_id": ""
    }

    Polling is fine for a quickstart but inefficient at scale. Set up a webhook (next section) to receive message.status callbacks instead.