Updated March 2026
GET /api/account returns your plan info and every API response includes _meta with your current limits. But for a dedicated usage overview, call GET /api/account with your API key and check the _meta block in the response.
Every authenticated API response includes a _meta object. It contains your plan name, your limits (forms, pages, submissions, webhooks, customDomains, storageBytes), and upgrade suggestions if you are approaching a limit. This means you do not need a separate call -- any API response tells you where you stand.
The limits object shows the maximum for each resource on your plan. Free: 10 projects (forms, pages, analytics, webhooks, and automations combined), 100 submissions per form, 1 webhook, 0 custom domains, 20 MB storage. Pro ($29/month): 100 projects, unlimited submissions, unlimited webhooks, 5 custom domains, 2 GB storage. Scale ($99/month): unlimited everything.
For programmatic quota checks, call GET /api/account and inspect _meta.limits. Compare against your current resource counts from GET /api/forms (total forms), GET /api/pages (total pages), or GET /api/analytics/sites (total analytics sites).
This works with both trial and permanent API keys. Trial keys show the same _meta block plus a claim section with your deadline and claim URL.
If you are building automation that creates resources, check the limits before creating. A 403 response with a plan_restricted error means you have hit a quota. The error includes a suggestion to upgrade and the URL for the pricing page.
# Check your account and see _meta with limits
curl https://sutrena.com/api/account \
-H "Authorization: Bearer st_live_your_key"
# Response includes _meta:
# {
# "plan": "pro",
# "email": "[email protected]",
# ...
# "_meta": {
# "plan": "pro",
# "limits": {
# "projects": 100,
# "submissions": -1,
# "webhooks": 10,
# "customDomains": 5,
# "storageBytes": 2147483648
# },
# "upgrade": {
# "message": "Upgrade to Scale for unlimited everything.",
# "url": "/pricing"
# }
# }
# }