> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reactor.inc/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To build and serve your own model, start at /deploy/development/quickstart and /deploy/development/overview. Deploying is the default path: reactor init scaffolds a workspace, reactor auth login authenticates, and reactor model deploy registers the model, publishes the release with the weights/ folder, and activates it on Reactor's GPUs, in one command from that workspace. Docker must be running, because the publish step builds the image locally. Bump model.version in reactor.yaml before redeploying a change, because a release that already has an image is reactivated as it is. Deployment access is granted per account, so contact team@reactor.inc if a deploy is refused. Every key in reactor.yaml is documented at /deploy/platform/reactor-yaml. Model code imports reactor_runtime; Python client code imports reactor_sdk. The runtime overview explains the model interface. Running the model on your own machine with reactor run is optional and needs a GPU you attach with --gpus; /deploy/development/local-testing covers that loop and pairs a complete brightness model with a Python client test in a separate brightness-test workspace.
> Reactor hosts multiple models, each with its own connect slug (modelName) and command/event schema. The video model catalog — slug, typed SDK package, and links to its schema — is at /model-api-reference/overview. Robotics policy documentation starts at /robotics/overview; The launch policies are Cosmos Nano DROID (/robotics/cosmos/nano-policy-droid/), DreamZero DROID (/robotics/dreamzero/droid/), and FLUX Action DROID (/robotics/flux-action/droid/), organized by model family and embodiment. Some models expose one slug per experience (e.g. HappyOyster); always take the slug from the model's own pages, never guess it.
> Fastest path to a working app: `npx create-reactor-app my-app --model=<slug>` scaffolds a complete app with secure auth wired up. Typed TypeScript SDKs are published as @reactor-models/<model>; Python uses the base reactor-sdk package.
> Auth: exchange an API key (rk_...) for a JWT via POST https://api.reactor.inc/tokens from your server. Never put the API key in client-side code.
> Append .md to any docs URL for clean Markdown. Search these docs via the MCP server at https://docs.reactor.inc/mcp.

# Get public pricing

> Returns the platform's purchase settings and the catalog of publicly priced models. No
credential is required, and the response is safe to cache at the edge or call from a
browser.

Call it without an `Authorization` header. Any `Authorization` header makes the response
`Cache-Control: private` instead of `public`. A session token from `POST /tokens` is
rejected with `403`.

Every response carries a strong `ETag`. Send it back in `If-None-Match` and the API
answers `304 Not Modified` with no body while the data is unchanged. Responses also carry
`Vary: Authorization`.




## OpenAPI

````yaml /openapi.yaml get /pricing
openapi: 3.1.0
info:
  title: Reactor Platform API
  version: '1'
  description: >
    The Reactor Platform API mints session tokens, starts and operates sessions,
    negotiates media

    transport, and manages your account, models, and deployments. Every path is
    relative to

    `https://api.reactor.inc`. See the
    [Introduction](/platform-api/introduction) and

    [Authentication](/platform-api/authentication) pages for credentials,
    versioning, and errors.
  contact:
    name: Reactor support
    url: https://docs.reactor.inc/resources/support
servers:
  - url: https://api.reactor.inc
    description: Production
security:
  - apiKey: []
