GET /v1/credits returns base credit rates, excluding the premium-egress per-MB rate.
GET /v1/usage
Month-to-date usage against the plan, the key’s throttles, and premium egress by exit type. Readremaining here rather than waiting for a 402.
Auth: Bearer API key. No body.
GET /v1/credits
The wallet balance and base credit rates. Developer and Team use card billing as described above; these rates do not imply per-call wallet debits on those plans.POST /v1/credits/redeem
Redeem a promo code into the wallet. Single use per account. Request:{"code": "..."} (promo is accepted as an alias). Codes are matched case-insensitively.
ok: true, granted (the credits added) and balance (the new balance); the new balance applies to the very next call.
Errors:
What each route costs
The table uses the example credit rates above for Free and credit-funded accounts. ReadGET /v1/credits for current base rates. Session creation, browser time, actions and egress are separate charges; an unsuccessful page read can still incur session or traffic charges.
Traffic through a residential, ISP or mobile exit is billed per MB at the premium rate instead of the datacenter rate, and counted against the plan’s included premium egress.
Premium egress
Traffic through a custom proxy does not count against the Tilion premium proxy allowance. Browser time is billed as usual. Every byte a session moves through a paid exit (residential, ISP or mobile, chosen withresidential: true, proxy_type, stealth: "max" or a geo target on create, or spent by self-healing on a blocked page) is metered by exit type and reported in premium_egress_usage. The plan’s included GB is shared by all types; past it, each GB is invoiced at the graduated prices in prices_usd_per_gb on a plan with overage, and refused on a plan without it. Datacenter sessions keep working either way.
Refusals you can get:
premium_required
POST /v1/fetch and POST /v1/extract do not fail when a page can only be reached through a paid exit you cannot use. They answer 200 with the outcome they could reach (status challenged, hard_blocked or similar) and set premium_required to a sentence saying what would unlock it: that this month’s included premium egress is used up and the plan needs an upgrade, or that the wallet needs more credits for residential unlock and CAPTCHA solving. It is null on every other answer.