Skip to main content

Base URL and authentication

Every endpoint on this page takes Authorization: Bearer <YOUR_API_KEY> and needs the stats:read permission. Create a key under Settings → API keys (details). These are all reads. Changing your plan, your payment method, or your team is dashboard-only. Listing API keys and bot tokens is different: with an API key those need config:write, because a credential inventory is not a metric. An AI app connected to your account cannot use either listing at all.

GET /v1/account

Who you are and what your plan allows.
event_limit and crawl_limit look alike and do not mean the same thing. event_limit is a cap: past it, we refuse to collect unless overage_enabled is true. What crawl_limit does past the allowance depends on your plan, so read crawl_allowance_state from GET /v1/account/usage rather than comparing the two numbers yourself.
visibility_prompt_limit counts differently from site_limit. Your sites share one prompt allowance, so visibility_prompt_limit is the total across your whole account, not a per-site figure. Do not multiply it by sites_used. It also never uses 0 to mean unlimited, because every prompt is a real query we send to an answer engine on your behalf.
This endpoint does not return your email address, your Clerk user id, or your Stripe ids. It identifies an account, not a person.

GET /v1/account/usage

What you have consumed in the current billing period. This is the endpoint to poll if you want to catch an overage before the invoice does.
events_used is the unified figure: visitor events plus custom traceten.track() and conversion events. It resets at billing_period_end. The limits here are the same values GET /v1/account reports, read from the same place, so the two cannot disagree. event_limit and crawl_limit use 0 for unlimited. Check for zero before dividing:

The AI-crawl allowance

crawl_allowance_state tells you what your crawl allowance is doing right now. We calculate it from your usage, your plan and your overage setting, so you do not have to. Only capped means your numbers have stopped moving. In that state crawl_hits_used is the real total we captured up to the limit, and it stays where it is until your next billing period starts or you upgrade. Everything recorded before the limit stays available. Alert on the state, not on the arithmetic:

AI visibility

Your AI-visibility allowance is per account, across every site. All of your sites draw on one visibility_prompt_limit, so you can have room on the site you are looking at and still be at your account limit. Every other number on this page is a billing total for the account too, but this is the one where per-site intuition gives the wrong answer.
visibility_runs_used counts engine runs, not prompts. One run is one prompt, asked on one engine, once. Because each prompt is asked several times on each engine every cycle, this number is much larger than visibility_prompts_used. The two are not comparable. visibility_scan_state tells you whether new scans are being issued:
  • active: scans are running.
  • not_started: nothing has run yet this period.
  • paused_allowance: you have used the period’s scanning allowance, so we are not issuing new scans until it resets.
paused_allowance is not data loss. Every visibility figure we have already measured stays available and keeps being served in full. The only thing that stops is new measurement. Your scores, citations and competitor data are all still there, and scanning resumes at billing_period_end. You should not normally see this state: the allowance is sized above what a fully used plan needs, so reaching it usually means something went wrong on our side rather than on yours. If you see it, tell us and we will look.

GET /v1/team

The people who can act on your account, and what each of them can reach.
Read account_wide_admin, not role. An org:admin restricted to specific sites is not an account-wide admin, and every permission gate in Traceten requires both halves. Someone with role: "org:admin" and a non-null site_keys cannot create sites, mint credentials, change your plan or delete the account.
site_keys has three states, not two. null means account-wide access. A non-empty array lists the sites that member is restricted to. An empty array means they are restricted, but only to sites your own credential cannot see: the list is narrowed to your scope, so an empty one is a gap in your view, never a member with no access. Read account_wide_admin to tell the two apart; it is computed from the member’s full restriction, not from the narrowed list.
Members are identified by their id only. We do not return names or email addresses on this endpoint. Read-only. Invites, removals and role changes happen in the dashboard under Settings → Team. There is no API path for them. If we cannot read the member list, this returns 503 with error: "clerk_unavailable". Retry. We do not return an empty team, because “this account has no members” would be a false statement to cache.

Errors

Next

  • API keys to mint and revoke credentials
  • Sites to create and manage properties
  • Billing for plan changes, which stay in the dashboard