> ## 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.

# List sessions started by an API key

> Lists the sessions started with one API key, newest first. A session keeps the key that
started it, even after a restart, a token refresh, or the key's revocation. Callers
with the `developer` or `account_admin` role may read their own account, including
sessions started with other members' keys.

A key with no sessions in your account returns an empty list, whether the key is
unused, unknown, or belongs to another account. Sessions created before key tracking
began are not listed. Results filter on creation time, not on usage in the window.

Results use cursor pagination. A page can be short or empty while `has_more` is still
`true`; keep requesting until `next_cursor` is `null`. Keep the filters unchanged
between pages. There is no `total`.




## OpenAPI

````yaml /openapi.yaml get /accounts/{account_id}/api-keys/{api_key_id}/sessions
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:
  /accounts/{account_id}/api-keys/{api_key_id}/sessions:
    get:
      tags:
        - Usage
      summary: List sessions started by an API key
      description: >
        Lists the sessions started with one API key, newest first. A session
        keeps the key that

        started it, even after a restart, a token refresh, or the key's
        revocation. Callers

        with the `developer` or `account_admin` role may read their own account,
        including

        sessions started with other members' keys.


        A key with no sessions in your account returns an empty list, whether
        the key is

        unused, unknown, or belongs to another account. Sessions created before
        key tracking

        began are not listed. Results filter on creation time, not on usage in
        the window.


        Results use cursor pagination. A page can be short or empty while
        `has_more` is still

        `true`; keep requesting until `next_cursor` is `null`. Keep the filters
        unchanged

        between pages. There is no `total`.
      operationId: listApiKeySessions
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - name: api_key_id
          in: path
          required: true
          description: The API key's ID, as returned when the key was created or listed.
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/AccountSessionStatus'
        - name: after
          in: query
          required: false
          description: >-
            Inclusive lower bound on `created_at`, as an RFC 3339 timestamp.
            Dates without a time are rejected.
          schema:
            type: string
            format: date-time
            example: '2026-11-01T00:00:00Z'
        - name: before
          in: query
          required: false
          description: >-
            Exclusive upper bound on `created_at`, as an RFC 3339 timestamp.
            Must be later than `after`.
          schema:
            type: string
            format: date-time
            example: '2026-12-01T00:00:00Z'
        - $ref: '#/components/parameters/AccountLimit'
        - $ref: '#/components/parameters/AccountCursor'
      responses:
        '200':
          description: A page of sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountApiKeySessionList'
              example:
                sessions:
                  - session_id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                    user_id: 3b0d7a8d-1111-4444-9999-123456789abc
                    created_by_api_key_id: 6f1d2c3b-4a5e-4f6d-8c7b-9a0e1f2d3c4b
                    model: reactor/helios
                    state: ACTIVE
                    closed: false
                    cluster: 054e2495-c685-450f-9ceb-57f185b7300a
                    region: us-west
                    created_at: '2026-11-09T14:00:00Z'
                    updated_at: '2026-11-09T14:00:04Z'
                    recording_enabled: false
                limit: 50
                has_more: false
                next_cursor: null
        '400':
          description: >
            `invalid_request` for an invalid ID, `status`, time bound, `limit`,
            or nonzero

            `offset`; `invalid_cursor` for a cursor from another query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    AccountId:
      name: account_id
      in: path
      required: true
      description: The account's ID. Use the `account_id` from `GET /me`.
      schema:
        type: string
        format: uuid
    AccountSessionStatus:
      name: status
      in: query
      required: false
      description: >-
        `active` for sessions not yet closed, `past` for closed sessions, `all`
        for both.
      schema:
        type: string
        enum:
          - all
          - active
          - past
        default: all
    AccountLimit:
      name: limit
      in: query
      required: false
      description: Page size, from 1 to 200. Values outside that range return `400`.
      schema:
        type: integer
        minimum: 1
        maximum: 200
        default: 50
    AccountCursor:
      name: cursor
      in: query
      required: false
      description: >-
        The opaque `next_cursor` from the previous page. Omit it for the first
        page.
      schema:
        type: string
  schemas:
    AccountApiKeySessionList:
      type: object
      required:
        - sessions
        - limit
        - has_more
        - next_cursor
      properties:
        sessions:
          type: array
          description: Sessions in the list shape, without `environment` and `revision`.
          items:
            $ref: '#/components/schemas/AccountSession'
        limit:
          type: integer
          description: The page size applied.
        has_more:
          type: boolean
          description: Whether another page may exist.
        next_cursor:
          type:
            - string
            - 'null'
          description: Pass as `cursor` to get the next page. `null` on the last page.
    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.
    AccountSession:
      type: object
      required:
        - session_id
        - user_id
        - model
        - state
        - closed
        - cluster
        - created_at
        - updated_at
        - recording_enabled
      properties:
        session_id:
          type: string
          format: uuid
        user_id:
          type: string
          format: uuid
          description: The user who started the session.
        created_by_api_key_id:
          type: string
          format: uuid
          description: >-
            The API key that started the session. Absent for older sessions and
            sessions not started with a key.
        model:
          type: string
          description: The model's name, for example `reactor/helios`.
        state:
          type: string
          enum:
            - CREATED
            - WAITING
            - ACTIVE
            - INACTIVE
            - CLOSED
            - PENDING
            - SUSPENDED
        closed:
          type: boolean
        cluster:
          type: string
          description: >-
            An opaque ID for where the session ran. Empty until the session is
            placed.
        zone:
          type: string
          description: The Reactor region where the session ran. Absent when unknown.
        region:
          type: string
          description: >-
            The Reactor region that served the session, for example `us-west`.
            Absent when unknown.
        origin_country:
          type: string
          description: >-
            The ISO 3166-1 alpha-2 country the client connected from. Absent
            when unknown.
        environment:
          $ref: '#/components/schemas/AccountSessionEnvironment'
        revision:
          $ref: '#/components/schemas/AccountSessionRevision'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          description: The last change. For a closed session, when it closed.
        recording_enabled:
          type: boolean
          description: >-
            `true` when the model recorded the session. A session started within
            the last second can still read `false`.
    AccountSessionEnvironment:
      type: object
      description: The environment the session targeted.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        project_id:
          type: string
          format: uuid
        deleted_at:
          type: string
          format: date-time
          description: Set when the environment was deleted after the session.
    AccountSessionRevision:
      type: object
      description: The environment revision that served the session.
      properties:
        number:
          type: integer
  responses:
    Unauthorized:
      description: The credential is missing, invalid, or expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The credential is valid but may not perform this action, or the resource
        is outside the caller's permission boundary. A resource you cannot see
        returns `403` whether or not it exists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: A dependency is temporarily unavailable. Retry with backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  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.