← All action domains

RVM

10 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 a voicemail recording from a URL

rvm.add_recording_from_urlwriteconfirm

Save an existing audio file as a reusable voicemail recording by fetching it from a public URL (the machine-surface equivalent of the app's upload button — binary uploads can't ride a tool call). TWILIO FORMAT RULE: the file must be MP3, WAV, GSM, µ-law or AIFF; m4a/aac/webm fail the drop with Twilio error 12300, so they're refused here. Voicemails must be 55 seconds or shorter. THIS MAKES AN OUTBOUND REQUEST FROM CHIRPLY'S SERVERS to whatever address is given, so everything in the URL — host, path, query string — is disclosed to whoever operates it. That is why it asks for confirmation.

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
urlstring (uri)requiredPublic URL of the audio file to fetch and store. Chirply's servers fetch this address directly.
labelstringoptionalName shown in the recordings list.
duration_secondsintegeroptionalClip length in seconds, if known. Must be 55 or less.

Example

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

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

Cancel a voicemail campaign

rvm.cancel_campaignwriteconfirm

Stop a voicemail campaign: any drop that hasn't gone out yet is skipped and the campaign is marked canceled. Voicemails already delivered can't be recalled, and a canceled campaign can't be resumed.

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 campaign to cancel.

Example

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

Send a ringless voicemail campaign

rvm.create_campaignwriteconfirm

Create and send a ringless-voicemail campaign to contacts and/or saved lists. THIS DROPS REAL VOICEMAILS: each recipient costs two outbound Twilio calls (a filter call plus the voicemail leg) billed to the account, and 'now' fans out immediately. Needs a saved recording (rvm.generate_recording or rvm.add_recording_from_url) and TWO DIFFERENT active numbers — a filter number and a from number. Do-not-contact is always enforced; quiet hours only when scheduled and explicitly asked for.

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
namestringoptionalCampaign name. Defaults to 'Ringless voicemail'.
audio_asset_idstring (uuid)requiredThe saved voicemail recording to drop.
filter_number_idstring (uuid)requiredNumber that places the filter call (seizes the line).
from_number_idstring (uuid)requiredNumber the voicemail appears to come from. Must differ from the filter number.
contact_idsarray of (string (uuid))optionalContacts to drop to. Default: []
list_idsarray of (string (uuid))optionalSaved lists whose members to drop to. Default: []
send_mode"now" | "schedule"optional'now' dispatches immediately; 'schedule' waits for scheduled_at_local. Default: "now"
scheduled_at_localstringoptionalLocal wall clock 'YYYY-MM-DDTHH:MM' for send_mode 'schedule'.
timezonestringoptionalIANA timezone the wall clock is read in. Default: "UTC"
respect_timezonebooleanoptionalFire at the same LOCAL time for each recipient, using their own timezone. Default: false
respect_quiet_hoursbooleanoptionalDefer drops outside the calling window. Scheduled sends only; 'now' always sends. Default: false

Example

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

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

Drop a voicemail to one contact

rvm.drop_to_contactwriteconfirm

Drop a ringless voicemail to a single contact right now — the same one-click action as the contact page's 'Drop voicemail' dialog. THIS PLACES REAL CALLS and bills the account two Twilio legs. Needs a saved recording and two different active numbers. Do-not-contact is enforced before dialing.

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
contact_idstring (uuid)requiredContact to leave the voicemail for.
audio_asset_idstring (uuid)requiredThe saved voicemail recording to drop.
filter_number_idstring (uuid)requiredNumber that places the filter call.
from_number_idstring (uuid)requiredCaller-ID number. Must differ from the filter number.

Example

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

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

Generate a voicemail with text-to-speech

rvm.generate_recordingwriteconfirm

Turn a script into a reusable voicemail recording. Engine 'elevenlabs' synthesizes an MP3 right now through its OWN ElevenLabs account and SPENDS ITS TTS CREDITS; engine 'twilio' stores only the script and has Twilio speak it live at drop time (no synthesis charge, billed as part of the call). Scripts longer than about 55 spoken seconds are refused.

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
textstringrequiredThe voicemail script to speak.
engine"elevenlabs" | "twilio"optional'elevenlabs' synthesizes now and spends credits; 'twilio' speaks it live. Default: "elevenlabs"
voice_idstringoptionalElevenLabs voice id. Defaults to the account's configured voice.
voicestringoptionalTwilio <Say> voice for engine 'twilio' (e.g. Polly.Joanna, Polly.Matthew, Polly.Salli). Defaults to Polly.Joanna.
labelstringoptionalName shown in the recordings list.

Example

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

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

Open a voicemail campaign

rvm.get_campaignread

Fetch one voicemail campaign with live per-status drop counts — how many are pending, in flight, dropped, failed or skipped.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe campaign's id.

Example

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

Open a voicemail recording

rvm.get_recordingread

Fetch one saved voicemail recording by id, including its duration and (for text-to-speech recordings) the script and voice it speaks.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe recording's id.

Example

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

List voicemail campaigns

rvm.list_campaignsread

List ringless-voicemail campaigns with their status and per-recipient tallies (dropped, failed, skipped), newest first.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
status"draft" | "scheduled" | "sending" | "done" | "canceled"optionalOnly campaigns in this status.
querystringoptionalText to match in the campaign name.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rvm.list_campaigns \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

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

List voicemail drops

rvm.list_dropsread

List the individual recipients of a voicemail campaign and what happened to each one — pending, filtering, dropping, dropped, failed (with the error) or skipped (e.g. do-not-contact).

Parameters

FieldTypeRequiredDescription
campaign_idstring (uuid)requiredThe campaign whose drops to list.
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
status"pending" | "filtering" | "dropping" | "dropped" | "failed" | "skipped"optionalOnly drops in this status.

Example

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

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

List voicemail recordings

rvm.list_recordingsread

List the saved voicemail recordings this account can drop — uploaded audio, in-app recordings, ElevenLabs-synthesized clips, and Twilio text-to-speech scripts. Newest first.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
source"upload" | "recording" | "elevenlabs" | "twilio_tts"optionalOnly recordings produced this way.
querystringoptionalText to match in the recording's label.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rvm.list_recordings \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool rvm_list_recordings 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=rvm — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.