Log inSign up free
  • Home
  • Profile
  • Jobs
    • Applications
    • Career
    • Resume
    • Cover letters
  • Content
    • Posts
    • Media
  • Messages
  • Analytics
    • Overview
    • Pages
  • Portfolio
  • More tools
    • Hiring
  • Settings
All jobs
REReactor logo

Reactor

Location not stated

Pricing & Billing.

Documentation Index

Fetch the complete documentation index at: /llms.txt

Use this file to discover all available pages before exploring further.

Skip to main content

Private beta · Reactor Serve is available by invitation. Request access

Reactor home pagelight logodark logo
Search...
⌘K

    Get Started

    • Overview
    • Quickstart
    • Authentication

    Concepts

    • Models
    • Sessions
    • Tracks
    • Frame Metadata
    • Commands & Messages
    • File Uploads
    • Recordings

    SDK Reference

    • Using the SDK
    • Typed Model SDKs
    • JavaScript
    • React
    • Python
    • C++
    • Swift
    • Java

    Resources

    • Build with AI agents
    • Support & Feedback
    • Pricing & Billing
    • Rate Limits
    • Content Moderation
    • FAQ
    • GitHub
    • Dashboard
    Build Apps
    Model APIs
    Serve Models
    Robotics (Beta)
    Guides
    Release Notes

    Private beta · Reactor Serve is available by invitation. Request access

    Reactor home pagelight logodark logo
    Search...
    ⌘KAsk Assistant⌘I
    • GitHub
    • Dashboard
    • Dashboard
    Search...
    Navigation
    Resources
    Pricing & Billing
    Build Apps
    Model APIs
    Serve Models
    Robotics (Beta)
    Guides
    Release Notes
    1. Resources

    Pricing & Billing

    Copy pageCopy page

    How Reactor charges for sessions, when billing starts and stops, and how to track usage

    Copy pageCopy page
    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.
    DetailValue
    Minimum purchase$1
    Maximum per transaction$1,000
    Minimum auto top-up$5
    AmountsWhole dollars only
    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:
    StateBilled?Why
    disconnectedNoNo session exists
    connectingNoNegotiating with Reactor; no GPU has been assigned yet
    waitingNoReactor is allocating a GPU on your behalf
    readyYesA GPU is dedicated to your session and is producing media for you
    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.
    JavaScript
    Python
    // Releases the GPU immediately. Billing stops.
    await reactor.disconnect();
    
    // Holds the GPU for reconnection. Billing continues.
    await reactor.disconnect(true);
    
    # Releases the GPU immediately. Billing stops.
    await reactor.disconnect()
    
    # Holds the GPU for reconnection. Billing continues.
    await reactor.disconnect(recoverable=True)
    
    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.
    cURL
    JavaScript
    Python
    curl -i https://api.reactor.inc/pricing
    
    const res = await fetch("https://api.reactor.inc/pricing");
    const pricing = await res.json();
    
    const helios = pricing.models?.find((m) => m.name === "helios");
    const dollarsPerSecond = helios?.rate.amount_per_sec_usd;
    
    import httpx
    from decimal import Decimal
    
    pricing = httpx.get("https://api.reactor.inc/pricing").json()
    
    helios = next((m for m in pricing.get("models", []) if m["name"] == "helios"), None)
    dollars_per_second = Decimal(helios["rate"]["amount_per_sec_usd"]) if helios else None
    

    ​
    Response

    200 OK
    {
      "settings": {
        "credits_per_dollar": 10000,
        "purchase": {
          "min_dollars": 1,
          "max_dollars": 1000
        },
        "auto_topup": {
          "min_dollars": 5
        },
        "max_account_credits": 0,
        "currency_code": "USD"
      },
      "models": [
        {
          "id": "f7d3a8b2-1c4e-4d2a-9b6f-0d8e3c1b5a47",
          "name": "helios",
          "rate": {
            "amount_per_sec": 17,
            "amount_per_sec_usd": "0.0017",
            "currency_code": "USD",
            "unit": "credits",
            "denomination": "second"
          }
        }
      ]
    }
    
    FieldTypeAlways presentDescription
    settings.purchase.min_dollarsintegeryesMinimum self-serve top-up amount, in whole dollars.
    settings.purchase.max_dollarsintegeryesMaximum self-serve top-up amount, in whole dollars.
    settings.auto_topup.min_dollarsintegeryesMinimum auto top-up amount, in whole dollars.
    settings.auto_topup.max_threshold_usdstringnoHighest balance threshold you can set for an auto top-up, in US dollars. Omitted when no cap is enforced.
    settings.max_account_credits_usdstringnoAccount balance ceiling, in US dollars. Omitted when no cap is enforced.
    settings.currency_codestringyesISO 4217 currency code for every *_usd field under settings. Currently "USD".
    modelsarraynoPublic-model catalog. May be absent during initial rollout (see note below). When present, an empty array means no publicly-priced models are listed today.
    models[].idstring (UUID)when presentModel UUID.
    models[].namestringwhen presentModel name (e.g. "helios", "lingbot").
    models[].rate.amount_per_sec_usdstringwhen presentCost per second of session time, in US dollars, to four decimal places.
    models[].rate.currency_codestringwhen presentISO 4217 currency code for amount_per_sec_usd. Currently "USD".
    models[].rate.denominationstringwhen presentCurrently "second".
    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.
    Previous
    Rate Limits
    Concurrent session limits, token TTL, and what happens when you hit a limit
    Next
    ⌘I
    Powered byThis documentation is built and hosted on Mintlify, a developer documentation platform

    On this page

    Back to top
    • How pricing works
    • Models
    • Adding funds
    • When billing starts and stops
      • Recoverable disconnects
    • Minimizing cost
    • Usage tracking
    • Fetch pricing programmatically
      • Response
    • Next steps
    Assistant
    Responses are generated using AI and may contain mistakes.
    Pay
    Not stated
    Where
    Not stated
    Work
    Not stated
    Type
    Not stated
    Posted
    26 Oct, 2026
    Apply on the original postingSign in to apply

    Unverified board

    more at Reactor.

    26 Oct, 2026

    Reactor

    Legal

    REReactor logo
    • Finance & Legal

    Location not stated

    Salary not listed

    Details
    26 Oct, 2026

    Reactor

    Legal

    REReactor logo
    • Finance & Legal

    Location not stated

    Salary not listed

    Details
    26 Oct, 2026

    Reactor

    Brand assets

    REReactor logo
    • Sales & Marketing

    Location not stated

    Salary not listed

    Details

    similar roles.

    22 Oct, 2026

    Roche

    Intern Soluciones Pacientes

    RORoche logo
    • Internship
    • Intern

    Mexico City Bezares, Mexico

    Internship

    Details
    22 Oct, 2026

    Roche

    Intern

    RORoche logo
    • Internship
    • Intern

    Mexico City Bezares, Mexico

    Internship

    Details