WhaBuzz docs
API reference

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:

#All tenants (approval queue with status=pending_approval)

GET/v1/admin/tenants

Auth: Console session token. Operation id: adminListTenants.

Parameters

NameInTypeRequiredDescription
statusquerypending_approval or active or rejected or suspendedno
limitqueryintegerno
cursorquerystringnonext_cursor from the previous page.

cURL:

curl -X GET "https://api.whabuzz.com/v1/admin/tenants" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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"
    }
  ]
}
json

Common errors. Shape and meanings are on the Errors page.

HTTPWhaBuzz codeMeaning
403forbiddenNot allowed for this caller

#Approve a tenant

POST/v1/admin/tenants/{tenant_id}/approve

Auth: Console session token. Operation id: adminApproveTenant.

Parameters

NameInTypeRequiredDescription
tenant_idpathstring (uuid)yes

cURL:

curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/approve" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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

NameInTypeRequiredDescription
tenant_idpathstring (uuid)yes

Request body (application/json, required)

FieldTypeRequiredDescription
reasonstringyes

Request example:

{
  "reason": "Website does not match the business name."
}
json

cURL:

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."
}'
bash

Responses

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

NameInTypeRequiredDescription
tenant_idpathstring (uuid)yes

Request body (application/json, required)

FieldTypeRequiredDescription
reasonabuse or adminyes
notestringno

Request example:

{
  "reason": "abuse",
  "note": "Spam reports from Meta quality alerts"
}
json

cURL:

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"
}'
bash

Responses

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

NameInTypeRequiredDescription
tenant_idpathstring (uuid)yes

cURL:

curl -X POST "https://api.whabuzz.com/v1/admin/tenants/$TENANT_ID/reinstate" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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

NameInTypeRequiredDescription
connection_statequerypending or connected or disconnectedno

cURL:

curl -X GET "https://api.whabuzz.com/v1/admin/numbers" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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"
bash

Responses

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

NameInTypeRequiredDescription
tenant_idquerystring (uuid)no
actionquerystringno
limitqueryintegerno
cursorquerystringnonext_cursor from the previous page.

cURL:

curl -X GET "https://api.whabuzz.com/v1/admin/audit" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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"
bash

Responses

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

NameInTypeRequiredDescription
emailquerystring (email)yes

cURL:

curl -X GET "https://api.whabuzz.com/v1/admin/mail/last" \
  -H "Authorization: Bearer $CONSOLE_TOKEN"
bash

Responses

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"
}
json

Common errors. Shape and meanings are on the Errors page.

HTTPWhaBuzz codeMeaning
404not_foundNot 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"
bash

Responses

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"
}
json

cURL:

curl -X POST "https://api.whabuzz.com/v1/admin/apps" \
  -H "Authorization: Bearer $CONSOLE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "pariq"
}'
bash

Responses

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

NameInTypeRequiredDescription
app_idpathstring (uuid)yes

Request body (application/json, required)

Request example:

{
  "name": "Pariq production",
  "environment": "live"
}
json

cURL:

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"
}'
bash

Responses

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"
}
json

This page as Markdown: /api/admin.md. All docs in one file: /llms-full.txt.