Voice
Voicemail and outbound calls on an inbox number.
API docs · Phone numbers · Place a call · Pricing.
Voice
A caller to the inbox number hears a short greeting, then a recording. The default greeting is used until you set one. The recording is at most 120 seconds. PATCH /api/v1/inboxes/{id}/phone-number with {"voice_greeting":"Leave a message for the research bot.","voice_max_seconds":90} changes both. voice_max_seconds is an integer from 15 to 300. An empty greeting or a null max uses the defaults. The recording is stored on the inbox as a message with channel voicemail and type voicemail. The message includes the caller number, duration_seconds, transcript, and recording_url. It fires message.received and shows up on GET /api/v1/inboxes/{id}/wait. A later transcription callback fills the transcript on that same message.
| Free | Starter | Pro | |
|---|---|---|---|
| Minutes | None | 30 per number / month | 300 included, plus 30 per extra number |
| Extra minutes | — | $10 per 250 | $10 per 250 |
Starter includes 30 minutes per active number each month. Pro includes 300 minutes, plus 30 for each number past the three included numbers. Free includes none. Extra minutes are $10 per 250 (lookup key cooper_voice_250_monthly). POST /api/v1/billing/voice-minutes returns HTTP 404 and does not call Stripe. A Starter or Pro subscription is required. Once the allowance is used, outbound calls return HTTP 402 plan_limit_exceeded with upgrade_url. Inbound calls still record a voicemail, capped at 60 seconds.
POST /api/v1/inboxes/{id}/calls with {"to":"+14155550100","say":"Tuesday works.","mode":"say"} places a call from the inbox number. say is spoken with text-to-speech and must be 1000 characters or fewer. mode say_and_record speaks, then records a reply as a voicemail. Recipients must be US or Canada numbers. Premium-rate numbers return HTTP 400 premium_rate_blocked. Other countries return HTTP 400 international_not_allowed. An account can place at most 100 calls per UTC day (HTTP 409 daily_call_cap). An inbox with no number returns HTTP 409 phone_number_not_found. Status callbacks store queued, ringing, completed, no-answer, or failed, and duration_seconds.
curl -s https://cooperemail.com/api/v1/inboxes/$INBOX/calls \
-H "authorization: Bearer $COOP_KEY" \
-H 'content-type: application/json' \
-d '{"to":"+14155550100","say":"Tuesday works.","mode":"say"}'MCP adds cooper_place_call. initialize reports version 1.7.0. The tool is marked destructive and open-world. Reference: POST /calls, greeting, and minute packs. Each page is also markdown at the .md URL.