← All action domains

Call queues

14 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.

Add to call queue

call_queues.add_contactswriteconfirm

Put contacts on a call queue. If AI calling is active, eligible contacts will receive real outbound calls during the queue's calling hours, using this account's voice and AI credits. Otherwise the team can call them in a dialer. Anyone already on the queue is moved back to pending instead of being added twice.

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 call queue's id.
contact_idsarray of (string (uuid))requiredIds of the contacts to add. Ids that aren't in this account are ignored.
priorityintegeroptionalWork order. Lower is called first; leave unset for the back of the queue, or use -1 to jump a hot lead ahead of everyone waiting.

Example

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

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

Empty a call queue

call_queues.clearwriteconfirm

Take everybody off a call queue, keeping the queue itself. The record of who was on it and what happened on those calls is destroyed and cannot be recovered; the contacts are untouched.

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 call queue's id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.clear \
  -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 call_queues_clear at https://app.chirply.io/api/mcp, same bearer token, same input.

New call queue

call_queues.createwrite

Create a call queue — a named list of people for the team to phone through the power dialer. Creating one calls nobody; it only makes the list.

Parameters

FieldTypeRequiredDescription
namestringrequiredWhat this list is called, e.g. “Callbacks today”. Must be unique in the account.
descriptionstringoptionalWhat the queue is for, shown under its name.
colorstringoptionalHex colour used to mark the queue around the app, e.g. #2563eb.

Example

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

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

Delete a call queue

call_queues.deletewriteconfirm

Permanently delete a call queue and everyone's place in it. The contacts and their call history are untouched, but the record of who still needed calling is gone and cannot be recovered.

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 call queue's id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.delete \
  -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 call_queues_delete at https://app.chirply.io/api/mcp, same bearer token, same input.

Open a call queue

call_queues.getread

Fetch one call queue by id, with its live counts of who is still to call, who has been called, and who was skipped; its rule for retrying unanswered numbers (`retry`); and how many people are waiting for a retry that isn't due yet (`waiting_for_retry`).

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.get \
  -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 call_queues_get at https://app.chirply.io/api/mcp, same bearer token, same input.

List call queues

call_queues.listread

List every call queue in the account with how many people are still waiting to be called, how many have been called, and how many were skipped, plus each queue's rule for retrying unanswered numbers (`retry`).

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.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 call_queues_list at https://app.chirply.io/api/mcp, same bearer token, same input.

Who is on a call queue

call_queues.list_entriesread

List the people on a call queue in the order they will be dialled, with each one's outcome and note if they have already been called, and where they stand on retries (`retry`): calls used, retries allowed, the last outcome, and — for someone waiting for their next try — when it comes due.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.
status"pending" | "called" | "skipped"optionalOnly people in this state: pending (still to call), called, or skipped.
limitintegeroptionalHow many to return. Default: 200
offsetintegeroptionalHow many to skip, for paging. Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.list_entries \
  -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 call_queues_list_entries at https://app.chirply.io/api/mcp, same bearer token, same input.

Who to call next

call_queues.nextread

Read the next people waiting on a call queue, in the order they will be dialled, with their phone numbers. This applies the queue's own power-dialer settings the same way pressing “Start calling” does — outside the queue's calling hours it reports nobody, and people over the attempt limit, on a skipped line type, or without a phone number are left out and counted with the reason. People waiting for a retry that isn't due yet are not listed; `waiting_for_retry` counts them and says when the soonest comes due. So the answer matches who a rep's dialer would actually ring, not just who is on the list (call_queues.list_entries shows the raw list). Reads only — it starts no calls.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.
limitintegeroptionalHow many to return. Default: 25

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.next \
  -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 call_queues_next at https://app.chirply.io/api/mcp, same bearer token, same input.

Record a call queue outcome

call_queues.record_outcomewrite

