Proof of delivery

Every voice send that reaches a voicemail system gets proof of delivery: a recording of the whole call, from the voicemail greeting through your message. That covers ringless voicemail, voice broadcasts and AI calls, on every account, BYOC included. Use it to settle a dispute about whether a message was left, or to share it with a client.

The result carries it as proof_of_delivery_url. It's available for 7 days.

Which sends have it

Send Outcome The recording contains
Ringless voicemail, voice broadcast or AI call 0 (Success), when a voicemail system answered The recipient's voicemail greeting, then your message
Ringless voicemail, voice broadcast or AI call 4001 (VoiceMail Not Setup) The carrier saying the mailbox isn't set up
Ringless voicemail, voice broadcast or AI call 4002 (VoiceMail Full) The carrier saying the mailbox is full
AI call, when the agent's Record calls setting is on 0, when a person answered The whole conversation

Otherwise, when a person picks up a voice broadcast or AI call, there's no recording, and the call's reason_code is your record of how it went. Texts and emails report delivery through their own status events.

Recording is best effort. If no recording was saved, the result has no link, or its link never becomes ready.

The link can appear in three places:

Where When it plays
contact.rvm.receipt webhook Always. It fires once per send, when the recording is saved.
contact.rvm.status webhook, in data.proof_of_delivery_url Only if the recording was saved before the status was sent. Otherwise, wait for the receipt.
callback_url body Same as the status webhook

Ringless voicemail, voice broadcasts and AI calls all report on these same events. To get a link that plays the first time, subscribe to contact.rvm.receipt. It carries the same fields as the status event, plus receipt_ready_at:

{
  "event": "contact.rvm.receipt",
  "data": {
    "drop_id": "fe3face6-ab9d-40e8-bf24-7d911cbf4ce8",
    "contact_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
    "to": "+13125550142",
    "status": "failure",
    "reason": "VoiceMail Full",
    "reason_code": 4002,
    "proof_of_delivery_url": "https://api-v2.dropcowboy.com/campaign/public/receipts/MmEX1fWLLQRmf68M1Yg82jkHN3-P7y8VyDxXhnyHA50",
    "receipt_ready_at": "2026-03-20T15:05:12.000Z"
  }
}

The example is trimmed. See Webhooks for every event.

The link is GET /campaign/public/receipts/{token}. It needs no API key: the URL is the credential, so share it only with people who should hear the recording. A browser, curl or your CRM can open it. Each play is logged.

Response What to do
302 Follow the redirect to the audio. The audio URL lasts a few minutes, so fetch it now and don't store it.
404 with "error": "not_ready" The recording isn't saved yet. Wait the Retry-After seconds and try again.
410 with "error": "expired" The link has expired. Within 7 days of the call you can get a new one.
404 with "error": "not_found" No such link. An expired link also gives this a week after it expired.
429 Too many requests. Wait and try again.

Error bodies are {"error": "...", "message": "..."}. Every response has Cache-Control: no-store and Referrer-Policy: no-referrer.

Keep the recording

Proof of delivery is available for 7 days after the call, for every account. After that no link plays it and no new link can be issued. To keep a recording, download the audio from the redirect within 7 days and store it in your own system.

A link lasts 7 days and never past the 7-day window. For a fresh one, call GET /campaign/public/deliveries/{drop_id}/receipt with the campaigns:read scope. This works for 7 days after the call.

curl https://api-v2.dropcowboy.com/campaign/public/deliveries/b3e7a1c9-8d5f-4b2e-9a6c-1f4d7b3e8a52/receipt \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"
{
  "data": {
    "drop_id": "b3e7a1c9-8d5f-4b2e-9a6c-1f4d7b3e8a52",
    "reason_code": 0,
    "proof_of_delivery_url": "https://api-v2.dropcowboy.com/campaign/public/receipts/-YxvnF06aASt5iho2aZmGbb4l2ToOnZW1JI-1Bc8Bbg",
    "expires_at": "2026-03-27T15:05:00.000Z",
    "receipt_ready_at": "2026-03-20T15:05:12.000Z"
  },
  "meta": { "request_id": "10b2b730-6b5b-480d-8164-69b7f95e895e" }
}

Each call issues a new link, and earlier links keep working until they expire. receipt_ready_at is null while the recording isn't saved yet. A send with no proof of delivery, one more than 7 days old, or one on another account answers 404.

Common problems


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.

Code samples

The requests from this page, ready to copy. Set DC_KEY and DC_SECRET to your API key pair first.

Get a new link
curl https://api-v2.dropcowboy.com/campaign/public/deliveries/b3e7a1c9-8d5f-4b2e-9a6c-1f4d7b3e8a52/receipt \
  -H "x-key: $DC_KEY" -H "x-secret: $DC_SECRET"