← All action domains

Devices

8 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Assign a desk phone to a seat

devices.assignwriteadmin only

Assign a desk phone to an account member (seat), or clear the assignment by passing null. This records who the phone belongs to; it does not change which numbers ring it.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe device id.
user_idstring (uuid) (or null)requiredThe member id to assign the phone to, or null to unassign it.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.assign \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "user_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool devices_assign at https://app.chirply.io/api/mcp, same bearer token, same input.

List desk phones

devices.listreadadmin only

List the physical VoIP/SIP desk phones registered to this account — each with its label, SIP username, assigned seat, enabled state, assigned phone-number ids, and exact *1 through *9 outbound caller-ID codes — plus the SIP server address. Read-only, costs nothing, and NEVER returns SIP passwords.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.list \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool devices_list at https://app.chirply.io/api/mcp, same bearer token, same input.

Add a desk phone

devices.provisionwriteadmin only

Provision a new physical VoIP/SIP desk phone on its OWN Twilio account and return the SIP server, username, and password to enter into the handset. The password is shown ONCE and can never be retrieved again (only regenerated). The account's SIP domain is created automatically on the first device. This spends no money by itself; once registered, the phone rings the account's numbers and can dial out, billed as ordinary Twilio calls.

Parameters

FieldTypeRequiredDescription
labelstringrequiredA name for the phone, e.g. 'Front desk Yealink'.
user_idstring (uuid) (or null)optionalThe member (seat) this phone belongs to. Omit to leave it unassigned.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.provision \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "example"
  }'
Test with your API key

Over MCP the same operation is the tool devices_provision at https://app.chirply.io/api/mcp, same bearer token, same input.

Reset a desk phone's password

devices.regenerate_passwordwriteadmin only

Generate a new SIP password for a desk phone and return it ONCE, along with the SIP server and username. The old password stops working immediately, so the handset must be updated with the new one to keep working. Use if a password may have leaked or was lost (it can't be read back any other way).

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe device id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.regenerate_password \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool devices_regenerate_password at https://app.chirply.io/api/mcp, same bearer token, same input.

Remove a desk phone

devices.removewriteconfirmadmin only

PERMANENTLY remove a desk phone: its SIP credential is deleted on Twilio, so the handset can no longer register, ring, or dial. This CANNOT be undone — setting the phone up again means provisioning a fresh device with new credentials.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe device id to remove.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.remove \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool devices_remove at https://app.chirply.io/api/mcp, same bearer token, same input.

Enable or disable a desk phone

devices.set_enabledwriteadmin only

Turn a registered desk phone on or off. A disabled phone keeps its credential but stops ringing on inbound calls and can't dial out. Fully reversible.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe device id.
enabledbooleanrequiredtrue to enable the phone, false to disable it.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.set_enabled \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "enabled": true
  }'
Test with your API key

Over MCP the same operation is the tool devices_set_enabled at https://app.chirply.io/api/mcp, same bearer token, same input.

Save phone numbers

devices.set_numberswriteadmin only

Set exactly which account phone numbers belong to a desk phone. These numbers ring the phone on inbound team calls and become its allowed outbound caller IDs; on the handset, dialing normally uses the available account default and prefixes *1 through *9 select a listed number for one call. Pass an empty list to use EVERY team-routed number. Inbound routing still does not override numbers sent to an AI receptionist, IVR, blind forward, or conference.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe device id.
number_idsarray of (string (uuid))requiredThe phone_numbers ids this phone should ring for and may present as outbound caller ID; empty = all team numbers.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.set_numbers \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "number_ids": [
      "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
    ]
  }'
Test with your API key

Over MCP the same operation is the tool devices_set_numbers at https://app.chirply.io/api/mcp, same bearer token, same input.

Save keypad order

devices.set_outbound_orderwriteadmin only

Choose the per-phone order behind the *1 through *9 outbound caller-ID shortcuts. This changes which owned business number a future desk-phone call presents when its prefix is dialed; it does not place a call, send a message, change inbound ringing, or spend money by itself. Active assigned numbers omitted from the list are appended after the listed numbers.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe desk-phone device id whose keypad order should change.
number_idsarray of (string (uuid))requiredActive phone_numbers ids in the desired order: the first becomes *1, the second *2, through *9. Each id must be available to this phone and may appear only once.

Example

curl -X POST https://app.chirply.io/api/v1/actions/devices.set_outbound_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "number_ids": [
      "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
    ]
  }'
Test with your API key

Over MCP the same operation is the tool devices_set_outbound_order at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=devices — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.