Skip to content

Quickstart

Everything here happens against the live API.

Neike is a technical provider, not a BSP. You connect your own Meta assets and Meta bills you for what you send. That means three things have to be in place on your side before a single message goes out:

You needWhy
A Neike accountWhere you get the API key and point us at your backend.
Your own WhatsApp number, Instagram professional account or Facebook pageYou connect it to Neike; ownership stays yours.
A payment method on your own WhatsApp Business Account, in MetaMeta charges you per conversation. Without it, Meta rejects every send — see Meta’s guide.
  1. The whole reference is available as plain text, no key required:

    Terminal window
    curl https://api.neike.dev/api/llms.txt
  2. Channels are connected from the console, not from this API — the flow runs Meta’s Embedded Signup in a popup and has to happen in a browser.

    Go to Channels, pick WhatsApp, Instagram or Messenger and follow Meta’s dialog. When it finishes you get a channel_id that looks like nk_dvzobn7m4h4y. That is the id you use everywhere else.

    Connecting succeeds even if your Meta account has no payment method — we do not block the channel over it. The console marks the channel and the Embedded Signup response carries meta_payment_status: "missing", so you can surface it in your own flow. Sending will keep failing until you add it.

  3. In API keys, create a key. It is shown once and stored only as a hash — we cannot recover it for you.

    Scope it to what the integration actually does (messages:send, messages:read, templates:manage, …) so a leaked key cannot do everything.

  4. Tell us the base URL we should call and a shared token, either in Webhooks or through the API:

    Terminal window
    curl -X PATCH https://api.neike.dev/api/webhooks/config \
    -H "x-neike-api-key: whk_live_…" \
    -H "Content-Type: application/json" \
    -d '{ "webhook_url": "https://your-backend.com" }'

    We append the platform’s path to that base. An inbound WhatsApp message becomes POST https://your-backend.com/chat/whatsapp/receive.

  5. Write to your connected number from your phone. Your backend gets:

    {
    "event": "message.received",
    "channel": { "id": "nk_dvzobn7m4h4y", "platform": "whatsapp" },
    "contact": {
    "id": "5491112345678",
    "name": "Ana",
    "phone": "+5491112345678",
    "username": null,
    "avatar_url": null
    },
    "message": {
    "id": "wamid.HBgNNTQ5MTEy…",
    "direction": "inbound",
    "timestamp": "2026-08-09T18:12:44.310Z",
    "type": "text",
    "content": { "text": "Do you have stock?" },
    "reply_to": null
    }
    }

    Check the x-webhook-token header against your shared token before you process anything, and answer 200 quickly — slow handlers get retried.

  6. Terminal window
    curl -X POST https://api.neike.dev/api/outbound/send \
    -H "x-neike-api-key: whk_live_…" \
    -H "Content-Type: application/json" \
    -d '{
    "channelId": "nk_dvzobn7m4h4y",
    "to": "5491112345678",
    "type": "text",
    "content": { "text": "Yes, we do." }
    }'

    You get 202 with a jobId. The send is queued, so the response means accepted, not delivered — delivery arrives as a status webhook.

  7. As Meta confirms each step we POST to https://your-backend.com/chat/whatsapp/update with the provider message id and the new state: sentdeliveredread, or failed with a reason.