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

# Read the provider-neutral state of an accepted channel turn



## OpenAPI

````yaml /openapi.json post /api/v1/channels/backend/runtime/readback
openapi: 3.1.0
info:
  description: >-
    OpenAPI 3.1 spec auto-generated from the Ravi CLI registry. Each operation
    maps 1:1 to a `ravi <group> <command>` invocation.
  title: Ravi API
  version: 974aebaaf457a15f
servers:
  - description: Local Ravi gateway (default)
    url: http://localhost:3000
security: []
tags:
  - description: Ask a Ravi Page's managers for access and follow the request
    name: access
  - description: Inspect session adapters and their debug snapshots
    name: adapters
  - description: >-
      The operator's calendar in the Ravi Console: meetings, recording and
      briefings
    name: agenda
  - description: Agent management
    name: agents
  - description: Discover and validate Ravi app manifests
    name: apps
  - description: Generic artifact ledger and lineage tools
    name: artifacts
  - description: Audio generation tools (TTS)
    name: audio
  - description: Typed project databases (Bases) in Ravi Console
    name: bases
  - description: Manage Ravi MCP bridges through Console
    name: bridges
  - description: File, comment on, and track global Ravi bug reports on Console
    name: bug
  - description: Manage local-first Ravi calendars
    name: calendars
  - description: Manage native Ravi channel runner
    name: channels
  - description: Inspect canonical chats, messages, and reading queues
    name: chats
  - name: cloud
  - description: Manage Ravi prompt commands
    name: commands
  - description: >-
      Connect and manage your own accounts (Gmail, Calendar, ...) through Ravi
      Console
    name: connectors
  - description: Contact management
    name: contacts
  - description: Runtime context registry and introspection
    name: context
  - description: Inspect token and cost tracking
    name: costs
  - name: credentials
  - description: CRM relationship surface
    name: crm
  - description: Scheduled job management
    name: cron
  - description: Manage ravi via PM2
    name: daemon
  - description: Inspect ravi.db state (locks, WAL, holders)
    name: db
  - name: devin
  - description: Run reproducible evaluation tasks against Ravi
    name: eval
  - description: Stream live NATS events
    name: events
  - description: Send structured feedback to Ravi Console
    name: feedback
  - description: >-
      Operate Gmail through a connected Google account (yours, the person
      asking's, or a shared one)
    name: gmail
  - description: Heartbeat scheduling management
    name: heartbeat
  - description: Generic runtime hooks
    name: hooks
  - description: Link chat people to their Ravi Console account
    name: identity
  - description: Image generation tools
    name: image
  - description: Local Ravi inbox and Console delivery compatibility commands
    name: inbox
  - description: Operational insights with explicit lineage
    name: insights
  - description: Instance management (channels, policies, routes)
    name: instances
  - description: Invite people into the Console organization by email
    name: invites
  - description: Execução de chamada longa em background, com desfecho entregue na sessão
    name: jobs
  - description: Search what the org said and published, with sources
    name: knowledge
  - description: Use local-first Ravi mail
    name: mail
  - description: Media sending
    name: media
  - description: Meeting artifact and provider operations
    name: meetings
  - description: Daily metrics rollup and reporting
    name: metrics
  - description: Inspect Observation Plane bindings
    name: observers
  - description: Manage project-owned Ravi Pages and publish content through Console
    name: pages
  - description: Inspect provider-runtime authorization
    name: permissions
  - description: List and create the organization's projects in Ravi Console
    name: projects
  - name: prox
  - description: Emoji reactions
    name: react
  - description: Inspect route config and live routing without drilling into instances
    name: routes
  - description: Manage Ravi runtime prompt rules
    name: rules
  - name: runtime
  - description: Run one Ravi task in a disposable E2B cloud sandbox and collect its patch
    name: sandbox
  - name: sdk
  - description: Read the current Ravi agent/session/chat context
    name: self
  - description: Bot service management
    name: service
  - description: Manage agent sessions
    name: sessions
  - description: Global settings management
    name: settings
  - description: Manage runtime skill gate rules
    name: skill-gates
  - description: Skill discovery, install and inspection tools
    name: skills
  - description: Native Slack workspace operations
    name: slack
  - description: Versioned Ravi specs memory
    name: specs
  - description: Sticker library management and sending
    name: stickers
  - description: Local-first sync outbox, inbox, and Console bridge
    name: sync
  - description: Deterministic tag classification rules
    name: tag-rules
  - description: Unified tags for Ravi assets
    name: tags
  - description: Task runtime for dispatching work to Ravi agents
    name: tasks
  - description: >-
      Org and project themes in the Console Library: check, publish, propose and
      set the active theme
    name: themes
  - description: Manage Ravi threads
    name: threads
  - description: CLI tools inspection and export
    name: tools
  - description: Audio transcription
    name: transcribe
  - description: Event triggers
    name: triggers
  - description: Video analysis tools
    name: video
  - description: Create watches and wire their events to triggers
    name: watch
  - name: whatsapp
  - description: >-
      Widget templates in the Console Library: catalog, check, preview, publish
      and propose
    name: widgets
  - description: Resolve and mutate generic Work Objects through Ravi domain adapters
    name: work-objects
  - name: workflows
  - description: >-
      Operate YouTube Data API v3 and YouTube Analytics API v2 through Ravi
      credentials
    name: yt
paths:
  /api/v1/channels/backend/runtime/readback:
    post:
      tags:
        - channels
      summary: Read the provider-neutral state of an accepted channel turn
      operationId: channels.backend.runtime.readback
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                agentId:
                  description: Concrete local agent id used for authorization
                  pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                  type: string
                request:
                  additionalProperties: false
                  description: >-
                    Channel runtime readback request object (JSON when invoked
                    from the CLI)
                  properties:
                    binding:
                      additionalProperties: false
                      properties:
                        agentId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                        channelInstanceId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                        chatId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                        messageId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                        sessionId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                        turnId:
                          pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                          type: string
                      required:
                        - channelInstanceId
                        - agentId
                        - chatId
                        - messageId
                        - sessionId
                        - turnId
                      type: object
                    protocol:
                      const: ravi.channel.runtime-events
                      type: string
                    requestId:
                      pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                      type: string
                    schemaVersion:
                      const: 1
                      type: number
                  required:
                    - protocol
                    - schemaVersion
                    - requestId
                    - binding
                  type: object
              required:
                - agentId
                - request
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  assistantMessageId:
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                    type: string
                  binding:
                    additionalProperties: false
                    properties:
                      agentId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      channelInstanceId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      chatId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      messageId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      sessionId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      turnId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                    required:
                      - channelInstanceId
                      - agentId
                      - chatId
                      - messageId
                      - sessionId
                      - turnId
                    type: object
                  lastEventRuntimeGenerationId:
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                    type: string
                  lastSequence:
                    maximum: 9007199254740991
                    minimum: 0
                    type: integer
                  observedAt:
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                    type: string
                  protocol:
                    const: ravi.channel.runtime-events
                    type: string
                  requestId:
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                    type: string
                  runtimeGenerationId:
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                    type: string
                  schemaVersion:
                    const: 1
                    type: number
                  state:
                    enum:
                      - accepted
                      - running
                      - waiting_approval
                      - completed
                      - failed
                      - interrupted
                    type: string
                  terminalEvent:
                    additionalProperties: false
                    properties:
                      correlation:
                        additionalProperties: false
                        properties:
                          binding:
                            additionalProperties: false
                            properties:
                              agentId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              channelInstanceId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              chatId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              messageId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              sessionId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              turnId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                            required:
                              - channelInstanceId
                              - agentId
                              - chatId
                              - messageId
                              - sessionId
                              - turnId
                            type: object
                          causationId:
                            pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                            type: string
                          correlationId:
                            pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                            type: string
                          ingressRequestId:
                            pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                            type: string
                        required:
                          - correlationId
                          - ingressRequestId
                          - binding
                        type: object
                      eventId:
                        pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                        type: string
                      kind:
                        const: turn.terminal_output
                        type: string
                      occurredAt:
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        type: string
                      payload:
                        additionalProperties: false
                        properties:
                          assistantMessageId:
                            pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                            type: string
                          content:
                            items:
                              oneOf:
                                - additionalProperties: false
                                  properties:
                                    text:
                                      type: string
                                    type:
                                      const: text
                                      type: string
                                  required:
                                    - type
                                    - text
                                  type: object
                                - additionalProperties: false
                                  properties:
                                    artifactId:
                                      pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                      type: string
                                    mediaType:
                                      pattern: >-
                                        ^[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$
                                      type: string
                                    name:
                                      type: string
                                    sizeBytes:
                                      maximum: 9007199254740991
                                      minimum: 0
                                      type: integer
                                    type:
                                      const: artifact
                                      type: string
                                  required:
                                    - type
                                    - artifactId
                                  type: object
                            maxItems: 256
                            minItems: 1
                            type: array
                          error:
                            additionalProperties: false
                            properties:
                              category:
                                enum:
                                  - validation
                                  - authentication
                                  - authorization
                                  - capacity
                                  - availability
                                  - internal
                                type: string
                              code:
                                enum:
                                  - INVALID_REQUEST
                                  - IDEMPOTENCY_CONFLICT
                                  - UNAUTHENTICATED
                                  - PERMISSION_DENIED
                                  - LOCAL_PERMISSION_DENIED
                                  - NOT_FOUND
                                  - RATE_LIMITED
                                  - OVERLOADED
                                  - UNAVAILABLE
                                  - INTERNAL
                                type: string
                              correlationId:
                                pattern: ^[A-Za-z0-9][A-Za-z0-9._~-]*$
                                type: string
                              retryAfterMs:
                                exclusiveMinimum: 0
                                maximum: 86400000
                                type: integer
                              retryable:
                                type: boolean
                            required:
                              - code
                              - category
                              - retryable
                            type: object
                          state:
                            enum:
                              - completed
                              - failed
                              - interrupted
                            type: string
                        required:
                          - state
                        type: object
                      protocol:
                        const: ravi.channel.runtime-events
                        type: string
                      schemaVersion:
                        const: 1
                        type: number
                      sequence:
                        maximum: 9007199254740991
                        minimum: 0
                        type: integer
                    required:
                      - protocol
                      - schemaVersion
                      - eventId
                      - kind
                      - occurredAt
                      - sequence
                      - correlation
                      - payload
                    type: object
                required:
                  - protocol
                  - schemaVersion
                  - requestId
                  - binding
                  - state
                  - lastSequence
                  - observedAt
                type: object
          description: Success — body conforms to the `@Returns` schema.
        '400':
          description: Bad request — body failed schema validation.
        '401':
          description: Unauthorized — bearer token missing or invalid.
        '403':
          description: Forbidden — caller lacks the required scope.
        '500':
          description: Internal error.
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      bearerFormat: rctx
      description: >-
        Runtime context-key (`rctx_*`) issued by the Ravi gateway. Required for
        every non-`open` scope. Bootstrap the first key with `ravi daemon
        init-admin-key`; rotate, derive, and revoke via the `ravi context`
        family. Specs: `runtime/context-keys`, `sdk/auth`.
      scheme: bearer
      type: http

````

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