OS-ConnectIQ API Reference
Integrate WhatsApp messaging campaigns, secure customer authentication workflows, and contact automation directly into your CRM, tools, or backend applications using our secure developer API.
Transactional Alerts
Automate and send real-time order confirmations, booking updates, shipment tracking, or invoice receipts directly to WhatsApp.
Secure OTP & 2FA
Deliver secure verification PINs, one-time passwords (OTP), and two-factor authentication codes during user sign-ups or security logins.
CRM & Sync Workflows
Automatically sync new leads, create contacts, and import conversation histories into Salesforce, HubSpot, Shopify, or custom backends.
Broadcast Triggering
Programmatically launch pre-approved Meta message templates for personalized marketing, re-engagement, or operational alerts.
rocket_launchGetting Started & Prerequisites
1How to Get an API Key
- Log in to your OS-ConnectIQ dashboard panel.
- Navigate to Settings and click the API Keys tab.
- Click Create API Key, enter a descriptive label, and select requested permission scopes.
- Click Generate Key.
- Copy and save the key immediately. For compliance and safety reasons, the full secret string is displayed only once and cannot be retrieved after closing the modal.
2Prerequisites to Call the API
- Official WhatsApp Sender: Set up and verify an active sender phone number inside the dashboard wizard.
- Active Subscription: Ensure your account has an active messaging plan or a started Free Trial.
- E.164 Recipient Numbers: The destination phone numbers must include the country code prefix (e.g.
+14155550123). - Content Type Headers: Specify
Content-Type: application/jsonfor all POST requests.
1. Authentication & Profile
Verify your credentials and query the authenticated workspace parameters. This endpoint validates the active key and returns context on the owner account.
HTTP Request Headers
| Header | Type | Description |
|---|---|---|
| Authorization | string | Bearer token formatted as Bearer cq_live_... |
curl -X GET "https://connectiq.ostechlabs.com/api/v1/me" \ -H "Authorization: Bearer cq_live_83f2a1b9c9f7a..."
{
"data": {
"id": "usr_7f8a9b6c",
"name": "Alex Admin",
"email": "alex@ostechlabs.com",
"role": "admin",
"created_at": "2026-07-10T12:00:00.000Z"
}
}2. Messages API
Sends a real-time WhatsApp notification, prompt, or media document directly to the client's destination phone. If the contact or active chat conversation does not exist, the API automatically provisions it.
HTTP Request Headers
| Header | Type | Requirement | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer token formatted as Bearer cq_live_... |
| Content-Type | string | Required | Must be set to application/json. |
JSON Body Parameters
| Field | Type | Requirement | Description |
|---|---|---|---|
| to | string | Required | Destination phone number in E.164 standard format (e.g. +14155550123). |
| type | string | Optional | Payload type: text, template, image, video, document, or audio. Defaults to text. |
| text | string | Optional | Plain text message body, or caption text if sending media files. |
| media_url | string | Optional | Required if type is media. Accessible public asset URL. |
| filename | string | Optional | Filename metadata visible to users for document type attachments. |
| template | object | Optional | Required when type is template. Object parameters:
|
| reply_to_message_id | string | Optional | UUID identifier of a previous message in the same thread to reply to. |
| name | string | Optional | Display name used when creating a new contact if phone does not exist yet. |
curl -X POST "https://connectiq.ostechlabs.com/api/v1/messages" \
-H "Authorization: Bearer cq_live_83f2a1b9c9f7a..." \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550123",
"type": "text",
"text": "Hello Jane, your order #882 is confirmed!"
}'{
"data": {
"message_id": "7c8e9b6a-d2d4-4e3f-a77b-22b9c7a6e3d2",
"whatsapp_message_id": "wamid.HBgLMTQxNTU1NTAxMjM...",
"conversation_id": "2d3e4f5a-c6b7-4e3a-9e2c-3d2f4e5a6b7c",
"contact_id": "9b6a7c8d-e3f4-4a5b-9c2d-3e4f5a6b7c8d",
"contact_created": false
}
}3. Contacts API
Query and list all synchronized contacts inside your workspace. You can search by contact names, filter by tags, and request paginated pages using cursors.
HTTP Request Headers
| Header | Type | Requirement | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer token formatted as Bearer cq_live_... |
URL Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| search | string | - | Text keyword matching contact name or phone columns. |
| limit | number | 20 | Max records returned per page (max limit: 100). |
| cursor | string | - | The keyset cursor string returned under meta.next_cursor. |
| tag | string | - | UUID identifier of a workspace tag to filter contacts by. |
curl -X GET "https://connectiq.ostechlabs.com/api/v1/contacts?search=Jane&limit=10" \ -H "Authorization: Bearer cq_live_83f2a1b9c9f7a..."
{
"data": [
{
"id": "9b6a7c8d-e3f4-4a5b-9c2d-3e4f5a6b7c8d",
"name": "Jane Doe",
"phone": "+14155550123",
"email": "jane@example.com",
"created_at": "2026-07-14T08:12:45.312Z",
"tags": ["vip", "customer"]
}
],
"meta": {
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNy0xNFQ..."
}
}