---
title: "Read one number's plan, limits and usage"
method: GET
path: "/v1/accounts/{account_id}/plan"
tags: ["Accounts"]
---

# Read one number's plan, limits and usage

`GET /v1/accounts/{account_id}/plan`

## Request

- Base URL: `https://api.whatsmcp.com`
- URL: `https://api.whatsmcp.com/v1/accounts/{account_id}/plan`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

That number's plan, limits and the tools its plan leaves out (`excluded_tools`) — why a call on it answers plan_required.

## Path parameters

- `account_id` string, required

## Response `200`

OK

- GetPlanOutput
  - `accounts_paired` integer, required: WhatsApp numbers currently paired
  - `description` string: what the plan includes, for a human
  - `display_name` string, required: the plan's name as the customer sees it, e.g. Free, Pro
  - `excluded_tools` string[], nullable: tools listed on this server that your plan does not include; calling one returns a plan_required refusal
  - `history_days` integer, required: how long messages are retained, in days; 0 means forever
  - `lines` object: every line's plan and limits, present only for the workspace view
  - `max_attachment_mb` integer, required: largest attachment this plan can send, in MB; 0 means unlimited
  - `messages_1h` MessageMeter, required
    - `limit` integer, required: messages allowed in this window; 0 means the plan does not cap it
    - `unlimited` boolean, required: true when this plan does not cap this window
    - `used` integer, required: messages sent in this window so far
  - `messages_24h` MessageMeter, required
    - `limit` integer, required: messages allowed in this window; 0 means the plan does not cap it
    - `unlimited` boolean, required: true when this plan does not cap this window
    - `used` integer, required: messages sent in this window so far
  - `plan` string, required: the plan's slug, e.g. free, starter, pro — an identifier; show display_name to a person
  - `refusal` Refusal
    - `account_status` string: when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked
    - `account_status_reason` string: the detail of account_status, e.g. no_egress, stopped, no_plan
    - `message` string, required: a human-readable explanation
    - `reason` string, required: why the call was declined
    - `refused` boolean, required: true when the call was declined rather than performed
    - `retry_after_seconds` integer: seconds to wait before retrying; absent or 0 means retrying will not help
    - `since` string: when the number stopped working, RFC3339, when known
  - `server_build_date` string, required: when that version was built
  - `server_version` string, required: the version of this MCP service
  - `voice_plan` VoicePlanView, required
    - `calls_ai` boolean, required: whether your plan allows connecting an AI agent to your calls
    - `calls_inbound` boolean, required: whether an incoming WhatsApp call may ring your SIP PBX
    - `calls_outbound` boolean, required: whether your SIP PBX may place WhatsApp calls
    - `label` string, required: the voice plan's name as the customer sees it
    - `name` string, required: the voice plan's slug — an identifier; show label to a person
    - `sip` boolean, required: whether your calls may connect to a SIP phone or your own PBX
    - `webrtc` boolean, required: whether you may take and place your calls from the browser
  - `webhooks_enabled` boolean, required: whether this plan can register inbound webhooks

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error

---

[API](https://skmtc.dev/whatsmcp/apis/whatsmcp-api.md) · [All operations](https://skmtc.dev/whatsmcp/apis/whatsmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/whatsmcp/apis/whatsmcp-api/revisions/719dc99224ce?raw)
