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

# Get session

> Returns one session with its status, agent and environment binding, and timing. Statuses completed, failed, and cancelled are terminal and will not change again, which is what a poller should wait for. Pass waitSeconds to have the read block while the session is active, so a caller without a timer of its own can wait by repeating this one read. Poll with view=summary once agentSnapshot, modelSnapshot and config are held. They are written at start and change only when the session moves to another version of its agent, which the summary's agentVersionId shows: read the full view again when it changes.



## OpenAPI

````yaml /recursion/openapi.yaml get /managed-agents/v2/sessions/{sessionId}
openapi: 3.1.0
info:
  title: Managed Agents API
  version: 0.15.0
  description: >-
    The Recursion Managed Agents REST API. Authenticate with a Recursion API key
    as a bearer token. An organization-scoped key acts in its own organization
    and needs nothing else; a tenant-scoped key must also send
    `x-organization-id` with an organization id or `default`. Field names follow
    each operation's published schema.
servers:
  - url: https://api.recursion.labelbox.com
security:
  - bearerAuth: []
paths:
  /managed-agents/v2/sessions/{sessionId}:
    get:
      tags:
        - Sessions
      summary: Get session
      description: >-
        Returns one session with its status, agent and environment binding, and
        timing. Statuses completed, failed, and cancelled are terminal and will
        not change again, which is what a poller should wait for. Pass
        waitSeconds to have the read block while the session is active, so a
        caller without a timer of its own can wait by repeating this one read.
        Poll with view=summary once agentSnapshot, modelSnapshot and config are
        held. They are written at start and change only when the session moves
        to another version of its agent, which the summary's agentVersionId
        shows: read the full view again when it changes.
      operationId: managedAgentsGetSessionV2
      parameters:
        - description: >-
            full (default) returns the whole session. summary omits
            agentSnapshot, modelSnapshot and config, which are most of the
            session's bytes. agent_snapshot and model_snapshot change when the
            session moves to another agent version, which the summary's
            agent_version_id shows, and config can change at any time, so read
            the full view when you need them current.
          in: query
          name: view
          schema:
            description: >-
              full (default) returns the whole session. summary omits
              agentSnapshot, modelSnapshot and config, which are most of the
              session's bytes. agent_snapshot and model_snapshot change when the
              session moves to another agent version, which the summary's
              agent_version_id shows, and config can change at any time, so read
              the full view when you need them current.
            enum:
              - full
              - summary
            type: string
            x-recursion-omission:
              strategy: absent
        - description: >-
            Block up to this many seconds while the session is active before
            responding, so a poll loop needs no client-side timer. The read
            returns as soon as status leaves active (completed, failed,
            cancelled, or awaiting_human). The server caps the wait at 20
            seconds; larger values are accepted and clamped. 0 (the default)
            returns immediately.
          in: query
          name: waitSeconds
          schema:
            default: 0
            description: >-
              Block up to this many seconds while the session is active before
              responding, so a poll loop needs no client-side timer. The read
              returns as soon as status leaves active (completed, failed,
              cancelled, or awaiting_human). The server caps the wait at 20
              seconds; larger values are accepted and clamped. 0 (the default)
              returns immediately.
            maximum: 60
            minimum: 0
            type: integer
        - description: >-
            Session id (UUID) as returned by managedAgentsStartSession or
            managedAgentsListSessions.
          in: path
          name: sessionId
          required: true
          schema:
            description: >-
              Session id (UUID) as returned by managedAgentsStartSession or
              managedAgentsListSessions.
            format: uuid
            type: string
        - $ref: '#/components/parameters/RecursionTenantId'
        - $ref: '#/components/parameters/RecursionOrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneV2Session'
          description: OK
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorInvalidRequest'
                x-recursion-error-codes:
                  - invalid_request
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorUnauthorized'
                x-recursion-error-codes:
                  - unauthorized
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorForbidden'
                x-recursion-error-codes:
                  - forbidden
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '404':
          description: Not Found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorNotFound'
                x-recursion-error-codes:
                  - not_found
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '413':
          description: Payload Too Large.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorPayloadTooLarge'
                x-recursion-error-codes:
                  - payload_too_large
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '429':
          headers:
            Retry-After:
              description: When to retry, as delay seconds or an HTTP date.
              schema:
                type: string
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
          description: Too Many Requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorRateLimitExceeded'
                x-recursion-error-codes:
                  - rate_limit_exceeded
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorInternalError'
                x-recursion-error-codes:
                  - internal_error
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '502':
          description: A dependent service returned an invalid response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorDependencyFailure'
                x-recursion-error-codes:
                  - bad_gateway
          headers:
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
        '503':
          headers:
            Retry-After:
              description: When to retry, as delay seconds or an HTTP date.
              schema:
                type: string
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
          description: Service Unavailable.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: >-
                      #/components/schemas/ManagedAgentsApiErrorManagedAgentsUnavailable
                  - $ref: >-
                      #/components/schemas/ManagedAgentsApiErrorServiceUnavailable
                discriminator:
                  propertyName: code
                  mapping:
                    managed_agents_unavailable: >-
                      #/components/schemas/ManagedAgentsApiErrorManagedAgentsUnavailable
                    service_unavailable: >-
                      #/components/schemas/ManagedAgentsApiErrorServiceUnavailable
                x-recursion-error-codes:
                  - managed_agents_unavailable
                  - service_unavailable
        '504':
          headers:
            Retry-After:
              description: When to retry, as delay seconds or an HTTP date.
              schema:
                type: string
            recursion-organization-id:
              $ref: '#/components/headers/RecursionOrganizationId'
            recursion-tenant-id:
              $ref: '#/components/headers/RecursionTenantId'
          description: A dependent service timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedAgentsApiErrorDependencyTimeout'
                x-recursion-error-codes:
                  - gateway_timeout
