Pricing & billing

The unit is the Polis token. One number you spend, with a visible balance and a monthly reset. You see the exact token cost before every run (polis_estimate). Standard rate: $5 per 1,000 tokens.

Free trial

Every new account gets 200 free trial tokens (no card). You can run tests that fit within your balance immediately. Subscribe for usage beyond the trial.

Plans

PlanPrice/moIncluded tokensPer-token
Starter$51,000standard
Pro$5012,500~20% cheaper
Scale$20055,000~27% cheaper

Beyond the included tokens, usage is strictly metered at the standard rate ($5/1,000) and billed via Stripe. The higher tiers are a discount on the included bucket. Every account has a monthly spend limit (default $25); runs that would exceed it are blocked before any charge. No surprise bills.

Token cost of a run

tokens = 60 (base: persona generation + synthesis)
       + persona_count x 1 (text)  or  x 3 (visual URL)
       + 8 (only for url content)
       + 2/1k tokens of artifact beyond the first 1k,
         scaled by persona_count (long content is shown to every persona)

The per-persona term is multiplied by the detail level: snapshot 1x, standard 1.5x (default), deep 2.5x. Follow-ups (polis_ask) cost a small base plus per persona answered; polis_ask with target: panel costs roughly one cheap reaction per persona. Always estimate first.

Example: 100 personas on a tweet at standard detail = 60 + 100 x 1.5 = 210 tokens = $1.05. Pass content to polis_estimate for an exact quote on long articles.

Rough costs by scenario

These are computed from the live pricing formula, so they match what you are actually charged. Persona count is the biggest lever; a screenshot (visual url) run costs more per persona than a text run; long content adds a little because every persona sees it.

ScenarioPolis tokensApprox. cost
Tweet / short post, 100 personas210$1.05
Quick text test, 25 personas98$0.49
Website (scrape text), 100 personas218$1.09
Website (screenshot, vision), 100 personas518$2.59
Website (screenshot, vision), 200 personas968$4.84
Long article (~3k words), 150 personas293$1.47
Large run, 500 personas, tweet810$4.05

A screenshot (url + visual) run is roughly 3x the per-persona cost of a text run, because vision-capable models are pricier and the page image is sent to every persona. copy mode (scrape the text) is the cheap way to test a page's message; visual is for testing the actual design.

Always call polis_estimate first. Tokens for runs that fail before producing a report are refunded automatically.

Payment options

Polis supports a few ways to pay. Use whichever fits the situation; you can always start with the trial.

1. Free trial (default for every new account)

Every new account is granted 200 trial tokens on creation, with no card. Use them first — for many small runs this is enough on its own. The trial is one-time; once exhausted, choose one of the paths below.

2. Human subscription (default for paid usage)

The expected path when a human is in the loop.

checkout_url returned by /api/provision).

to active; included allowance + metered overage at the standard rate kick in; the spend limit caps the worst case.

own line and put the plain URL on the line below — a raw inline URL wraps badly in most CLIs and becomes unclickable.

3. Agent one-off top-up (no human required)

For autonomous agents that can complete payment themselves (Stripe Agent Toolkit + a Link agent wallet or SPT).

topup_pack of small | medium | large | scale) when calling /api/provision — the response includes a topup_url.

topup_packs_available on polis_account — it returns a pay_url.

agent completes pay_url directly. Tokens land on the account when Stripe settles (checkout.session.completed / payment_intent.succeeded, idempotent). Pack discounts mirror the subscription tiers.

4. HTTP 402 / MPP per-call challenge (future)

A full Machine Payments Protocol flow (per-call HTTP 402 with an agent-pay challenge) is a planned future direction, not currently exposed.

How to choose


All docs

Polis docs index · Full machine-readable index (llms.txt) · Everything inlined (llms-full.txt)