API reference / Outreach
Ringless voicemail
POST /rvm delivers a voicemail directly to one person's voicemail box. The
recipient fields, foreign_id, callback_url and merge fields
work the same on every send; see Sending basics.
A
202means accepted, not delivered. The result of each voicemail arrives on thecontact.rvm.statuswebhook. Calling hours, the contact frequency limit and retries are explained in Send lifecycle. What eachreason_codemeans, and what to do about it, is in Outcomes and what to do.
Send a ringless voicemail
POST /rvm. With OAuth, the token needs the rvm:send scope. Give the audio
as exactly one of these:
| Field | Type | Required | Description |
|---|---|---|---|
media_id |
string | One audio option | An uploaded or recorded file. List yours with GET /media/public/media. |
tts_body |
string | One audio option | Text to speak, up to 1,200 characters once merge fields are filled in. Needs voice_id. Supports merge fields. |
voice_id |
string | With tts_body |
The voice for tts_body. List voices with GET /voice/public/voices. |
audio_url |
string | One audio option | A public http(s) URL of an mp3 or wav file, up to 50 MB. We fetch it when the voicemail is sent. |
audio_url works on BYOC accounts and on accounts set up to send unreviewed
audio. On other accounts the send fails with 3014 (Not allowed audio_url).
Upload the file to Media and send its media_id instead.
Then choose the phone line and options:
| Field | Type | Required | Description |
|---|---|---|---|
phone_line_id |
string | No | The phone line the voicemail is sent from. The recipient sees one of its numbers, and return calls and texts reach that line, where its routing applies: forward, queue, voicemail or whatever you set up. Leave it out to send from your default phone line. List lines with GET /phone/public/lines. |
caller_id |
string | BYOC only | Your carrier's number in E.164, shown as the caller ID exactly as given. Only bring-your-own-carrier (BYOC) accounts can set it; on other accounts it's ignored. If you send phone_line_id too, the line wins. |
mobile_only |
boolean | No | Skip the send when the number isn't a mobile number. |
Every voicemail goes out from a phone line on your account unless you use
BYOC. If you leave out phone_line_id and your account has no default phone
line, the send fails with 4010.
curl -X POST https://api-v2.dropcowboy.com/rvm \
-H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET" \
-H "Idempotency-Key: 6f1c2e9a-8b3d-4f7a-a2c5-9d4e1b7f3a60" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
"phone_selector": "mobile_phone",
"phone_line_id": "e2b6f9a3-5c1d-4e8b-a4f7-9c3e1b5d7a28",
"voice_id": "7d2a9e4b-1c6f-4b3a-8e5d-2f9c7a1b4e63",
"tts_body": "Hi {{contact.first_name|there}}, your order is ready for pickup.",
"foreign_id": "order-1042",
"callback_url": "https://hooks.example.com/dropcowboy/outcome"
}'
The route answers 202. The result arrives on contact.rvm.status and your
callback_url; see Where results arrive.
Outside the contact's calling hours the voicemail is held and retried for up
to 3 days; see Calling hours.
A reason_code of 0 means the voicemail was left in the contact's mailbox.
After that, the contact's carrier decides when it shows up: carriers can take
up to 24 hours to deliver it, and some filter it as spam. Neither is in our
control.
Proof of delivery
A voicemail result includes proof_of_delivery_url: a recording that shows
your message reached the contact's voicemail system, available for 7 days.
Results 0, 4001 and 4002 have it. On 4001 and 4002 the recording is
the carrier saying why the mailbox couldn't take the message.
Voice broadcasts and AI calls a voicemail system answered get proof of delivery too, on the same results. Proof of delivery explains how to play a link, get a new one, and keep the recording.
Common problems
- The send failed with
3014. Your account can't useaudio_url. Send amedia_idortts_bodyinstead. - The send failed with
3002or3015.3002meanstts_bodywas sent withoutvoice_id.3015meansvoice_idwas sent withouttts_body. Send both, or neither. - The voicemail failed with
4001or4002. Their mailbox can't take a message, so retrying won't help. Reach them on a channel they've agreed to; see Act on the result. - The proof of delivery link answers
not_ready. Wait forcontact.rvm.receipt, or retry afterRetry-After. See Proof of delivery. - The result is
0but the contact hasn't seen the voicemail. Carriers can take up to 24 hours to deliver it, or may filter it as spam. That's outside our control. - The send failed with
4010. It named nophone_line_idand your account has no default phone line. Passphone_line_id, or set a default line.
For more symptoms and fixes, see Troubleshooting. Every code is in Outcomes.
Ringless voicemail technology delivers messages directly to voicemail inboxes. Delivery success depends on carrier compatibility, device type, and recipient settings. While designed for voicemail delivery, technical factors may affect performance. Drop Cowboy does not guarantee delivery rates or specific outcomes.
While Drop Cowboy provides tools to support compliance efforts, customers remain solely responsible for obtaining proper consent, maintaining opt-out lists, and complying with all federal and state telemarketing regulations. Consult with your legal counsel to ensure your specific use case and consent mechanisms comply with applicable laws.