tags:
  - name: Status
    description: >-
      Public, unauthenticated endpoints for service health, pricing, and the
      values the API accepts.
  - name: Tokens
    description: >
      Exchange a long-lived API key for a short-lived, session-scoped token that
      a client can use

      to create and operate sessions without holding the key.
  - name: Users
    description: >
      Read your own user record, your account's roster, and account memberships,
      and manage

      member roles as an account admin.
  - name: API Keys
    description: >-
      Revoke API keys. Use the [Dashboard](https://reactor.inc/dashboard) to
      list or create keys. The CLI can also create a key with `reactor auth
      login`.
  - name: Sessions
    description: >
      Create, inspect, and end sessions. A session holds one running model for
      one client

      application; media and messages flow over a transport you attach to it
      afterwards.
  - name: Transport
    description: >
      Attach a client to a session. WebRTC signaling carries ICE servers, SDP,
      and ICE candidates;

      a LiveKit room connection lets the session join a room you host.
  - name: Files
    description: >
      Upload files a model reads, either for one running session or ahead of
      time for sessions you

      have not started yet.
  - name: Recordings
    description: >
      Fetch the recorded video of a session as an HLS playlist, during the
      session or after it ends.
  - name: Accounts
    description: >
      Read and manage the account your credential acts in: its name and slug,
      its credit

      balance, its effective quotas, and its accelerator capacity.
  - name: Invitations
    description: >
      Invite people to your account by email, and manage pending invitations.
      The recipient

      accepts from the emailed link while signed in to the dashboard.
  - name: Usage
    description: >
      List the sessions your account has run, filter them by status, date,
      model, or API key,

      and read exact session totals for a date window.
  - name: Models
    description: >
      Register, read, update, and delete the models your account serves, and
      list the models you can

      use. The `reactor model` CLI commands are built on these endpoints.
  - name: Releases
    description: >
      Register a model's versioned releases, push their container image, and
      deploy a release with a

      per-region instance plan.
  - name: Model Weights
    description: >
      Upload and inspect the weights bundle of a release: single-request
      uploads, multipart uploads

      for large files, and the server-side finalize that marks a bundle
      complete.
  - name: Model Schemas
    description: >
      Attach an OpenAPI schema to a release that describes the model's commands,
      messages, and

      tracks. Schemas of public models are readable without credentials.
  - name: Model Access
    description: |
      Share a private model with other accounts, one environment at a time.
  - name: Projects
    description: >
      A project is the deploy identity of a model you serve on Reactor. Each
      model is one

      project, with its own UUID. Creating a project also creates its
      `production` environment.
  - name: Environments
    description: >
      An environment is a named deploy target of a project, such as `production`
      or `staging`.

      Each write to an environment creates its next revision, and the newest
      revision is what the

      environment runs. Environment access grants let another account start
      sessions on one

      environment.
  - name: Revisions
    description: >
      A revision is an immutable, numbered snapshot of one environment: its
      model image, weights,

      resources, instances, and variables. An environment's revisions, newest
      first, are its change

      log.
  - name: Images
    description: >
      Model images are the container images pushed to your model's repository,
      named by digest.

      Experimental: this API can change without notice.
  - name: Weight Sets
    description: >
      A weight set is a version-2 weights bundle, named by its set digest. Push
      the files, then put

      the manifest. Available when weight sets are enabled for your account.
      Experimental: this API

      can change without notice.
  - name: Tags
    description: >
      A tag is a movable name on one model image or one weight set of a project.
      A release of the

      model is a read-only tag. Experimental: this API can change without
      notice.
paths:
  /pricing:
    get:
      tags:
        - Status
      summary: Get public pricing
      description: >
        Returns the platform's purchase settings and the catalog of publicly
        priced models. No

        credential is required, and the response is safe to cache at the edge or
        call from a

        browser.


        Call it without an `Authorization` header. Any `Authorization` header
        makes the response

        `Cache-Control: private` instead of `public`. A session token from `POST
        /tokens` is

        rejected with `403`.


        Every response carries a strong `ETag`. Send it back in `If-None-Match`
        and the API

        answers `304 Not Modified` with no body while the data is unchanged.
        Responses also carry

        `Vary: Authorization`.
      operationId: getPricing
      parameters:
        - name: If-None-Match
          in: header
          required: false
          description: >-
            The `ETag` from a previous response. A match returns `304` with no
            body.
          schema:
            type: string
            example: '"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"'
      responses:
        '200':
          description: The current pricing snapshot.
          headers:
            Cache-Control:
              description: >
                `public, max-age=60, stale-while-revalidate=900` without an
                `Authorization`

                header; `private, max-age=60, stale-while-revalidate=900` with
                one.
              schema:
                type: string
                example: public, max-age=60, stale-while-revalidate=900
            ETag:
              description: >-
                A strong validator for the response body. Send it in
                `If-None-Match`.
              schema:
                type: string
                example: >-
                  "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
            Vary:
              description: Always `Authorization`.
              schema:
                type: string
                example: Authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityPricing'
              example:
                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: 3dc9e64e-ebc1-4824-a63b-2ad0dbb15ca8
                    name: fast-h3
                    rate:
                      amount_per_sec: 350
                      amount_per_sec_usd: '0.0350'
                      currency_code: USD
                      unit: credits
                      denomination: second
                  - id: 2d4dc0f2-a144-4459-ba3b-2b7183a6d709
                    name: eden-live
                    rate:
                      amount_per_sec: 17
                      amount_per_sec_usd: '0.0017'
                      currency_code: USD
                      unit: credits
                      denomination: second
        '304':
          description: >-
            Not modified. The data matches the `ETag` you sent; reuse your
            cached copy.
          headers:
            ETag:
              description: The current validator, unchanged.
              schema:
                type: string
        '403':
          description: >-
            A session token from `POST /tokens` was sent. Call this endpoint
            without credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security: []
components:
  schemas:
    IdentityPricing:
      type: object
      required:
        - settings
      properties:
        settings:
          $ref: '#/components/schemas/IdentityPricingSettings'
        models:
          type: array
          description: >
            The publicly priced models. Treat an absent field the same as an
            empty array.
          items:
            $ref: '#/components/schemas/IdentityPricingModel'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: >-
            A stable error code (for example `not_found`) on newer routes, or a
            sentence on older ones. When `message` is present, branch on
            `error`.
        message:
          type: string
          description: >-
            A human-readable explanation. Do not parse it; its wording may
            change.
        resource:
          type: string
          description: The type of the resource a `not_found` refers to.
        reason:
          type: string
          description: >-
            A more specific cause for `failed_precondition`, `aborted`, and some
            `invalid_request` errors.
    IdentityPricingSettings:
      type: object
      description: Platform-wide purchase settings.
      required:
        - credits_per_dollar
        - purchase
        - auto_topup
        - max_account_credits
        - currency_code
      properties:
        credits_per_dollar:
          type: integer
          format: int64
          description: Credits per US dollar. Fixed at `10000`.
          example: 10000
        purchase:
          type: object
          required:
            - min_dollars
            - max_dollars
          properties:
            min_dollars:
              type: integer
              format: int64
              description: Smallest one-time credit purchase, in whole dollars.
              example: 1
            max_dollars:
              type: integer
              format: int64
              description: Largest one-time credit purchase, in whole dollars.
              example: 1000
        auto_topup:
          type: object
          required:
            - min_dollars
          properties:
            min_dollars:
              type: integer
              format: int64
              description: Smallest automatic top-up amount, in whole dollars.
              example: 5
            max_threshold_credits:
              type: integer
              format: int64
              description: >
                The highest balance threshold an automatic top-up can be set at,
                in credits.

                Omitted when `max_account_credits` is `0`. A value of `0` means
                the balance cap

                leaves no room for an automatic top-up.
            max_threshold_usd:
              type: string
              description: >-
                `max_threshold_credits` in US dollars, to four decimal places.
                Present whenever `max_threshold_credits` is.
        max_account_credits:
          type: integer
          format: int64
          description: >-
            The largest balance an account may hold, in credits. `0` means no
            cap.
          example: 0
        max_account_credits_usd:
          type: string
          description: >-
            `max_account_credits` in US dollars, to four decimal places. Omitted
            when it is `0`.
        currency_code:
          type: string
          description: >-
            ISO 4217 code for every `*_usd` field under `settings`. Always
            `USD`.
          example: USD
    IdentityPricingModel:
      type: object
      required:
        - id
        - name
        - rate
      properties:
        id:
          type: string
          format: uuid
          description: The model's ID.
        name:
          type: string
          description: >
            The model's short name, without its owner (for example `fast-h3` for

            `reactor/fast-h3`). Use the full `owner/name` when you create a
            session.
        rate:
          type: object
          required:
            - amount_per_sec
            - amount_per_sec_usd
            - currency_code
            - unit
            - denomination
          properties:
            amount_per_sec:
              type: integer
              format: int64
              description: The rate, in `unit` per `denomination`.
              example: 350
            amount_per_sec_usd:
              type: string
              description: The rate in US dollars per second, to four decimal places.
              example: '0.0350'
            currency_code:
              type: string
              description: ISO 4217 code for `amount_per_sec_usd`. Always `USD`.
              example: USD
            unit:
              type: string
              enum:
                - credits
              description: The unit of `amount_per_sec`.
            denomination:
              type: string
              enum:
                - second
              description: The billing period. Usage is metered per second.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        A Reactor API key (`rk_...`), sent as `Authorization: Bearer rk_...`.
        Keep it on a server.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.