Organization API
Settings, onboarding and the activity log. 7 ops: get_organization, update_organization, list_activity, get_onboarding, get_referral_stats, get_profile, update_profile.
Settings, onboarding and the activity log.
get_organization
readGet organization · POST /api/v1/get_organization · scope organization:read or GET …?input=
The organization this credential acts in: id, slug, name, default timezone and language (used by the inbox, reports and AI agents), and the caller's role. Call first to orient yourself; get_account adds the plan and usage.
curl -X POST https://getwabi.dev/api/v1/get_organization \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi get_organization{
"type": "object",
"properties": {}
}Update organization · POST /api/v1/update_organization · scope organization:write
Change the organization's name, default timezone (IANA, e.g. Europe/Madrid: business hours, reports, quiet hours) or default language (BCP 47: AI agent replies and template fallbacks when a contact has none). Owners and admins.
curl -X POST https://getwabi.dev/api/v1/update_organization \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi update_organization{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"timezone": {
"type": "string",
"maxLength": 64
},
"default_locale": {
"type": "string",
"minLength": 2,
"maxLength": 35
}
}
}list_activity
readList activity · POST /api/v1/list_activity · scope organization:read or GET …?input=
Every change made through the platform, newest first: who (a person, an API key, an AI agent, a worker), from which surface (dashboard, api, mcp, cli, worker, ai) and what. The audit log (list_audit_log) has the sensitive changes with their details.
curl -X POST https://getwabi.dev/api/v1/list_activity \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi list_activity{
"type": "object",
"properties": {
"limit": {
"default": 50,
"description": "Page size, at most 200.",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"offset": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}get_onboarding
readGet onboarding checklist · POST /api/v1/get_onboarding · scope organization:read or GET …?input=
The organization's setup checklist, in order: send a message from the sandbox number, receive a reply, connect a live WhatsApp Business Account, get a template approved, deploy an AI agent, connect a developer surface (API key, MCP or CLI), invite a teammate. Each step has done, a one-line how-to for an agent (which op or command does it) and the dashboard path. Use it to tell a person what to do next in Wabi.
curl -X POST https://getwabi.dev/api/v1/get_onboarding \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi get_onboarding{
"type": "object",
"properties": {}
}Referral signups (staff) · POST /api/v1/get_referral_stats · scope organization:read or GET …?input=
Wabi team only. Signups by first-touch referral: how many new organizations arrived through a `?ref=<name>` link (a partner, a docs page, an agent surface) or utm_* campaign, per referral_ref, utm_source and utm_medium, in total and within the last `days`. Reads every organization (the only cross-organization read besides the feedback board), returns counts only, never organization names.
curl -X POST https://getwabi.dev/api/v1/get_referral_stats \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi get_referral_stats{
"type": "object",
"properties": {
"days": {
"default": 30,
"description": "Window for signups_since. Default 30.",
"type": "integer",
"minimum": 1,
"maximum": 3650
}
}
}get_profile
readGet my profile · POST /api/v1/get_profile · scope organization:read or GET …?input=
Your own settings, the same in every organization: `locale`, the language the dashboard and every email to you are written in (one of en), or null when you never chose one (the dashboard then follows the browser, emails are English). With an API key, the key creator's profile.
curl -X POST https://getwabi.dev/api/v1/get_profile \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi get_profile{
"type": "object",
"properties": {}
}update_profile
writeUpdate my profile · POST /api/v1/update_profile · scope organization:write
Changes your own settings: `locale` (en) is the language of the dashboard and of every email Wabi sends you; null forgets it. The dashboard's language picker calls this. Returns the profile.
curl -X POST https://getwabi.dev/api/v1/update_profile \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"locale":"en"}'npx @meterapp/wabi update_profile --json '{"locale":"en"}'{
"type": "object",
"properties": {
"locale": {
"anyOf": [
{
"type": "string",
"enum": [
"en"
]
},
{
"type": "null"
}
],
"description": "Your language: en, or null for none."
}
},
"required": [
"locale"
]
}