When to use Number Check
Run a bulk check on imported lists before a campaign. Invalid rows are returned separately from registered / not-registered results. Saving a contact can also store WhatsApp status automatically when a session is connected.
API reference
Verify whether phone numbers are registered on WhatsApp using a connected session. Numbers must include the country code.
Use a connected WhatsApp session to query WhatsApp registration status. Dashboard routes require JWT (`contacts:read`). External routes require an API key with the `numbers:check` permission. Bulk checks accept up to 500 numbers.
Run a bulk check on imported lists before a campaign. Invalid rows are returned separately from registered / not-registered results. Saving a contact can also store WhatsApp status automatically when a session is connected.
/api/v1/number-checkCheck if one phone number is registered on WhatsApp.
URL: https://api.actiwapi.com/api/v1/number-check
Auth: JWT Bearer
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {accessToken} | Yes |
| Content-Type | application/json | Yes* |
{
"sessionId": "uuid-of-connected-session",
"phone": "+919876543210"
}curl -X POST "https://api.actiwapi.com/api/v1/number-check" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {accessToken}"
-d '{ "sessionId": "uuid-of-connected-session", "phone": "+919876543210"}'{
"success": true,
"data": {
"sessionId": "uuid",
"result": {
"phone": "919876543210",
"displayPhone": "+919876543210",
"exists": true,
"jid": "919876543210@s.whatsapp.net",
"whatsappRegistered": true
}
}
}/api/v1/number-check/bulkCheck up to 500 numbers in one request. Use `phones` array or multiline `text`.
URL: https://api.actiwapi.com/api/v1/number-check/bulk
Auth: JWT Bearer
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {accessToken} | Yes |
| Content-Type | application/json | Yes* |
{
"sessionId": "uuid-of-connected-session",
"phones": ["+14155552671", "+919876543210"]
}curl -X POST "https://api.actiwapi.com/api/v1/number-check/bulk" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {accessToken}"
-d '{ "sessionId": "uuid-of-connected-session", "phones": ["+14155552671", "+919876543210"]}'{
"success": true,
"data": {
"sessionId": "uuid",
"summary": {
"total": 2,
"registered": 1,
"notRegistered": 1,
"invalid": 0,
"truncated": 0
},
"results": [
{
"phone": "14155552671",
"displayPhone": "+14155552671",
"exists": true,
"jid": "14155552671@s.whatsapp.net",
"whatsappRegistered": true
}
],
"invalid": []
}
}/api/external/number-checkCheck one number via API key. Requires `numbers:check` permission.
URL: https://api.actiwapi.com/api/external/number-check
Auth: API Key
| Header | Value | Required |
|---|---|---|
| X-API-Key | {apiKey} | Yes |
| Content-Type | application/json | Yes* |
{
"sessionId": "uuid-of-connected-session",
"phone": "+919876543210"
}curl -X POST "https://api.actiwapi.com/api/external/number-check" \
-H "Content-Type: application/json" \
-H "X-API-Key: {apiKey}"
-d '{ "sessionId": "uuid-of-connected-session", "phone": "+919876543210"}'{
"success": true,
"data": {
"sessionId": "uuid",
"result": {
"phone": "919876543210",
"displayPhone": "+919876543210",
"exists": true,
"whatsappRegistered": true
}
}
}/api/external/number-check/bulkBulk number check via API key. Requires `numbers:check` permission.
URL: https://api.actiwapi.com/api/external/number-check/bulk
Auth: API Key
| Header | Value | Required |
|---|---|---|
| X-API-Key | {apiKey} | Yes |
| Content-Type | application/json | Yes* |
{
"sessionId": "uuid-of-connected-session",
"text": "+14155552671\n+919876543210"
}curl -X POST "https://api.actiwapi.com/api/external/number-check/bulk" \
-H "Content-Type: application/json" \
-H "X-API-Key: {apiKey}"
-d '{ "sessionId": "uuid-of-connected-session", "text": "+14155552671\n+919876543210"}'{
"success": true,
"data": {
"sessionId": "uuid",
"summary": { "total": 2, "registered": 1, "notRegistered": 1, "invalid": 0 },
"results": [],
"invalid": []
}
}Failed requests return a JSON envelope with success: false and a human-readable message.
{
"success": false,
"message": "Validation failed",
"errors": {
"phone": "Valid phone number is required"
}
}| HTTP | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Request body or query failed validation. |
| 401 | UNAUTHORIZED | Missing or invalid JWT / API key. |
| 403 | FORBIDDEN | Authenticated but lacking permission or entitlement. |
| 403 | SUBSCRIPTION_INACTIVE | Action not allowed on the current plan (including Free after trial). Upgrade or wait for entitlements. |
| 403 | LIMIT_EXCEEDED | Plan limit reached (sessions, messages, API requests, etc.). |
| 404 | NOT_FOUND | Resource does not exist or is not in your account. |
| 409 | CONFLICT | Duplicate resource or invalid state transition. |
| 429 | RATE_LIMITED | Too many requests; retry after backoff. |
| 500 | INTERNAL_ERROR | Unexpected server error. |
| 502 | WHATSAPP_UNAVAILABLE | WhatsApp session disconnected or provider error. |