Voice

Voicemail and outbound calls on an inbox number.

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.

FreeStarterPro
MinutesNone30 per number / month300 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.