components:
  parameters:
    RecursionTenantId:
      name: x-tenant-id
      in: header
      required: false
      description: >-
        Optional tenant consistency check. When present, it must name the tenant
        bound to the API key, including when x-organization-id is `default`.
      schema:
        minLength: 1
        type: string
    RecursionOrganizationId:
      name: x-organization-id
      in: header
      required: false
      description: >-
        Organization in which to act. Required for a tenant-scoped API key.
        Optional for an organization-scoped key, where it must name that same
        organization. The value may be an organization id or `default`.
      schema:
        minLength: 1
        type: string
  schemas:
    StandaloneV2Session:
      properties:
        accessPolicy:
          type: string
          enum:
            - platform_internal
          description: >-
            Present only when reading a platform-managed session directly; these
            sessions are omitted from session lists.
        activeHandoff:
          $ref: '#/components/schemas/StandaloneV2ActiveHandoff'
          description: >-
            Current browser handoff, including its exclusive driver claim and
            deadline. Absent when no browser handoff is active. Never contains
            the short-lived access URL.
        agentId:
          description: >-
            Agent this session runs (UUID). Empty for imported sessions that
            were not started from an agent.
          type: string
        agentSnapshot:
          additionalProperties:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
          description: >-
            The definition of the agent version this session runs, frozen so
            later edits to the agent cannot change this session's behavior.
            Written at start; it changes only when the session moves to another
            version of its agent, which agentVersionId shows.
          type: object
        agentVersionId:
          description: >-
            Agent version this session runs (UUID), pinned at start so a later
            edit to the agent cannot change a running session. It changes only
            when the session moves to another version of its agent.
          type: string
        budget:
          $ref: '#/components/schemas/SessionBudgetStatus'
          description: >-
            The session tree's budget and what the tree has spent toward it, on
            a root session read in full. Omitted when the session has none, and
            on summary and list reads.
        computerUse:
          description: >-
            Whether this session has a computer-enabled environment and a
            display that passed its readiness probe.
          type: boolean
        concurrencySlotHeld:
          description: >-
            Whether this root session currently occupies the agent's
            max_concurrent_sessions slot. True while admitted and non-terminal.
            False exclusively while an active queued root waits to start.
            Omitted for unlimited agents, child sessions, legacy rows, and
            terminal or deleted sessions.
          type: boolean
        config:
          additionalProperties:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
          description: >-
            Resolved per-session runtime settings written at start, including
            the snapshotted MCP servers and tool bindings, multi-agent roster,
            and delegation depth limits. The settings an agent version owns
            change only when the session moves to another version of its agent.
            Read-only to callers.
          type:
            - object
            - 'null'
        costState:
          description: >-
            final once the session has ended, its sandbox has stopped, and every
            charge has settled: costUsd will not change unless the session is
            resumed. so_far while it can still grow. Present exactly when
            costUsd is.
          enum:
            - final
            - so_far
          type: string
        costUsd:
          description: >-
            Billed cost of this session's whole tree as an exact canonical
            decimal USD string. On Recursion, a writer's cost also includes
            linked cloned outcome evaluation roots, counting each ledger charge
            once; manual evaluations remain independent. On other surfaces, cost
            remains tree-only. Compute still running is included as an estimate;
            the figure is final once every included tree has ended and settled.
            Returned by managedAgentsGetSession and managedAgentsListSessions
            only, and absent when it cannot be read.
          examples:
            - '1.234567'
          type: string
        createdAt:
          description: RFC 3339 timestamp of when this record was created. Server-assigned.
          format: date-time
          type: string
        credentialRefs:
          description: >-
            Explicit allowlist of individual credentials the session may use;
            empty when none are listed. Read credentialRefsConfigured to tell an
            intentionally empty allowlist from a legacy session granted whole
            vaults.
          items:
            $ref: '#/components/schemas/StandaloneV2VaultCredentialRef'
          type: array
        credentialRefsConfigured:
          description: >-
            True when credentialRefs is an explicit allowlist. False on legacy
            sessions granted every credential in their vaults, which would
            otherwise be indistinguishable from an empty allowlist.
          type: boolean
        effectiveModel:
          description: >-
            Provider-qualified model string this session runs, including any
            per-session model override. Written at start; it changes only when
            the session moves to another version of its agent. Prefer this over
            resolving model_ref_id or the current agent version when displaying
            the model a session runs.
          type: string
        environmentId:
          description: Environment whose sandbox definition this session runs in (UUID).
          type: string
        executionState:
          description: >-
            Where the agent loop is. Empty for sessions without a loop, such as
            imported rollouts. provisioning includes any automatic setup-image
            refresh before sandbox creation. The deployment's compute-ready
            timeout (five minutes by default) bounds sandbox readiness after
            refresh, not the setup run itself. A failed setup or sandbox timeout
            fails the session with the reason in failure. This field, read from
            the session itself, is the authoritative status -- a session's event
            stream is written on a separate path and can lag it, so an empty
            event list does not mean the session is still starting.
          enum:
            - provisioning
            - queued
            - running
            - idle
            - completed
          type: string
        externalSourceId:
          description: >-
            Identifier of the session's counterpart in the external_source_type
            system, so a caller can find the session again from that side. Set
            together with external_source_type.
          type: string
        externalSourceType:
          description: >-
            Kind of external system this session is correlated to, e.g.
            slack_thread. Set together with external_source_id and filterable
            when listing sessions.
          type: string
        failure:
          $ref: '#/components/schemas/SessionFailure'
          description: >-
            Structured terminal failure. Omitted for healthy sessions and legacy
            rows.
        forkedAtEventId:
          description: >-
            Event in the parent session (UUID) this session was forked from, so
            the fork's starting context is identifiable. Set only on forks.
          type: string
        kind:
          description: >-
            What produced the session: api_call, chat, rollout (an imported RL
            rollout), subagent (delegated by another session), benchmark,
            evaluation (a platform-started evaluation run over other session
            snapshots), reflection (a platform-started memory consolidation), or
            session_analyst (a platform-started read-only assistant that answers
            questions about another session tree).
          enum:
            - api_call
            - chat
            - rollout
            - subagent
            - benchmark
            - evaluation
            - reflection
            - session_analyst
          type: string
        lastActivityAt:
          description: >-
            RFC 3339 timestamp of when the agent loop last made progress.
            Distinct from updated_at, which any metadata write touches. Absent
            for sessions that run no loop.
          format: date-time
          type: string
        metadata:
          additionalProperties:
            type: string
          description: >-
            Caller-defined string key/value pairs supplied when the session was
            started, e.g. ids from your own system. Immutable, present on root
            sessions only, and filterable with metadataAll=key:value or
            metadataKeyAll=key on GET /v2/sessions. At most 32 entries; keys use
            letters, digits, '_', '.', and '-' up to 64 characters; values are
            1-512 characters.
          type: object
        modelRefId:
          description: >-
            Model reference the session's turns run on (UUID), resolved from the
            agent version or the start request. Written at start; it changes
            only when the session moves to another version of its agent.
          type: string
        modelSnapshot:
          additionalProperties:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
          description: >-
            The resolved model reference and inference settings this session
            runs, frozen for the same reason as agentSnapshot. Written at start;
            it changes only when the session moves to another version of its
            agent.
          type: object
        organizationId:
          description: >-
            Organization that owns this record. Resolved from the API key; never
            accepted from the caller.
          type: string
        parentSessionId:
          description: >-
            Session that created this one (UUID) — the delegating session for a
            subagent, or the source session for a fork. Empty on a root session.
          type: string
        projectId:
          description: >-
            Identifier of the external project the session's work belongs to,
            interpreted according to project_source.
          type: string
        rootSessionId:
          description: >-
            Root session of the multi-agent tree this session belongs to (UUID).
            Equal to sessionId for a root session.
          type: string
        sandboxInstanceId:
          description: >-
            Provider-assigned id of the sandbox instance serving this session.
            Empty before provisioning finishes; historical self_hosted sessions
            may also have no instance id.
          type: string
        sandboxProvider:
          description: >-
            Sandbox runtime that provisioned this session's compute, from the
            supported sandbox providers list.
          type: string
        sessionId:
          description: Identifier for this session (UUID). Server-assigned.
          type: string
        sessionPath:
          description: >-
            Position of this session within its tree, as a slash-delimited path
            of session ids. "/" for a root session.
          type: string
        sourceRefs:
          additionalProperties:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
          description: >-
            Secondary provenance ids from the originating system beyond the
            primary external source, e.g. an imported rollout's problem,
            problem-version, and run ids.
          type: object
        status:
          $ref: '#/components/schemas/SessionStatus'
          description: >-
            Coarse session state shared with RL rollout imports: active,
            awaiting_human (for a rollout, carries no score), completed, failed,
            or cancelled. For where a running agent loop is, read
            execution_state instead.
        stopReason:
          description: >-
            Why the loop is not running. Set whenever execution_state is idle or
            completed. sleeping means the agent chose to wait and the session
            resumes on the next message or at wake_at; awaiting_subagents means
            a coordinator is waiting on delegated work; out_of_credit and
            tenant_suspended pause before new work and continue on the next
            message after the tenant is admitted again; an out_of_credit pause
            from the last 72 hours also continues on its own within about a
            minute once the tenant is admitted again; budget_reached means the
            session tree reached its budget and paused before its next model
            request, and raising or removing the session's budget continues it.
          type: string
        updatedAt:
          description: >-
            RFC 3339 timestamp of the last change to this record.
            Server-assigned.
          format: date-time
          type: string
        userId:
          description: >-
            User the session was started on behalf of, resolved from the request
            scope.
          type: string
        vaultIds:
          description: >-
            Vaults (UUIDs) the session may draw credentials from. Combine with
            credentialRefs to narrow the grant to specific credentials.
          items:
            type: string
          type: array
        wakeAt:
          description: >-
            RFC 3339 timestamp at which a sleeping session wakes itself if
            nobody messages it first. Absent unless the agent scheduled a timed
            wait.
          format: date-time
          type: string
      required:
        - rootSessionId
        - sessionPath
        - sessionId
        - organizationId
        - kind
        - status
        - computerUse
        - credentialRefs
        - credentialRefsConfigured
        - config
        - createdAt
        - updatedAt
      type: object
      additionalProperties: false
    ManagedAgentsApiErrorInvalidRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - invalid_request
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorUnauthorized:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - unauthorized
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorForbidden:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - forbidden
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorNotFound:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - not_found
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorPayloadTooLarge:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - payload_too_large
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorRateLimitExceeded:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - rate_limit_exceeded
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorInternalError:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - internal_error
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorDependencyFailure:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - bad_gateway
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorManagedAgentsUnavailable:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - managed_agents_unavailable
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorServiceUnavailable:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - service_unavailable
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    ManagedAgentsApiErrorDependencyTimeout:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          description: Stable machine-readable error code.
          enum:
            - gateway_timeout
        message:
          type: string
          minLength: 1
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ManagedAgentsApiErrorDetails'
          description: >-
            Optional structured error details. Reserved transport fields are
            typed; code-specific fields remain forward compatible.
      required:
        - code
        - message
      additionalProperties: false
      description: Standard flat error response.
    StandaloneV2ActiveHandoff:
      properties:
        accessExpiresAt:
          description: >-
            Latest time the current display access remains usable; never later
            than deadline_at.
          format: date-time
          type: string
        deadlineAt:
          description: When the handoff automatically expires and the agent resumes.
          format: date-time
          type: string
        handoffId:
          description: Stable identifier for this browser handoff.
          type: string
        reason:
          description: Why the agent asked a person to take over the shared browser.
          type: string
        requestedAt:
          description: When the agent requested the handoff.
          format: date-time
          type: string
        state:
          description: >-
            Whether nobody has opened access yet, one person currently owns the
            display, or hand-back/deadline resolution is being delivered.
          enum:
            - awaiting_user
            - user_driving
            - resolved
          type: string
        wakeCause:
          description: >-
            Resolution cause once resolved: user_handed_back, deadline_elapsed,
            cancelled, or interrupted.
          type: string
      required:
        - handoffId
        - reason
        - requestedAt
        - deadlineAt
        - state
      type: object
      additionalProperties: false
    PlatformSafeJsonValue:
      description: >-
        A JSON value whose integer members stay within the exact ECMAScript
        safe-integer range at every nesting level.
      oneOf:
        - type: 'null'
        - type: boolean
        - type: string
        - type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        - type: number
          not:
            type: integer
        - type: array
          items:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
        - additionalProperties:
            $ref: '#/components/schemas/PlatformSafeJsonValue'
          type: object
    SessionBudgetStatus:
      description: A session tree's budget and what it has spent toward it.
      properties:
        agentCapUsd:
          description: >-
            The agent's multiagent.limits.max_tree_cost_usd, in US dollars with
            two decimals: the most this budget can be set to. A session whose
            budget reached it stays paused; start a new session, or raise the
            agent's cap for sessions started after.
          examples:
            - '25.00'
          readOnly: true
          type: string
        continuesOnRaise:
          description: >-
            Whether raising or removing the budget of a session paused at it
            continues the session right away. False for a session bound to a
            Slack thread, which continues on its next reply there.
          readOnly: true
          type: boolean
        maxCostUsd:
          description: The budget in US dollars, with two decimals.
          examples:
            - '10.00'
          pattern: ^(0|[1-9][0-9]{0,5})(\.[0-9]{1,2})?$
          type: string
        spentUsd:
          description: >-
            What the session tree has spent, plus any linked outcome grading
            sessions charged to the same budget on Recursion, in US dollars with
            two decimals, at the billed price the budget is enforced at (models,
            tools and sandbox compute). Present on a full read of the root;
            absent when the spend could not be read. A session that paused at
            its budget can read a little past it: the request that crossed it
            completes.
          examples:
            - '4.20'
          readOnly: true
          type: string
      required:
        - maxCostUsd
        - continuesOnRaise
      type: object
      additionalProperties: false
    StandaloneV2VaultCredentialRef:
      properties:
        credentialId:
          description: Credential to select inside vault_id.
          type: string
        vaultId:
          description: >-
            Vault holding the credential. Required, because credential ids are
            unique only within a vault.
          type: string
      required:
        - vaultId
        - credentialId
      type: object
      additionalProperties: false
    SessionFailure:
      description: >-
        Structured, sanitized reason a session terminated abnormally. Present on
        a session only after a terminal failure; healthy and legacy sessions
        omit it.
      properties:
        at:
          description: Time the terminal failure was persisted.
          format: date-time
          type: string
        category:
          description: >-
            Who can act on this failure: transient (wait or retry), caller_error
            (change the request or configuration, retrying as-is will not help),
            or internal (report it). retryable=false with category=caller_error
            is a fixable mistake, not an outage. A retryable failure is never
            caller_error: if the platform will retry, changing the request is
            not the fix.
          enum:
            - transient
            - caller_error
            - internal
          type: string
        code:
          description: Stable machine-readable failure code.
          type: string
        message:
          description: >-
            Sanitized bounded operator-facing message; never contains raw
            provider response bodies or credentials.
          type: string
        phase:
          description: >-
            Lifecycle phase that failed, such as provisioning, setup, workflow,
            or model.
          type: string
        retryable:
          description: >-
            Whether the platform will retry, or a retry of the same request may
            succeed on its own. False does not mean permanently broken -- read
            category to tell a transient condition from a request the caller
            must change.
          type: boolean
      required:
        - phase
        - code
        - message
        - retryable
        - category
        - at
      type: object
      additionalProperties: false
    SessionStatus:
      description: Coarse session state shared by Managed Agents and imported RL rollouts.
      enum:
        - active
        - awaiting_human
        - completed
        - failed
        - cancelled
      type: string
    ManagedAgentsApiErrorDetails:
      type: object
      properties:
        field:
          description: >-
            Request field or header responsible for the error, when one can be
            identified.
          type: string
        issues:
          description: >-
            Boundary-validation failures as path-prefixed human-readable
            messages.
          type: array
          items:
            type: string
        requestId:
          description: Request correlation identifier for support and log lookup.
          type: string
        retryable:
          description: >-
            Server advice about failure transience. `true` means transient,
            `false` means non-transient, and absence gives no advice. Automatic
            replay is allowed only when this field is not `false` and the
            operation-specific retry and idempotency contract permits replay.
          type: boolean
      additionalProperties:
        $ref: '#/components/schemas/PlatformSafeJsonValue'
      description: >-
        Optional structured error details. Reserved transport fields are typed;
        code-specific fields remain forward compatible.
  headers:
    RecursionOrganizationId:
      description: Organization id resolved for this request.
      schema:
        minLength: 1
        type: string
    RecursionTenantId:
      description: Tenant id resolved for this request.
      schema:
        minLength: 1
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A Recursion API key, created in the console under API keys.

````