Upload the app's agent roster
PUT/app/agents
The partner's agents for this install (telephony contract §9.4): up to 1,000 per call, upserted by
external_id (an agent the list leaves out keeps its row), each matched to an active workspace
member by email. A match an admin made by hand is never overwritten, and a blank email keeps the
stored one (and the match made on it).
The answer's user is the matched member while they are still active; a match whose member
left — by email or by hand — reads how: none here, so manual with user: null is only ever an
admin's "No KudosCRM user" (Manage reads the stored how). Calls are attributed by the same
rule.
The install's own OAuth token only: a personal access token or a legacy app credential is
403 resource_not_grantable (/app/* is open to OAuth tokens alone), a person's session
403 install_token_required; the token needs users:read (403 insufficient_scope,
meta.required_scope: users:read); the app must be on the telephony contract
(403 telephony_contract_required). A paused install is 503 app_paused, a suspended app
403 app_suspended. Throttle: app/agents/install, 30 a minute.
Request
Responses
- 200
- 401
- 403
- 422
- 429
- 503
Each agent sent, as stored now, in the order given.
The token is unknown, revoked or expired, the install is uninstalled or needs reconnecting, or its acting admin left the workspace — refresh, or have an admin reconnect the app.
Response Headers
Bearer realm="KudosCRM", error="invalid_token"resource_not_grantable (a personal or legacy token), install_token_required (a session),
insufficient_scope, telephony_contract_required or app_suspended.
invalid_agents — one error per bad field, source.pointer at /agents/N/<field>.
A throttle refused the request. Wait Retry-After seconds — the time left in the refusing window
plus 0–3 s of jitter. The X-RateLimit-* headers describe the bucket that refused it.
Response Headers
Seconds until the window rolls.
app_paused — an admin paused the app in this workspace. Nothing is lost: wait, or ask them to
press Resume. Retry-After is one hour.
Response Headers
app_paused, so KudosCRM's own monitoring can tell an admin's pause from a fault. The body's
code says the same.