Members and sharing API
Members, teams, resource sharing and the audit log. 13 ops: list_members, list_invites, list_teams, create_team, update_team, delete_team, set_team_member, remove_team_member, list_resource_access, set_resource_visibility, share_resource, unshare_resource, list_audit_log.
Members, teams, resource sharing and the audit log.
list_members
readList members · POST /api/v1/list_members · scope members:read or GET …?input=
Everyone in this organization with their email, role (owner, admin, member, viewer) and teams. Read-only: inviting, removing people and changing roles are done by a person in the dashboard (Settings → Members).
curl -X POST https://getwabi.dev/api/v1/list_members \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi list_members{
"type": "object",
"properties": {}
}List invites · POST /api/v1/list_invites · scope members:read or GET …?input=
Pending invitations to this organization (email, role, teams, who invited, when it expires). Owners and admins.
curl -X POST https://getwabi.dev/api/v1/list_invites \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi list_invites{
"type": "object",
"properties": {
"include_closed": {
"default": false,
"description": "Also list accepted, revoked and expired invites.",
"type": "boolean"
}
}
}list_teams
readList teams · POST /api/v1/list_teams · scope members:read or GET …?input=
Teams in this organization with their members (maintainer or member) and the resources (WhatsApp accounts, AI agents) shared with each team.
curl -X POST https://getwabi.dev/api/v1/list_teams \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi list_teams{
"type": "object",
"properties": {}
}create_team
writeCreate team · POST /api/v1/create_team · scope members:write
Create a team (a group of members to share WhatsApp accounts and agents with, and to route conversations to). You become its maintainer. Members and above.
curl -X POST https://getwabi.dev/api/v1/create_team \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"name":"Support"}'npx @meterapp/wabi create_team --json '{"name":"Support"}'{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"slug": {
"description": "URL-safe id; derived from the name when omitted.",
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,47}$"
},
"description": {
"default": "",
"type": "string",
"maxLength": 1000
}
},
"required": [
"name"
]
}update_team
writeUpdate team · POST /api/v1/update_team · scope members:write
Rename a team or change its description. Its maintainers, owners and admins.
curl -X POST https://getwabi.dev/api/v1/update_team \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"team":"support"}'npx @meterapp/wabi update_team --json '{"team":"support"}'{
"type": "object",
"properties": {
"team": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Team slug or id."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"team"
]
}delete_team
writeDelete team · POST /api/v1/delete_team · scope members:write
Delete a team. Its members stay in the organization but lose what was shared with the team.
curl -X POST https://getwabi.dev/api/v1/delete_team \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"team":"support"}'npx @meterapp/wabi delete_team --json '{"team":"support"}'{
"type": "object",
"properties": {
"team": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Team slug or id."
}
},
"required": [
"team"
]
}set_team_member
writeAdd to team · POST /api/v1/set_team_member · scope members:write
Add an organization member to a team, or change their team role (maintainer manages the team; member is in it). Its maintainers, owners and admins.
curl -X POST https://getwabi.dev/api/v1/set_team_member \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"team":"support","user":"user"}'npx @meterapp/wabi set_team_member --json '{"team":"support","user":"user"}'{
"type": "object",
"properties": {
"team": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Team slug or id."
},
"user": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "An organization member's user id or email address."
},
"role": {
"default": "member",
"type": "string",
"enum": [
"maintainer",
"member"
]
}
},
"required": [
"team",
"user"
]
}remove_team_member
writeRemove from team · POST /api/v1/remove_team_member · scope members:write
Take someone out of a team (they stay in the organization). Its maintainers, owners and admins; anyone can leave a team themselves.
curl -X POST https://getwabi.dev/api/v1/remove_team_member \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"team":"support","user":"user"}'npx @meterapp/wabi remove_team_member --json '{"team":"support","user":"user"}'{
"type": "object",
"properties": {
"team": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Team slug or id."
},
"user": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "An organization member's user id or email address."
}
},
"required": [
"team",
"user"
]
}List resource access · POST /api/v1/list_resource_access · scope members:read or GET …?input=
Who can see a shareable resource (a WhatsApp account or an AI agent): its visibility (org or restricted), its creator, and every grant to a team or person with its access (read, write, admin). Owners and admins always have admin.
curl -X POST https://getwabi.dev/api/v1/list_resource_access \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"resource_type":"whatsapp_account","resource_id":"6f1c2e0a-4b7d-4c2e-9a51-0d3b8e7f9a10"}'npx @meterapp/wabi list_resource_access --json '{"resource_type":"whatsapp_account","resource_id":"6f1c2e0a-4b7d-4c2e-9a51-0d3b8e7f9a10"}'{
"type": "object",
"properties": {
"resource_type": {
"type": "string",
"enum": [
"whatsapp_account",
"agent"
],
"description": "whatsapp_account or agent."
},
"resource_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"resource_type",
"resource_id"
]
}Set resource visibility · POST /api/v1/set_resource_visibility · scope members:write
org: every organization member sees the resource (viewers read, members write). restricted: only its creator, owners and admins, and the teams and people it is shared with (share_resource). Works on WhatsApp accounts and AI agents. Needs admin access to the resource.
curl -X POST https://getwabi.dev/api/v1/set_resource_visibility \ -H "Authorization: Bearer wabi_…" \ -H "Content-Type: application/json" \ -d '{"resource_type":"whatsapp_account","resource_id":"6f1c2e0a-4b7d-4c2e-9a51-0d3b8e7f9a10","visibility":"org"}'npx @meterapp/wabi set_resource_visibility --json '{"resource_type":"whatsapp_account","resource_id":"6f1c2e0a-4b7d-4c2e-9a51-0d3b8e7f9a10","visibility":"org"}'{
"type": "object",
"properties": {
"resource_type": {
"type": "string",
"enum": [
"whatsapp_account",
"agent"
],
"description": "whatsapp_account or agent."
},
"resource_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"visibility": {
"type": "string",
"enum": [
"org",
"restricted"
]
}
},
"required": [
"resource_type",
"resource_id",
"visibility"
]
}List audit log · POST /api/v1/list_audit_log · scope members:read or GET …?input=
Membership, role, team, invite, API key, billing, settings and sharing changes in this organization, newest first: who (a person, an API key, an OAuth client or the system), what, to what, and when. Owners and admins. The activity log (list_activity) has content changes.
curl -X POST https://getwabi.dev/api/v1/list_audit_log \ -H "Authorization: Bearer wabi_…"npx @meterapp/wabi list_audit_log{
"type": "object",
"properties": {
"action": {
"description": "Only this action or prefix, e.g. member. or invite.accepted.",
"type": "string",
"maxLength": 100
},
"limit": {
"default": 50,
"description": "Page size, at most 200.",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"offset": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}