Usage & Billing
Papayya is pay-as-you-go. There is one tier, no subscription, and no seats. You're metered for the hosted execution you run, and billed on a rolling period. Steps are free: once a run is executing, the checkpointed steps inside each item add no per-step charge.
What gets metered
You pay for the hosted execution you run. These are the dimensions the dashboard surfaces; how they roll into the meter unit is settling below:
| Metric | What it counts |
|---|---|
| Runs | One per run that leaves queued — i.e. actually picks up a worker in the hosted pool |
| Items | Every item a run processed — the unit that has an outcome, a trace, and a cost |
| Steps | Recorded for the trace, not metered — steps inside an item are free |
| Input / output tokens | Recorded per LLM step for your dashboard's dollar estimates — not billed by Papayya (you bring your own key; your provider bills tokens directly) |
Failed and cancelled runs still count — if a worker started the run, the compute was consumed. Runs that hit a budget cap count through the point they were paused.
Papayya never bills for provider tokens and never marks them up. Tokens are recorded so the dashboard can show
≈ $Xestimates against your own rate card; the actual token spend lands on your invoice with Anthropic / OpenAI / Bedrock directly.
Local development is free
Running python agent.py locally with the free SDK consumes no hosted compute — you are billed only for hosted execution. Metering begins only when work lands in the hosted worker pool.
There is no free hosted compute: once your items run in Papayya's pool, they're on the meter.
Billing periods
Pay-as-you-go accrues over a rolling period:
current_period_start → current_period_end → invoice → new period beginsThe Usage view defaults to the current period but can be scoped to 7 / 30 / 90-day windows for trend analysis. At current_period_end, the period's metered items and runs are rolled up into an invoice and a fresh period begins.
Cost, budgets, and pauses
Pay-as-you-go means there's no throughput ceiling to bump into — you run what you run, and you pay for it. To keep spend bounded, set a budget cap on an agent or an individual run. When a run reaches its cap, Papayya pauses it and notifies you; in-flight items are preserved for you to resume, not thrown away. See Budget Enforcement for the pause-and-notify model.
You'll see both dimensions in the dashboard:
- Usage tile — items and runs metered this period
- Cost — the dollar amount for the same period, rolled up from per-item and per-run cost
Integer math
All costs are stored as integers — cents for per-run and per-item cost, microdollars for usage aggregates. Papayya never uses floating point for money. This matters when you're rolling up thousands of sub-cent item costs; floating-point drift would compound.
When the dashboard displays $0.1234, that's 123_400 microdollars rendered with two-decimal truncation where appropriate.
Getting usage data
CLI
papayya usage summary # metered items, runs, and cost for the current period
papayya usage breakdown # the same totals split by project / agentDashboard
The Usage page shows the current period by default: total cost, runs, items, and a per-project breakdown.
API
GET /v1/usage?from=2026-04-01&to=2026-04-30
GET /v1/usage/breakdown?from=2026-04-01&to=2026-04-30Both endpoints take an inclusive date range and return item, run, and cost totals.