Skip to main content
Reactor uses pay-as-you-go pricing. You only pay for the time your session is actively holding a GPU. There is no subscription, minimum spend, or seat fee.
When you sign up, your account gets a free starting balance so you can try Reactor before you add a payment method. See the Dashboard for your current balance.

How pricing works

Reactor is a real-time streaming platform, so you pay for session time. Reactor meters each session per second of wall-clock time while it holds a GPU, even when you send no commands and receive no media. The prices below are in US dollars per minute, and your Dashboard balance is in US dollars.
You pay for the GPU, not the generation. Once a session reaches ready, the meter runs for every second the GPU is held for you, even if you are idle and not sending commands or receiving media. The same applies to recoverable disconnects: the GPU stays reserved on your behalf, so billing continues until the session is terminated.
Billable metrics are subject to change.

Models


Adding funds

Your balance is what the Terms of Service call Service Credits. It is shown in US dollars and has no cash value. You add funds up front and draw them down as your sessions run. Reactor sets these limits, and the pricing endpoint below returns the current values, so you can read them at runtime instead of hard-coding them. Auto top-up, on the Billing page, adds funds for you. Pick a threshold and an amount. When your balance falls below the threshold, Reactor adds that amount. Both values are whole dollars. Each part of your balance has its own expiry date. The date depends on how you got it:
  • Free starting balance expires 90 days after Reactor adds it to your account.
  • Purchased funds, including auto top-ups, expire 365 days after Reactor adds them.
  • Promotional balance from a promo code follows the expiry rule of that code.

When billing starts and stops

Sessions move through a four-state lifecycle. Billing follows the lifecycle precisely: The meter starts the moment your session reaches ready and runs until the session is terminated, not until your network connection drops. In a shared session, only the session creator’s termination stops the meter. A client that adopted the session and then disconnects does not stop billing; the session keeps running for its owner.
Billing lifecycle: connecting and waiting are free; the meter starts at ready and keeps running through a recoverable disconnect while the GPU stays reserved, stopping only when the session terminates

Recoverable disconnects

If you disconnect with recoverable=true, the GPU keeps your session alive on the server so you can reconnect later. Because the GPU is held for you, a recoverable session continues to bill while it waits for you to reconnect.
Use recoverable=true only when you actually expect the user to come back within seconds. For everyday “the user closed the tab” cases, prefer the default disconnect so you stop paying immediately.

Minimizing cost

A few patterns that materially reduce spend:
  • Disconnect when idle. A connected session with no commands flowing still bills. Tear it down as soon as the user navigates away or finishes their task.
  • Default to non-recoverable disconnects. Recoverable sessions are useful, but they keep a GPU reserved (and metered) until you reconnect or the session times out.
  • Don’t pre-warm sessions speculatively. Time spent in connecting and waiting is free, so there is no benefit to opening sessions before the user is ready to interact.
  • Cap session length on the client. For interactive demos, set a hard timeout (e.g. five minutes) so a user who walks away from their browser does not run up the bill.

Usage tracking

Coming soon. Programmatic usage and billing endpoints are in development. For now, check the Dashboard for your current balance and spend.

Fetch pricing programmatically

Reactor exposes a public, read-only endpoint that returns the current pricing economics and, where available, the catalog of publicly-priced models. Use it to render up-to-date pricing on a marketing page, drive an in-app billing flow, or replace hard-coded numbers in client code. The endpoint reports the rate of each model per second, as a decimal string such as "0.0017". Multiply it by 60 for the per-minute prices shown above. Send a GET request to https://api.reactor.inc/pricing. No authentication is required.

Response

200 OK
Prices and balances are in US dollars. Fields that end in _dollars are whole-dollar integers, and fields that end in _usd are decimal strings. The response also has five fields in the internal ledger unit of Reactor (10,000 per US dollar). They are credits_per_dollar, max_account_credits, auto_topup.max_threshold_credits, rate.amount_per_sec, and rate.unit. Reactor keeps them for backward compatibility. Do not build against them.
The models field may be omitted from responses while the public catalog is rolling out. Treat an absent field and an empty array as semantically equivalent in your application logic. Once the rollout is complete the field will always be present.

Next steps

Sessions

Understand the connection lifecycle that billing is anchored to.

Dashboard

Check your usage, balance, and current spend.

Rate Limits

Concurrent session limits, token TTL, and error handling.