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

# List records

> Stable keyset traversal of one Corpus's authorized canonical Records in Record ID order, including withdrawn Records. Each page is an independent read, not an atomic historical snapshot. Capture a start-now Change Cursor before scanning, then consume changes after it as invalidations by rereading current resources; see resynchronization procedure. The opaque page cursor is not a Change Cursor and binds the Corpus filter and authorization scope; a page cursor for another filter or scope is 409 cursor_scope_changed with resync_url. This route, relative to the API base, is the resync_url of change-feed and catalog cursor errors.



## OpenAPI

````yaml /openapi.yaml get /v0/records
openapi: 3.1.0
info:
  title: Quivr V2 public text foundation contract
  version: 0.0.0-draft
  description: >-
    THE-543 and THE-547 evaluation contracts; endpoint implementations are
    separate work. Matching criterion is plugin-owned and deferred. One
    configured webhook destination, immutable Matches, independent at-least-once
    Delivery and reference-only notifications. OpenAPI is authoritative for
    transport shapes. THE-640 adds text search and asynchronous Corpus
    projection rebuild initiation.
servers: []
security:
  - ApiKey: []
paths:
  /v0/records:
    get:
      tags:
        - Records
      summary: List records
      description: >-
        Stable keyset traversal of one Corpus's authorized canonical Records in
        Record ID order, including withdrawn Records. Each page is an
        independent read, not an atomic historical snapshot. Capture a start-now
        Change Cursor before scanning, then consume changes after it as
        invalidations by rereading current resources; see resynchronization
        procedure. The opaque page cursor is not a Change Cursor and binds the
        Corpus filter and authorization scope; a page cursor for another filter
        or scope is 409 cursor_scope_changed with resync_url. This route,
        relative to the API base, is the resync_url of change-feed and catalog
        cursor errors.
      operationId: listRecords
      parameters:
        - name: corpus_id
          in: query
          required: true
          schema:
            type: string
            minLength: 1
        - name: page_cursor
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordPage'
        default:
          description: Structured error; see contract HTTP mapping.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    RecordPage:
      type: object
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Record'
        next_page_cursor:
          type: string
          minLength: 1
      required:
        - items
    Error:
      type: object
      additionalProperties: false
      properties:
        code:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        retryable:
          type: boolean
        field:
          type: string
          minLength: 1
          description: >-
            JSON Pointer (RFC 6901) to the request member that caused a 422,
            when known (for example /config/url or /credential/secret/token on
            connector commands).
        resync_url:
          type: string
          format: uri-reference
      required:
        - code
        - message
        - retryable
    Record:
      type: object
      additionalProperties: false
      properties:
        record_id:
          type: string
          minLength: 1
        source:
          $ref: '#/components/schemas/SourceIdentity'
        withdrawn:
          type: boolean
        current_version_id:
          type: string
          minLength: 1
      required:
        - record_id
        - source
        - withdrawn
    SourceIdentity:
      type: object
      additionalProperties: false
      properties:
        corpus_id:
          type: string
          minLength: 1
        namespace:
          type: string
          minLength: 1
        record_key:
          type: string
          minLength: 1
      required:
        - corpus_id
        - namespace
        - record_key
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        API key, not necessarily a JWT. Server derives Organization, permitted
        actions and Corpus scope; every resource access is authorized.

````