Admin
WhaBuzz staff only (platform admin console session).
WhaBuzz staff only (platform admin console session).
Base URL https://api.whabuzz.com. Every request needs Authorization: Bearer <key> unless the operation says otherwise; see Authentication. Errors follow the two-source contract.
Operations on this page:
GET /v1/admin/tenants: All tenants (approval queue with status=pending_approval)POST /v1/admin/tenants/{tenant_id}/approve: Approve a tenantPOST /v1/admin/tenants/{tenant_id}/reject: Reject a tenantPOST /v1/admin/tenants/{tenant_id}/suspend: Suspend a tenantPOST /v1/admin/tenants/{tenant_id}/reinstate: Reinstate a suspended tenantGET /v1/admin/numbers: Every number across tenantsGET /v1/admin/health: Pipeline healthGET /v1/admin/audit: Audit logGET /v1/admin/billing: Billing across tenantsGET /v1/admin/mail/last: Last email sent to an address (EMAIL_MODE=log only)GET /v1/admin/apps: Platform appsPOST /v1/admin/apps: Create a platform appPOST /v1/admin/apps/{app_id}/keys: Create an app (platform) API key
#All tenants (approval queue with status=pending_approval)
GET/v1/admin/tenants
Auth: Console session token. Operation id: adminListTenants.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | pending_approval or active or rejected or suspended | no | |
limit | query | integer | no | |
cursor | query | string | no | next_cursor from the previous page. |
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/tenants" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Tenants
{
"data": [
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"name": "Acme Fitness",
"status": "pending_approval",
"created_via": "signup",
"contact_email": "owner@acmefitness.in",
"website": "https://acmefitness.in",
"tax_id": "36ABCDE1234F1Z5",
"tax_id_type": "gstin",
"email_domain": "acmefitness.in",
"flags": [],
"created_at": "2026-10-16T08:00:00Z"
}
]
}jsonCommon errors. Shape and meanings are on the Errors page.
| HTTP | WhaBuzz code | Meaning |
|---|---|---|
| 403 | forbidden | Not allowed for this caller |
#Approve a tenant
POST/v1/admin/tenants/{tenant_id}/approve
Auth: Console session token. Operation id: adminApproveTenant.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | path | string (uuid) | yes |
cURL:
curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/approve" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Approved
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"status": "active",
"approved_at": "2026-10-16T09:00:00Z",
"billing_status": "trialing",
"trial_ends_at": "2026-10-30T09:00:00Z"
}json#Reject a tenant
POST/v1/admin/tenants/{tenant_id}/reject
Auth: Console session token. Operation id: adminRejectTenant.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | path | string (uuid) | yes |
Request body (application/json, required)
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | yes |
Request example:
{
"reason": "Website does not match the business name."
}jsoncURL:
curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/reject" \
-H "Authorization: Bearer $CONSOLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "Website does not match the business name."
}'bashResponses
200 Rejected
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"status": "rejected",
"rejected_reason": "Website does not match the business name."
}json#Suspend a tenant
POST/v1/admin/tenants/{tenant_id}/suspend
Auth: Console session token. Operation id: adminSuspendTenant.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | path | string (uuid) | yes |
Request body (application/json, required)
| Field | Type | Required | Description |
|---|---|---|---|
reason | abuse or admin | yes | |
note | string | no |
Request example:
{
"reason": "abuse",
"note": "Spam reports from Meta quality alerts"
}jsoncURL:
curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/suspend" \
-H "Authorization: Bearer $CONSOLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "abuse",
"note": "Spam reports from Meta quality alerts"
}'bashResponses
200 Suspended
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"status": "suspended",
"suspended_reason": "abuse"
}json#Reinstate a suspended tenant
POST/v1/admin/tenants/{tenant_id}/reinstate
Auth: Console session token. Operation id: adminReinstateTenant.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | path | string (uuid) | yes |
cURL:
curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/reinstate" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Active again
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"status": "active"
}json#Every number across tenants
GET/v1/admin/numbers
Auth: Console session token. Operation id: adminListNumbers.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
connection_state | query | pending or connected or disconnected | no |
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/numbers" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Numbers
{
"data": [
{
"tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
"tenant_name": "WhaBuzz Demo",
"phone_number_id": "1013622581841046",
"display_phone_number": "+1 469-231-1132",
"connection_state": "connected",
"quality_rating": "GREEN",
"messaging_limit_tier": "TIER_250",
"last_event_at": "2026-10-16T05:12:03Z"
}
]
}json#Pipeline health
GET/v1/admin/health
Auth: Console session token. Operation id: adminHealth.
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/health" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Health
{
"retries_due": 4,
"oldest_due_retry_at": "2026-10-16T09:58:00Z",
"dead_24h": 0,
"endpoints_circuit_open": 1,
"tokens": {
"expiring": 0,
"invalid": 0
},
"partitions_through": {
"events": "2027-04",
"event_payloads": "2027-04",
"webhook_deliveries": "2027-04"
},
"kv_reconcile": {
"last_run_at": "2026-10-16T10:00:00Z",
"keys_rewritten": 0
}
}json#Audit log
GET/v1/admin/audit
Auth: Console session token. Operation id: adminAudit.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant_id | query | string (uuid) | no | |
action | query | string | no | |
limit | query | integer | no | |
cursor | query | string | no | next_cursor from the previous page. |
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/audit" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Entries
{
"data": [
{
"id": 4012,
"tenant_id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"actor_user_id": "6b5a4938-2716-4a5b-8c7d-9e0f1a2b3c4d",
"action": "tenant.approve",
"target_type": "tenant",
"target_id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"details": {},
"created_at": "2026-10-16T09:00:00Z"
}
]
}json#Billing across tenants
GET/v1/admin/billing
Auth: Console session token. Operation id: adminBilling.
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/billing" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Billing
{
"billing_enabled": false,
"tenants": [
{
"tenant_id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"name": "Acme Fitness",
"billing_status": "past_due",
"past_due_since": "2026-11-03T04:00:00Z",
"last_snapshot": {
"period": "2026-11-01",
"active_numbers": 2,
"total_paise": 88500
},
"open_invoices": 1
}
]
}json#Last email sent to an address (EMAIL_MODE=log only)
GET/v1/admin/mail/last
Auth: Console session token. Operation id: adminLastMail.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
email | query | string (email) | yes |
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/mail/last" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 The captured email
{
"to": "owner@acmefitness.in",
"subject": "Confirm your WhaBuzz email",
"links": [
"https://app.whabuzz.com/verify-email?token=Qm9…"
],
"sent_at": "2026-10-16T08:00:05Z"
}jsonCommon errors. Shape and meanings are on the Errors page.
| HTTP | WhaBuzz code | Meaning |
|---|---|---|
| 404 | not_found | Not found |
#Platform apps
GET/v1/admin/apps
Auth: Console session token. Operation id: adminListApps.
cURL:
curl -X GET "https://api.whabuzz.com/v1/admin/apps" \
-H "Authorization: Bearer $CONSOLE_TOKEN"bashResponses
200 Apps
{
"data": [
{
"id": "3e53b65e-0000-4000-8000-000000000001",
"name": "fisique-crm",
"tenants": 1
}
]
}json#Create a platform app
POST/v1/admin/apps
Auth: Console session token. Operation id: adminCreateApp.
Request body (application/json, required)
Request example:
{
"name": "pariq"
}jsoncURL:
curl -X POST "https://api.whabuzz.com/v1/admin/apps" \
-H "Authorization: Bearer $CONSOLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "pariq"
}'bashResponses
201 Created
{
"id": "6f1e2d3c-4b5a-4697-8a8b-9c0d1e2f3a4b",
"name": "pariq"
}json#Create an app (platform) API key
POST/v1/admin/apps/{app_id}/keys
Auth: Console session token. Operation id: adminCreateAppKey.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
app_id | path | string (uuid) | yes |
Request body (application/json, required)
Request example:
{
"name": "Pariq production",
"environment": "live"
}jsoncURL:
curl -X POST "https://api.whabuzz.com/v1/admin/apps/$APP_ID/keys" \
-H "Authorization: Bearer $CONSOLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Pariq production",
"environment": "live"
}'bashResponses
201 Key, shown once
{
"id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
"app_id": "6f1e2d3c-4b5a-4697-8a8b-9c0d1e2f3a4b",
"prefix": "wb_live_Pa7r",
"key": "wb_live_Pa7rQ2xN8mK4vB1cZ6lS9dF3gH5jT0wY7uE2iO4"
}jsonThis page as Markdown: /api/admin.md. All docs in one file: /llms-full.txt.