Reps
List reps, newest first
GET /v1/reps reps:read
Query
limitintegercursorstring
Responses
- 200
A page of reps
Fields
-
dataRep[] requiredFields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
nextCursorstring | null required
-
- 400
Invalid request
- 401
Missing or invalid API key
- 404
Not found
- 429
rate_limited, or another limit named byerror.code
Get a rep
GET /v1/reps/{id} reps:read
Path
idstring required
Responses
- 200
The rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 404
Not found
- 429
rate_limited, or another limit named byerror.code
Update a rep's skills, caller ID or device, or enable / disable them
PATCH /v1/reps/{id} reps:write
A disabled rep goes offline and is offered no calls. Skills, enabled and the caller ID also apply to live calls, so they need a live key; a test key can only change device, and not on a phone verified with a real call.
Path
idstring required
Body
-
skillsobject -
enabledboolean -
defaultCallerIdstring | nullOne of the tenant numbers, or
nullfor the workspace default -
device"softphone" | "phone"phoneneeds a verified phone (409 otherwise)
Responses
- 200
The updated rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 403
A test key (
live_mode_only): this change needs a live API key - 404
Not found
- 429
rate_limited, or another limit named byerror.code
Set a rep's state: available, away or offline
PUT /v1/reps/{id}/state reps:write
Refused (409) while the rep is on a call. Leaving wrap_up this way ends it.
Path
idstring required
Body
-
state"available" | "away" | "offline" required -
reasonstring | nullFor
away
Responses
- 200
The rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 404
Not found
- 429
rate_limited, or another limit named byerror.code
Register a rep's own phone and call it with a verification code
PUT /v1/reps/{id}/phone reps:write
Replaces any phone the rep had (it is unverified again, and device goes back to softphone). We call the number and read a 6-digit code, valid for 10 minutes; at most 5 calls an hour (429 after). With a test key the call runs on the simulator, whose timeline shows the code, and the phone then only rings simulated calls. A test key can not replace a phone verified with a real call.
Path
idstring required
Body
-
e164string required -
labelstring | null
Responses
- 202
The verification call was placed
Fields
-
dataRepPhoneVerification requiredFields
-
verificationIdstring required -
expiresAtstring required -
environment"live" | "test" requiredTest keys place the verification call on the simulator
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 403
A test key (
live_mode_only): this change needs a live API key - 404
Not found
- 429
rate_limited, or another limit named byerror.code
Remove a rep's own phone
DELETE /v1/reps/{id}/phone reps:write
Calls ring the softphone again (device goes back to softphone). A test key can not remove a phone verified with a real call.
Path
idstring required
Responses
- 200
The rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 403
A test key (
live_mode_only): this change needs a live API key - 404
Not found
- 429
rate_limited, or another limit named byerror.code
Verify a rep's phone with the code the call read out
POST /v1/reps/{id}/phone/verify reps:write
Emits rep.phone.verified. 422 invalid_code, code_expired or too_many_attempts (5 wrong codes) otherwise; the last two need a new call (PUT /v1/reps/{id}/phone).
Path
idstring required
Body
-
codestring required
Responses
- 200
The rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 404
Not found
- 429
rate_limited, or another limit named byerror.code
Record the disposition of a rep's call and end their wrap-up
PUT /v1/reps/{id}/wrap-up reps:write
What the desk does when the rep picks a disposition, for reps who take calls on their own phone without the desk open. A disposition in the workspace's DNC list adds the other party to Do Not Call. 409 unless it is the rep's current or last call.
Path
idstring required
Body
-
callIdstring required -
dispositionstring required -
notesstring
Responses
- 200
The rep
Fields
-
dataRep requiredA human who takes calls: a workspace member enabled as a rep in the dashboard, with skills and a live state. Routing sets
on_callandwrap_up.Fields
-
idstring required -
userIdstring required -
namestring required -
emailstring required -
enabledboolean required -
skillsobject requiredSkill name → level 1-10
-
maxConcurrentCallsinteger required -
defaultCallerIdstring | null requiredThe caller ID of the rep's outbound calls when none is given
-
device"softphone" | "phone" requiredWhere calls ring: the browser
softphone, or the rep's own verifiedphone(call screening: they press 1 to take each call) -
phoneRepPhone requiredThe rep's own phone, if registered
-
state"offline" | "available" | "on_call" | "wrap_up" | "away" required -
reasonstring | null requiredWhy the rep is away, e.g.
lunch -
stateSincestring required -
callIdstring | null requiredThe call the rep is on, if any
-
createdAtstring required -
updatedAtstring required
-
-
- 400
Invalid request
- 401
Missing or invalid API key
- 404
Not found
- 429
rate_limited, or another limit named byerror.code