# Plan

1 endpoint for plan, with parameters and a real response example.

## GET /plan

**Get the plan and quote a change**

The workspace's plan (posts per month, Instagram accounts, billing period, currency, what the next renewal charges, trial end), the posts available right now, and the price table in the plan's currency: the 4, 12 and 30 post tiers, monthly and annual, and the one-time post packs. `plan` is `null` when the workspace never subscribed. Send `posts`, `accounts` or `period` to quote a change: `target` is the new price, and `change.kind` predicts how it would happen (`upgrade_now` charges the prorated difference and adds `creditsNow` posts, `at_period_end` applies at renewal, `trial_swap` switches during the trial, `noop` is the same plan). The prediction is final only at checkout. `changeBlockedBy` says why a change can't be made from the app right now. Read-only: changing plan and buying packs happen in the app, at `links.changePlan` and `links.buyPack`. Amounts are in cents.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `posts` | query | integer (1 to 999) | no | Posts per month to quote a change to, 1 to 999. Up to 30 it rounds up to the next tier (4, 12, 30). Omit all three to read the plan without a quote. |
| `accounts` | query | integer (1 to 60) | no | Instagram accounts to quote, 1 to 60. Defaults to the current plan's. |
| `period` | query | "monthly" | "annual" | no | Billing period to quote. Defaults to the current plan's. |

Response:

```json
{
  "plan": {
    "name": "pro",
    "status": "active",
    "posts": 30,
    "accounts": 1,
    "period": "monthly",
    "currency": "BRL",
    "renewalCents": 29900,
    "listPriceCents": 29900,
    "isLegacyPrice": false,
    "trialEndsAt": null,
    "currentPeriodEnd": "2026-11-06T12:00:00+00:00",
    "cancelAtPeriodEnd": false,
    "hasEverPaid": true,
    "billedManually": false
  },
  "availableCredits": 21,
  "firstMonthDiscount": false,
  "priceTable": {
    "currency": "BRL",
    "annualDiscount": 0.4,
    "includedAccounts": 1,
    "maxPosts": 999,
    "maxAccounts": 60,
    "tiers": [
      {
        "posts": 4,
        "monthlyCents": 19900,
        "annualTotalCents": 143280,
        "annualPerMonthCents": 11940
      },
      {
        "posts": 12,
        "monthlyCents": 24900,
        "annualTotalCents": 179280,
        "annualPerMonthCents": 14940
      },
      {
        "posts": 30,
        "monthlyCents": 29900,
        "annualTotalCents": 215280,
        "annualPerMonthCents": 17940
      }
    ],
    "packs": [
      {
        "posts": 30,
        "amountCents": 29900
      },
      {
        "posts": 100,
        "amountCents": 84900
      },
      {
        "posts": 200,
        "amountCents": 149900
      }
    ]
  },
  "target": {
    "posts": 12,
    "accounts": 1,
    "period": "monthly",
    "currency": "BRL",
    "isStandardTier": true,
    "monthlyCents": 24900,
    "annualTotalCents": 179280,
    "annualPerMonthCents": 14940,
    "renewalCents": 24900,
    "items": [
      {
        "kind": "tier",
        "tier": 12,
        "amountCents": 24900
      }
    ]
  },
  "change": {
    "kind": "at_period_end",
    "creditsNow": 0,
    "currentMonthlyCents": 29900,
    "targetMonthlyCents": 24900
  },
  "changeBlockedBy": null,
  "links": {
    "changePlan": "https://app.posttar.com/app?page=settings&tab=billing",
    "buyPack": "https://app.posttar.com/app?page=settings&tab=billing"
  }
}
```