Mark someone on a call queue as called (with the outcome that was chosen) or skipped, so they stop coming up as still-to-call. If the queue retries unanswered numbers and the outcome (or the call's own final status) is one it retries, the person instead stays on the queue and comes back at their next try time, until the retry limit. This only writes the queue entry — it sends nothing to anybody and spends no money. KNOWN GAP: unlike the power dialer in the app, this does NOT fire the 'called from a queue' automation trigger and does NOT stamp the queue onto the call log, so an account whose follow-up texts hang off that trigger will not send them for an outcome recorded this way.

Parameters

FieldTypeRequiredDescription
entry_idstring (uuid)requiredThe queue entry's id, from call_queues.list_entries or call_queues.next.
status"pending" | "called" | "skipped"requiredcalled if they were rung, skipped if they were passed over, pending to put them back in the queue.
disposition_idstring (uuid) (or null)optionalThe call outcome that was picked, from the account's dispositions.
notesstring (or null)optionalA free-text note about the call.
call_idstring (uuid) (or null)optionalThe call log row this outcome belongs to.

Example

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

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

Remove from call queue

call_queues.remove_contactswrite

Take contacts off a call queue so nobody rings them. Their call history and any outcome already recorded stay on the contact; only their place in this queue is removed.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.
contact_idsarray of (string (uuid))requiredIds of the contacts to remove.

Example

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

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

Call everyone again

call_queues.resetwrite

Put people who have already been called or skipped back to still-to-call, so the queue can be worked through again. Their previous outcome and notes are kept on record.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.
only"called" | "skipped"optionalReset only the people in this state. Leave unset to reset both.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.reset \
  -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 call_queues_reset at https://app.chirply.io/api/mcp, same bearer token, same input.

Save AI calling

call_queues.set_ai_callerwriteconfirmadmin only

Configure an AI agent to automatically call pending people on one call queue during selected local hours. When enabled, real outbound calls use this account's Twilio and AI credits. Voicemail, no-answer, busy and failed calls wait for the chosen retry interval until the per-person attempt limit; live answers complete the queue entry. Disabling stops new calls but lets calls already in progress finish.

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 call queue to configure.
enabledbooleanrequiredWhether its AI agent automatically starts due calls.
agent_idstring (uuid) (or null)requiredActive voice AI agent in this account; required when enabled.
from_number_idstring (uuid) (or null)requiredActive account phone number used as caller ID; required when enabled.
timezonestringrequiredIANA timezone for the calling window, such as America/Chicago.
daysarray of ("Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | … 1 more)requiredWeekdays on which calls may begin.
startstringrequiredEarliest local dial time, HH:MM.
endstringrequiredLatest local dial time, HH:MM.
retry_minutesintegerrequiredMinimum minutes after an unanswered attempt before this person is eligible again.
max_attemptsintegerrequiredMaximum AI call attempts per person on this queue.
calls_per_minuteintegerrequiredMaximum new queue calls launched in one minute.
recordbooleanrequiredWhether calls from this queue are recorded.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.set_ai_caller \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "enabled": true,
    "agent_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "from_number_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "timezone": "example",
    "days": [
      "Mon"
    ],
    "start": "example",
    "end": "example",
    "retry_minutes": 15,
    "max_attempts": 1,
    "calls_per_minute": 1,
    "record": true
  }'
Test with your API key

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

Save retry settings

call_queues.set_retry_policywriteconfirmadmin only

Set a call queue's rule for retrying unanswered numbers. When it is on and a call from the queue — from the power dialer or the predictive dialer — ends with one of the chosen outcomes, the person is put back in the queue automatically, becomes callable again the chosen number of hours later (moved to the next opening if that falls outside the queue's calling hours), and is retried up to the chosen number of times; reaching them, recording any other outcome, or removing them from the queue stops it. Every attempt stays on the contact's call history labelled with which retry it was. Saving calls nobody by itself, but with the predictive dialer running it decides that real people's phones ring again, billed to this account's calling. The AI caller keeps its own retry interval (call_queues.set_ai_caller). Turning the rule off leaves people already scheduled waiting until their time; they are then called once more without further retries.

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 call queue to configure.
enabledbooleanrequiredWhether unanswered numbers on this queue are retried automatically.
retriesintegeroptionalHow many MORE times to try after the first call (1–10). 3 means up to 4 calls in all. Omit to keep the current value.
hours_apartnumberoptionalHours between one unanswered attempt and the next try (0.25–72; fractions allowed, 0.5 is 30 minutes). Omit to keep the current value.
outcomesarray of ("no_answer" | "busy" | "voicemail" | "failed")optionalWhich outcomes count as unanswered: no_answer and busy are the default pair; voicemail (an answering machine, or a voicemail the rep left) and failed (the call didn't connect) are opt-ins. Omit to keep the current choice.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.set_retry_policy \
  -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 call_queues_set_retry_policy at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a call queue

call_queues.updatewrite

Rename a call queue, change its description or colour, attach a call script to it, or take it out of use. Taking a queue out of use removes nobody — it just stops being offered when someone picks a queue.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe call queue's id.
namestringoptionalNew name.
descriptionstring (or null)optionalNew description, or null to clear it.
colorstringoptionalNew hex colour.
is_activebooleanoptionalFalse retires the queue without deleting it or removing anybody from it.
script_idstring (uuid) (or null)optionalThe call script that opens beside the phone for calls worked from this queue, or null to use none.

Example

curl -X POST https://app.chirply.io/api/v1/actions/call_queues.update \
  -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 call_queues_update 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=call_queues — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.