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

# List corpus proposals awaiting review

> Proposed additions and changes to the governed legal corpus, with SLA state and quorum
progress. **Dashboard session only** (a user bearer token, never an API key); the
caller must be a registered reviewer, or an owner, manager, or employee with the
`proposals:review` capability on a company workspace named by `x-workspace-id`.
Company callers see their own workspace's proposals only. Proposals are created by
the engine's observation pipeline; `POST /memory/propose` always returns 403
`direct_memory_propose_forbidden`.




## OpenAPI

````yaml /openapi/zebratruth-v1.yaml get /memory/review-queue
openapi: 3.1.0
info:
  title: ZebraTruth Compliance API
  version: 1.0.0
  description: >
    AI-powered compliance checking for advertising content. Check text and
    images against

    jurisdiction laws, platform policies, and rights clearance requirements.
    Results include

    embeddable annotations mapped to content locations (text spans, video
    timestamps, image regions).
  contact:
    name: ZebraTruth Support
    email: support@zebratruth.ai
    url: https://developers.zebratruth.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://api.zebratruth.ai/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Video Compliance
    description: >
      **Primary endpoint.** Async compliance analysis for video ads. 3-step
      flow:

      get an upload URL, upload the video bytes, submit for analysis. Poll or

      receive an HMAC-signed webhook with the report. Returns timestamped

      findings citing stable evidence IDs (`audio_NNN`, `frame_NNN`, `ocr_NNN`,

      `signal_NNN`). 3-180 second videos. mp4 / webm /

      quicktime. Built for ad agencies and creators.
  - name: Authentication
    description: Validate API keys and check account status
  - name: Compliance
    description: >-
      Run compliance checks on text + image content (sync). For video, use the
      Video Compliance endpoints above.
  - name: Agents
    description: Discover and invoke individual compliance agents
  - name: Jobs
    description: Poll async job status and view execution traces
  - name: Reports
    description: Retrieve and replay compliance reports
  - name: Observability
    description: Request logs and webhook delivery status
  - name: Billing
    description: Subscriptions, plan changes, and credit balance
  - name: Documents
    description: Extract text from PDF and Word documents before or as part of a check
  - name: Check History
    description: List and retrieve past compliance checks for the workspace
  - name: Provenance
    description: Inspect and sign Content Credentials (C2PA) on images and video
  - name: Corpus
    description: >-
      Review queue for proposed changes to the governed legal corpus (dashboard
      session)
  - name: Webhooks
    description: Saved webhook endpoints (dashboard session) and delivery logs
