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

# List tables

> Lists the tables of your organization (the ones that hold records), newest first. With an API key it lists every table of the organization, in the test or live data of the key. With a personal access token it lists what the user sees in the ROOTKey app: the tables of the user's teams in the organization named by `X-RootKey-Organization` (every table of the organization for an owner or an administrator), on the data `x-test-mode` selects. A table that an IP access rule hides from your network is left out of the page and of `metadata.totalCount`. A RESTRICTED table is listed with `agentAccessible: false` when a personal access token asks, and no agent can read or change it. A personal access token needs the `rootkey.read` scope.



## OpenAPI

````yaml get /tables
openapi: 3.0.3
info:
  title: ROOTKey Documentation
  description: >-
    Your API of choice for creating, managing, and validating information easily
    and securely!
  termsOfService: https://www.rootkey.ai/legal/privacy-policy
  contact:
    name: ROOTKey
    url: https://www.rootkey.ai/contact
    email: support@rootkey.ai
  version: 1.0.0
servers:
  - description: Production
    url: https://api.rootkey.ai/api-v1/
security:
  - x-api-key: []
  - personalAccessToken: []
tags:
  - name: api-v1-public
    description: Unauthenticated top-level /api-v1 endpoints (health, plans, annual report)
  - name: api-v1-files
    description: >-
      File anchoring, versioning, validation and compliance reporting
      (/api-v1/platform/files)
  - name: api-v1-records
    description: Structured-data record anchoring (/api-v1/platform/records)
  - name: api-v1-vaults
    description: 'Vault lifecycle: create / update / delete (/api-v1/platform/vaults)'
  - name: api-v1-recovery-points
    description: >-
      Backup archives created from vault contents
      (/api-v1/platform/recovery-point)
  - name: api-v1-organizations
    description: >-
      The identity of a personal access token and the organizations it can act
      in (/api-v1/me, /api-v1/organizations, /api-v1/organization)
paths:
  /tables:
    get:
      tags:
        - api-v1-records
      summary: List tables
      description: >-
        Lists the tables of your organization (the ones that hold records),
        newest first. With an API key it lists every table of the organization,
        in the test or live data of the key. With a personal access token it
        lists what the user sees in the ROOTKey app: the tables of the user's
        teams in the organization named by `X-RootKey-Organization` (every table
        of the organization for an owner or an administrator), on the data
        `x-test-mode` selects. A table that an IP access rule hides from your
        network is left out of the page and of `metadata.totalCount`. A
        RESTRICTED table is listed with `agentAccessible: false` when a personal
        access token asks, and no agent can read or change it. A personal access
        token needs the `rootkey.read` scope.
      parameters:
        - $ref: '#/components/parameters/OrganizationHeader'
        - $ref: '#/components/parameters/TestModeHeader'
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            The `pagination.nextCursor` of the previous page. It is opaque; a
            cursor that is not valid gets `invalid_cursor`, never a restart from
            the first page.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 20
        - name: order
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          description: By creation time.
      responses:
        '200':
          description: A page of tables
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/VaultOrTableListItem'
                  pagination:
                    $ref: '#/components/schemas/PaginationBlock'
                  metadata:
                    $ref: '#/components/schemas/PaginationMetadata'
        '400':
          description: >-
            An invalid `limit` or `order` (`invalid_query_parameters`), a cursor
            that is not valid (`invalid_cursor`), or, with a personal access
            token, a missing `X-RootKey-Organization` header
            (`organization_header_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainErrorResponse'
        '401':
          description: >-
            Unauthenticated. A missing, malformed, unknown, inactive, revoked or
            expired credential all get the same answer.
        '403':
          description: >-
            Your network is blocked by an IP access rule
            (`access_policy_denied`). With a personal access token the agent
            error codes apply too: see the [Errors](/api-reference/errors) page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainErrorResponse'
        '429':
          description: >-
            Too many requests. The `Retry-After` header says how many seconds to
            wait. See [Rate Limits](/pages/rate-limits).
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - x-api-key: []
        - personalAccessToken: []
components:
  parameters:
    OrganizationHeader:
      name: X-RootKey-Organization
      in: header
      required: false
      schema:
        type: string
      description: >-
        The organization a personal access token acts in: the `id` of one of the
        organizations that `GET /organizations` lists. Required with a personal
        access token on every endpoint that works inside an organization;
        without it the request gets `organization_header_required`. Ignored with
        an API key, which belongs to exactly one organization.
    TestModeHeader:
      name: x-test-mode
      in: header
      required: false
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
        default: 'false'
      description: >-
        Whether a personal access token works on live data (`false`, the
        default) or on test data (`true`). Only this header decides, never a
        query string or a body field. An API key is itself a test or a live key
        and works on that data.
  schemas:
    VaultOrTableListItem:
      type: object
      description: One row of the vault or table listing.
      properties:
        address:
          type: string
          description: The vault or table address, as the other endpoints take it.
        name:
          type: string
        description:
          type: string
          nullable: true
        type:
          type: string
          enum:
            - VAULT
            - TABLE
        dataClassification:
          type: string
          enum:
            - PUBLIC
            - INTERNAL
            - CONFIDENTIAL
            - SENSITIVE
            - RESTRICTED
        isTest:
          type: boolean
        status:
          type: string
          enum:
            - active
            - paused
        createdAt:
          type: string
          format: date-time
        agentAccessible:
          type: boolean
          description: >-
            Only in the answer to a personal access token. False for a
            RESTRICTED vault or table: it is listed so that an agent can tell
            the user it exists, and every endpoint that would read or change it
            is refused with `agent_restricted_data_denied`. True for every other
            classification.
    PaginationBlock:
      type: object
      properties:
        previousCursor:
          type: string
          nullable: true
        nextCursor:
          type: string
          nullable: true
    PaginationMetadata:
      type: object
      properties:
        fetchedCount:
          type: number
        totalCount:
          type: number
        serverTimestamp:
          type: string
          format: date-time
        parameters:
          type: object
          properties:
            limit:
              type: number
            cursor:
              type: string
              nullable: true
            order:
              type: string
              enum:
                - asc
                - desc
    DomainErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            requestId:
              type: string
            message:
              type: string
            errorCode:
              type: string
            docUrl:
              type: string
            timestamp:
              type: string
              format: date-time
  responses:
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DomainErrorResponse'
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        ROOTKey API key. A test key works on your organization's test data and a
        live key on its live data; both are used with the same API.
    personalAccessToken:
      type: http
      scheme: bearer
      bearerFormat: rk_pat_...
      description: >-
        Personal access token of a ROOTKey user, sent as `Authorization: Bearer
        rk_pat_...`. A token acts as the user who created it, in the
        organization named by the `X-RootKey-Organization` header, and never
        with more access than that user has in the ROOTKey app: the
        organization's agent policy, the user's own role and teams, and the
        token's scopes (`rootkey.read`, `rootkey.write`, `rootkey.delete`) all
        apply. A missing, malformed, unknown, revoked or expired token gets the
        same `401`. Send either an `x-api-key` or a bearer token, never both: a
        request with both gets `conflicting_credentials`. See
        [Authentication](/api-reference/auth).

````

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