GET/api/v1/plan
Retrieve plan
The plan, its status and expiry, and the plan minutes left.
GET
curl https://app.prepaid.ai/api/v1/plan \ -H "Authorization: Bearer $PREPAID_API_KEY"Response · 200
{ "workspaceId": "3f6c1e70-9a4d-4a58-b6a2-2f0f0f9d1c11", "plan": { "code": "standard", "name": "Standard", "status": "active", "expiresAt": "2026-11-20T00:00:00.000Z", "daysLeft": 21, "validityDays": 30, "includedMinutesTotal": 350, "includedMinutesLeft": 210, "callsAtOnce": 5, "numbersAllowed": 3 }}The workspace’s plan. plan is null when it has never bought one.
- planobject | nullalways present
nullon a workspace with no plan, with anotesaying so.- plan.codestringalways present
lite,standardorpro.- plan.namestringalways present
- The plan’s name.
- plan.statusstringalways present
active,graceorlapsed.- plan.expiresAtstringalways present
- When the validity window ends.
- plan.daysLeftintegeralways present
- Whole days until
expiresAt, never below 0. - plan.validityDaysintegeralways present
- Length of the validity window.
- plan.includedMinutesTotalintegeralways present
- Plan minutes in this cycle.
- plan.includedMinutesLeftintegeralways present
- Plan minutes not yet used, rounded down.
- plan.callsAtOnceintegeralways present
- Simultaneous calls the plan allows.
- plan.numbersAllowedintegeralways present
- Phone numbers the plan allows.
Response — no plan yet
{ "workspaceId": "3f6c1e70-9a4d-4a58-b6a2-2f0f0f9d1c11", "plan": null, "note": "No plan yet. Building the AI and talking to it in the browser is free; a plan puts it on a phone number."}