paths:
  /memory/review-queue:
    get:
      tags:
        - Corpus
      summary: List corpus proposals awaiting review
      description: >
        Proposed additions and changes to the governed legal corpus, with SLA
        state and quorum

        progress. **Dashboard session only** (a user bearer token, never an API
        key); the

        caller must be a registered reviewer, or an owner, manager, or employee
        with the

        `proposals:review` capability on a company workspace named by
        `x-workspace-id`.

        Company callers see their own workspace's proposals only. Proposals are
        created by

        the engine's observation pipeline; `POST /memory/propose` always returns
        403

        `direct_memory_propose_forbidden`.
      operationId: listReviewQueue
      parameters:
        - name: x-workspace-id
          in: header
          required: false
          schema:
            type: string
          description: >-
            Company workspace to review for. Omit for personal or global
            reviewer access.
        - name: status
          in: query
          schema:
            type: string
            enum:
              - needs_human
              - approved
              - rejected
              - changes_requested
              - expired
              - quarantined
        - name: impact
          in: query
          schema:
            type: string
            enum:
              - low
              - medium
              - high
        - name: jurisdiction
          in: query
          schema:
            type: string
        - name: vertical
          in: query
          schema:
            type: string
        - name: domain
          in: query
          schema:
            type: string
        - name: lawId
          in: query
          schema:
            type: string
        - name: memoryKind
          in: query
          schema:
            type: string
        - name: sourceClass
          in: query
          schema:
            type: string
        - name: assigned
          in: query
          schema:
            type: string
            enum:
              - me
              - all
        - name: queueKind
          in: query
          schema:
            type: string
            enum:
              - primary
              - reverification
              - all
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - urgency
              - oldest
              - newest
              - impact
            default: urgency
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
            minimum: 1
            maximum: 100
        - name: cursor
          in: query
          schema:
            type: string
          description: The `pagination.nextCursor` of the previous page.
      responses:
        '200':
          description: Review queue page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewQueueResponse'
        '400':
          description: '`data.code`: `workspace_selector_conflict`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodedError'
        '401':
          description: '`data.code`: `invalid_token`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodedError'
        '403':
          description: '`data.code`: `memory_review_forbidden`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodedError'
        '422':
          description: Unknown query key (`data.unknownKeys`) or invalid value.
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    ReviewQueueResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ReviewQueueItem'
        counters:
          type: object
          description: Computed over everything the caller may see, not just this page.
          properties:
            needsHuman:
              type: integer
            dueSoon:
              type: integer
            overdue:
              type: integer
            highImpact:
              type: integer
        pagination:
          type: object
          properties:
            limit:
              type: integer
            nextCursor:
              type: string
              nullable: true
        sort:
          type: string
        serverTime:
          type: string
          format: date-time
    CodedError:
      type: object
      description: >
        Standard error envelope. `data.code` is the stable discriminator to
        branch on;

        `statusMessage` is the human-readable reason. Unless a response
        documents extra

        named fields, `data` is reduced to `{ code }` before it is sent.
      required:
        - statusCode
        - message
      properties:
        error:
          type: boolean
          example: true
        url:
          type: string
          format: uri
        statusCode:
          type: integer
        statusMessage:
          type: string
        message:
          type: string
        data:
          type: object
          required:
            - code
          properties:
            code:
              type: string
              example: review_scope_not_enabled
          additionalProperties: true
    ReviewQueueItem:
      type: object
      properties:
        proposalId:
          type: string
        status:
          type: string
          enum:
            - needs_human
            - approved
            - rejected
            - changes_requested
            - expired
            - quarantined
        proposalKind:
          type: string
        memoryKind:
          type: string
        tenantScope:
          type: string
        jurisdictionScope:
          type: array
          items:
            type: string
        platformScope:
          type: array
          items:
            type: string
        sourceClass:
          type: string
        authorityRank:
          type: integer
        impact:
          type: string
          enum:
            - low
            - medium
            - high
        createdAt:
          type: string
          format: date-time
        slaDueAt:
          type: string
          format: date-time
          nullable: true
        slaStatus:
          type: string
          enum:
            - ok
            - due_soon
            - overdue
        approvalsReceived:
          type: integer
        approvalsRequired:
          type: integer
        assignedTo:
          type: string
          nullable: true
  responses:
    RateLimited:
      description: |
        Per-tenant rate limit exceeded. Read the `Retry-After` header for the
        wait duration. Body is the standard error envelope plus a
        `data` object with limit context.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying.
      content:
        application/json:
          schema:
            type: object
            description: Standard error envelope with a `data` payload.
            required:
              - statusCode
              - message
            properties:
              error:
                type: boolean
                example: true
              url:
                type: string
                format: uri
              statusCode:
                type: integer
                example: 429
              statusMessage:
                type: string
                example: Rate limit exceeded
              message:
                type: string
                example: Rate limit exceeded
              data:
                type: object
                description: >-
                  Per-error context. On the wire this is reduced to `{ code }`
                  plus, where documented, a small set of named fields.
                properties:
                  retryAfter:
                    type: integer
                    description: >-
                      Mirrors the `Retry-After` header for clients that prefer
                      body fields.
                    example: 5
                  limit:
                    type: integer
                    description: Tenant's requests-per-minute cap.
                    example: 60
                  remaining:
                    type: integer
                    description: Requests remaining in the current window.
                    example: 0
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: |
        API key starting with `zt_live_` (production) or `zt_test_` (sandbox).
        Get your key at https://developers.zebratruth.ai

````

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