Billing & credits
How plans, the monthly pin quota, and credits fit together, and where each is managed.
Plans
PinBridge has five plans: Playground, Starter, Growth, Agency, and Enterprise. Each includes the full publishing pipeline; higher plans raise the monthly pin quota, the number of connected Pinterest accounts, storage, and features like uploaded assets, bulk imports, and team roles.
For current prices and the per-plan feature list, see /pricing/. The per-plan pin quotas and account limits are summarized on Rate limits & quotas.
The API plan enum value for the Agency plan is pro. Enterprise is sold as “Custom” and is not part of the self-serve catalog.
Check your current plan, usage, and quota at any time:
curl https://api.pinbridge.io/v1/billing/status \
-H "X-API-Key: $PINBRIDGE_API_KEY"
What counts against your quota
Each plan has a monthly pin-creation quota. Only successful new pin creations count against it. That includes direct POST /v1/pins, successful import rows, and successful scheduled publishes.
Reads, auth, board sync, webhooks, invalid rows, and idempotent retries do not count. When the monthly quota is exhausted, POST /v1/pins returns 402 with error code quota_exceeded (or credits_exhausted when credits are enabled but the balance is 0).
Credits
Credits are top-up packs that let you keep publishing after the monthly quota is used up. They are one-time purchases (Stripe Checkout), not a subscription.
| Pack | Pins | Price |
|---|---|---|
| Small | 200 | $8.00 |
| Medium | 500 | $17.50 |
| Large | 1,500 | $45.00 |
| XLarge | 3,000 | $75.00 |
Consumption order: the monthly plan quota is always consumed first. Only after the monthly quota is exhausted does PinBridge debit 1 credit per successful publish. If the quota is exhausted and there are no credits, the publish is rejected with 402 credits_exhausted.
Eligibility: credits are available only on paid, non-trial workspaces. Free (Playground) and trial workspaces cannot buy or consume credits.
Upgrading
Move to a higher plan through Stripe Checkout, or manage an existing subscription and payment method through the billing portal:
# Start a checkout session for a plan change
curl -X POST https://api.pinbridge.io/v1/billing/checkout \
-H "X-API-Key: $PINBRIDGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "plan": "growth" }'
# Open the customer billing portal
curl -X POST https://api.pinbridge.io/v1/billing/portal \
-H "X-API-Key: $PINBRIDGE_API_KEY"
The Python SDK covers these as client.billing.checkout(...), client.billing.portal(), client.billing.pricing(), and client.billing.status(). See the Python SDK.
Cancel and resume
You can cancel a paid subscription and later resume it:
- Cancel:
POST /v1/billing/cancel - Resume:
POST /v1/billing/resume
Manage both from the billing portal (POST /v1/billing/portal), which opens Stripe’s customer portal.
While a paid plan is not active or trialing, publishing is blocked with 402 billing_inactive until the payment method or subscription is restored.
API-only endpoints
Some billing operations exist in the API but have no Python SDK method, so call them over HTTP directly:
- Credits:
GET/POST /v1/billing/credits/*(view balance and buy packs). - Cancel:
POST /v1/billing/cancel. - Resume:
POST /v1/billing/resume.
client.billing in the SDK exposes only pricing, checkout, portal, and status.
Next steps
- Rate limits & quotas — token buckets and per-plan quotas.
- Pricing — current prices and per-plan features.
- Python SDK — read billing status and start checkout from code.
- Authentication — get an API key first.
