---
title: "Set the 250-minute packs on the subscription"
method: POST
path: "/api/v1/billing/voice-minutes"
tags: ["Billing", "Voice"]
---

# Set the 250-minute packs on the subscription

`POST /api/v1/billing/voice-minutes`

## Request

- Base URL: `https://cooperemail.com`
- URL: `https://cooperemail.com/api/v1/billing/voice-minutes`
- Auth: HTTP bearer

Requires billing_write on the parent account. A sub-account key is HTTP 403 workspace_billing_forbidden. HTTP 404 not_found when voice is off, and also when voice billing is off. Starter or Pro with a Stripe subscription is required (HTTP 402 plan_limit_exceeded otherwise). packs replaces the previous quantity, from 0 to 100. Each pack is $10/month and adds 250 voice minutes. The Stripe price lookup key is cooper_voice_250_monthly. That price is not created by npm run stripe:setup. Stripe prorates the change. The response is the new pack count, not a Checkout URL.

## Request body

- object
  - `packs` integer, required

## Response `200`

Pack quantity now on the subscription.

- VoiceMinutePacks
  - `object` 'voice_minute_packs', required
  - `packs` integer, required
  - `previous_packs` integer, required
  - `minutes_per_pack` integer, required
  - `extra_minutes` integer, required
  - `monthly_cents` integer, required
  - `lookup_key` 'cooper_voice_250_monthly', required

## Other responses

- `400`: packs outside 0 to 100
- `402`: plan_limit_exceeded. A Starter or Pro subscription is required.
- `403`: workspace_billing_forbidden or permission_denied
- `404`: not_found when voice or voice billing is off
- `503`: voice_billing_failed or stripe_price_missing

---

[API](https://skmtc.dev/cooperemail/apis/cooper-email-api.md) · [All operations](https://skmtc.dev/cooperemail/apis/cooper-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cooperemail/apis/cooper-email-api/revisions/6d800a7b3e33?raw)
