MCP is live.Set upAsk the community
OmniDimension
WhatsApp

List campaign contacts

Per-contact status for a campaign, oldest first. A contact that read the message and then replied STOP counts as read and opted out.

Set up WhatsApp first. Connect a WhatsApp number in the dashboard or with Connect numbers. Included on every paid plan. See plans.

GET/whatsapp/campaigns//contacts
Path parameters
campaign_idrequired
Query parameters
statusstring · enum

Show only contacts in this state.

limitinteger

Rows per page.

cursorstring

The next_cursor from the previous page.

curl -X GET 'https://backend.omnidim.io/api/v1/whatsapp/campaigns/{campaign_id}/contacts?limit=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example response
synthetic
{
  "data": [
    {
      "id": 0,
      "phone_number": "+15551234567",
      "name": "string",
      "data_source": "csv",
      "status": "pending",
      "skipped_reason": "human_handling",
      "opted_out": false,
      "wa_message_id": "string",
      "sent_at": "string",
      "delivered_at": "string",
      "read_at": "string",
      "failure": {
        "code": "string",
        "reason": "string"
      }
    }
  ],
  "has_more": false,
  "next_cursor": "string"
}

Authorization

BearerAuth
headerAuthorizationBearer <token>

Bearer token authentication. Obtain your API key from the OmniDimension dashboard.

Path Parameters

campaign_id*integer

Id of a WhatsApp campaign, from listWhatsappCampaigns.

Query Parameters

status?string

Show only contacts in this state.

Value in"pending""sent""delivered""read""replied""failed""skipped""opted_out"
limit?integer

Rows per page.

Range1 <= value <= 100
Default20
cursor?string

The next_cursor from the previous page.

Response body

application/json

Response Body

One page of contacts.

application/json
data?
has_more?boolean
next_cursor?string