Command Palette

Search for a command to run...

IntelliPortalDOCS

Start here

  • Overview
  • Quickstart
  • Test in the sandbox

Build

  • Authentication
  • Clients
  • Hosted onboarding
  • Webhooks

API reference

  • Messages
  • Templates
  • Usage
  • Status & observability

Reliability

  • WhatsApp limits
  • Errors & debugging

Resources

  • Changelog
  • OpenAPI 3.1
  • Postman collection
Developer support
IntelliPortalDOCS
Developer documentation/API v1

© 2026 Intelli Holdings Inc.

PrivacyTermsEmail support

Need a hand?

Share a request ID when you contact us so we can trace the call quickly.

Open developer support
  1. Docs
  2. Clients

API reference

clients

Clients

A client is an end-business you message on behalf of. Your client_ref is the stable key that connects your data model, a channel account, outbound sends, and inbound events.

Choose a durable client_ref

Use a stable identifier from your own database, not a business name or phone number. A single business with both WhatsApp and Instagram should use distinct references for each channel connection. If you do need to change one later, rename it rather than onboarding the number again.

client_ref is an idempotency boundary

Creating another session with a reference that is already connected does not create a second client: it is a reconnect of that client (the same number, a fresh connection). Look up the existing client instead of generating random references on every retry.

Create a hosted connection session

The key needs clients:write. Create the session from your backend, then pass only the returned URL to your frontend.

Create session
POST /v1/embedded-signup/sessions
Authorization: Bearer ik_live_...
Content-Type: application/json

{
  "client_ref": "customer_42"
}
PropertyTypeDescription
session_idstringOpaque identifier for support and hosted-flow correlation. Do not parse it.
urlURLIntelli-hosted onboarding page to open for the client business.
expires_inintegerSeconds until the single-use session expires; currently 600.
JSON · 201
{
  "session_id": "a7jBeKh4uW97sypQ...",
  "url": "https://www.intelliconcierge.dev/embed/whatsapp?session=...",
  "expires_in": 600
}

Channel-specific behavior

WhatsApp

Connects a WhatsApp Business Account and phone number.

Supports the full free-form message set and approved templates.

Instagram

Connects an Instagram professional account through OAuth.

Sends text replies to the Instagram-scoped user ID received in a webhook.

GET/clients

List connected clients

Use a key with clients:read. Paginate with limit and offset; the default page size is 20.

cURL
curl "https://api.intelliconcierge.dev/v1/clients?limit=20&offset=0" \
  -H "Authorization: Bearer $INTELLI_API_KEY"
GET/clients/{client_ref}

Confirm one client

Call this endpoint after the hosted window reports completion. Your backend should trust this server response rather than the browser message when deciding whether to enable sends.

cURL
curl https://api.intelliconcierge.dev/v1/clients/customer_42 \
  -H "Authorization: Bearer $INTELLI_API_KEY"
PATCH/clients/{client_ref}

Update a client or its webhook environment

Change a client's reference, display name or webhook environment after onboarding with a key that has clients:write. Pass only what changes; the response is the updated client. Nothing else moves — sends, templates, usage and delivery logs stay attached to the client. The same edit is available from the client's page in the dashboard.

To isolate development traffic, set environment to test for test clients and live for production clients. Configure the destination first under Webhooks. Hosted signup sessions and direct signup also accept this field for new clients. If omitted, an authenticated ik_test_ key defaults to test; a live key defaults to live. An explicit environment takes precedence. Reconnecting never changes an existing client's environment. Portal connections explicitly use the selected Test/Live mode.

cURL
curl -X PATCH https://api.intelliconcierge.dev/v1/clients/customer_42 \
  -H "Authorization: Bearer $INTELLI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "client_ref": "acme-ltd",
    "business_name": "Acme Ltd"
  }'
PropertyTypeDescription
environment"test" | "live"Routes new real webhook events to sandbox (test) or production (live), with that environment's URL, secret and subscriptions. Does not change API-key permissions or sending mode. Prior deliveries and retries retain their original environment.
client_refstringNew reference. Unique per partner, no "/" (it is a URL path segment). Takes effect immediately — the old reference stops resolving and later webhooks carry the new one.
business_namestringDisplay name shown in the portal and returned on the client. Meta fills it at onboarding (the phone number or Instagram handle) until you set it.

A rename is immediate

The old client_ref stops resolving the moment the request succeeds, and every later webhook carries the new one. Update the mapping in your own system first, then rename. A reference already used by another of your clients returns 409 client_ref_exists; duplicates are never created.
DELETE/clients/{client_ref}

Disconnect a client

Remove a client with a key that has clients:write. It is immediate and final: sends and webhooks for the number stop, the client's delivery logs are removed, and Intelli stops receiving events for its WhatsApp Business Account. Approved templates stay in that account — they belong to the client. The number can be connected again later, under this reference or a new one. The same action is on the client's page in the dashboard, behind a confirmation.

cURL
curl -X DELETE https://api.intelliconcierge.dev/v1/clients/customer_42 \
  -H "Authorization: Bearer $INTELLI_API_KEY"
Response · 200
{
  "disconnected": true,
  "client_ref": "customer_42",
  "channel": "whatsapp",
  "phone_number": "233200000001",
  "connection_removed": true,
  "meta_unsubscribed": true
}

Lost the connection, not the client?

An expired, revoked or under-permissioned connection does not need a disconnect — run a signup session with the same client_ref and the client is reconnected in place, keeping its logs and history.

Implement the browser handoff

The hosted onboarding guide covers popup handling, allowed origins, completion messages, expiry, and the advanced AI-assistant integration prompt.

Hosted onboarding guide
PreviousAuthentication
NextHosted onboarding