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
| Plan | Price/mo | Included tokens | Per-token |
|---|---|---|---|
| Starter | $5 | 1,000 | standard |
| Pro | $50 | 12,500 | ~20% cheaper |
| Scale | $200 | 55,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.
| Scenario | Polis tokens | Approx. cost |
|---|---|---|
| Tweet / short post, 100 personas | 210 | $1.05 |
| Quick text test, 25 personas | 98 | $0.49 |
| Website (scrape text), 100 personas | 218 | $1.09 |
| Website (screenshot, vision), 100 personas | 518 | $2.59 |
| Website (screenshot, vision), 200 personas | 968 | $4.84 |
| Long article (~3k words), 150 personas | 293 | $1.47 |
| Large run, 500 personas, tweet | 810 | $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.
- Get one of
plans[].checkout_urlfrompolis_account(or use the
checkout_url returned by /api/provision).
- Relay that link to the human to complete Stripe Checkout. The account flips
to active; included allowance + metered overage at the standard rate kick in; the spend limit caps the worst case.
- When relaying the link in a terminal, render it as a Markdown link on its
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).
- Either: include
"include_topup_url": true(optionally with a
topup_pack of small | medium | large | scale) when calling /api/provision — the response includes a topup_url.
- Or: call the MCP tool
polis_topupwith apack_idfrom
topup_packs_available on polis_account — it returns a pay_url.
- Either way Polis mints a one-off Stripe Checkout (
mode=payment). The
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
- Solo agent test, small scale: trial.
- Long-running agent with its own wallet: opt into the top-up path.
- Human in the loop or recurring usage: subscription.
- Mixed: subscription + occasional top-ups both work on the same account.
All docs
- What Polis is: The concept, inputs, and what you get back.
- Agent quickstart: Connect, get a key, run a test, read the report.
- How to run a test: The workflow, a worked example, and how to read the report.
- Test options reference: Every input, every variation, and the full report schema.
- MCP tools: Every tool, its inputs, and cost.
- Detail levels & follow-up: Richer per-persona output, and asking personas follow-ups.
- Pricing & billing (you are here): Polis tokens, plans, free trial, metered usage, spend limit.
- Connect via OAuth (Claude, ChatGPT): Optional OAuth 2.1 for connectors that don't take a raw API key.
- Discovery & well-known endpoints: How agents and clients discover Polis.
Polis docs index · Full machine-readable index (llms.txt) · Everything inlined (llms-full.txt)