Change a member's role or agents
PATCH/v1/organization/members/:userId
x-scope: "team:write"
Gives a teammate a new role, new agents, or both, as the dashboard's Team page does; the
change takes effect within a minute. A field left out keeps its value. Choosing agents
(all_agents: false) needs agent_ids in the same request, and they replace the
teammate's agents. A key gives admin, member or rep only: owners are managed in the
dashboard (403 owner_only), and a key never changes the access of the person who created
it (403 self_edit). See the team-management rules under team:write.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
- 500
- 503
The teammate, as they are now.
Response Headers
Correlation id for this request — paste into support tickets.
Authentication failed. Single code (invalid_api_key) covers every
sub-case: missing header, wrong scheme, malformed, unknown, revoked or
expired key. The message field disambiguates for humans debugging.
One exception: when the key could not be checked because of a server-side
fault, the status is still 401 but type is internal_error and code
is internal_server_error; retry with backoff.
Response Headers
Correlation id for this request — paste into support tickets.
insufficient_scope: the key lacks team:write, which full access (*) doesn't include.
insufficient_role: the key is limited to some agents, or the person who created it can't
do this in the dashboard any more (only the owner, or an admin with every agent, manages the
team, and only the owner removes someone). owner_only: the teammate is an owner, managed
in the dashboard. self_edit / self_remove: the teammate is the person who created the
key.
Response Headers
Correlation id for this request — paste into support tickets.
not_found: the person isn't on the team, or the invitation isn't one of your
organization's open invitations.
Response Headers
Correlation id for this request — paste into support tickets.
invalid_request_body: the body breaks its schema, such as an owner role or
all_agents: false without agent_ids (param names the field). unknown_agent: one of
agent_ids isn't an agent of your organization. too_many_agents: more than 100 agents.
invitation_not_pending: the invitation is no longer open (accepted, or expired and its link then used).
Response Headers
Correlation id for this request — paste into support tickets.
Per-key rate limit hit. Default is 60/min/key; an endpoint with an
x-rate-limit-per-minute of its own counts in a budget of its own
(today the WhatsApp template endpoints, sendBroadcast, retryBroadcast, inviteMember
and resendInvitation, which share one that allows 10/min/key, and
sendConversationMessage, which allows 20/min/key), and its 429
reports that limit in X-RateLimit-Limit. Retry-After tells you when to retry;
X-RateLimit-Reset is the Unix timestamp of the next window.
Per-success-response
X-RateLimit-*headers are a known gap; on 2xx responses these headers are NOT currently emitted. Customers should rely on 429 +Retry-Afterfor backoff signals.
Response Headers
Correlation id for this request — paste into support tickets.
Seconds to wait before retrying.
The per-minute request limit of the endpoint called. Every key has the same limits today.
Remaining requests in the current window. 0 on rejection.
Unix timestamp at which the current window resets.
Unexpected server-side failure. Retry with exponential backoff. If
the failure persists, send us the correlation_id.
Response Headers
Correlation id for this request — paste into support tickets.
Mojeeb couldn't check access because of a temporary fault: the key's,
or on assignLead and assignConversation the teammate's. Nothing was
changed. Retry with backoff.
Response Headers
Correlation id for this request — paste into support tickets.