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
  • 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.

PrivacyContact

Need a hand?

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

Open developer support
  1. Docs
  2. Quickstart

Start here

10–15 min

Quickstart

Create the credentials, connect a client channel, make a safe test request, and prepare the same integration for live delivery.

Base URL

All public partner endpoints use the dedicated API host and a pinned version prefix.

Base URL
https://api.intelliconcierge.dev/v1
1

Create your partner account

Sign up and open the dashboard. IntelliPortal provisions the partner account automatically; you do not need to register an API application separately.

Create an account
2

Create test and live keys

In API Keys, create keys with clients:read, clients:write, and messages:send. Copy each secret when it appears; only its prefix is stored for later identification.

Use each mode for one job

Use ik_test_ for payload validation and ik_live_ for hosted channel onboarding and real delivery. Test-key traffic never delivers and never counts toward usage.
3

Create a hosted onboarding session

Pick a durable identifier from your own database. IntelliPortal treats client_ref as your integration's foreign key and returns it on client records and webhook events.

Create a single-use session
curl -X POST https://api.intelliconcierge.dev/v1/embedded-signup/sessions \
  -H "Authorization: Bearer $INTELLI_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "client_ref": "customer_42" }'

The response contains session_id, url, and expires_in: 600. Open the URL in a popup or a new tab.

4

Confirm the connected client

The hosted page posts a completion message to its opener. Treat that browser event as a UX signal, then verify the client server-to-server before enabling sends.

cURL
curl https://api.intelliconcierge.dev/v1/clients/customer_42 \
  -H "Authorization: Bearer $INTELLI_LIVE_KEY"

The first connection starts the trial

Connecting the first client starts the 7-day free trial. A 3-day grace period follows. After grace, live sends return 402 trial_expired, while test and dry-run requests remain available.
5

Send a dry-run message

Authenticate with the test key. IntelliPortal runs the same request validation and routing checks but does not deliver to the recipient.

Your first send
curl -X POST https://api.intelliconcierge.dev/v1/messages/send \
  -H "Authorization: Bearer $INTELLI_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "client_ref": "customer_42",
    "to": "+254700000000",
    "type": "text",
    "text": { "body": "Your IntelliPortal integration works." }
  }'
JSON · 200
{
  "success": true,
  "message_id": "wamid.TEST_...",
  "dry_run": true
}
6

Configure and test webhooks

Save an HTTPS endpoint in the dashboard's Webhooks section, copy the signing secret, then use the simulator. A production handler should verify the raw-body signature and return a 2xx response within five seconds.

Implement a webhook receiver
7

Go live

Swap the test key for the live key in your server environment. Do not change the endpoint or request shape. Before rollout, confirm each item below.

  • The live key is stored only in your server-side secret manager.
  • Every client_ref maps to exactly one customer and connected channel.
  • Your webhook handler verifies the raw-body HMAC before parsing events.
  • Retries on 429 respect Retry-After and do not spin in a tight loop.
  • Your team can find a failed call by X-Request-Id in Request Logs.
PreviousOverview
NextTest in the sandbox