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

# Check a proposed action before committing it

> Compares supplied scalar identifiers and tool statuses synchronously. Does not book or fetch CRM state. Await allowed=true before committing; do not commit on errors or timeouts. Maximum 64 KiB.



## OpenAPI

````yaml /docs-openapi.json post /v1/action-checks
openapi: 3.1.0
info:
  title: Zelto REST API
  version: v1
  description: >-
    Programmatic access to your Zelto organization. Every endpoint is scoped to
    the organization the API key belongs to. Mint a key at Settings →
    Integrations → API Call Upload.
servers:
  - url: https://api.zelto.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Agents
    description: Voice and chat bots normalised through Zelto's ingestion pipeline.
  - name: Conversations
    description: Calls, chats, and voicemails — plus their transcripts and recordings.
  - name: Customer Metrics
    description: >-
      Customer-provided evaluations attached to a call (requires metrics
      enabled).
  - name: Reviews
    description: Human review state for conversations.
  - name: Buckets
    description: Reviewer routing — group conversations for batched review.
  - name: Companies
    description: Clients or brands your agents work for, and their logos.
  - name: Findings
    description: >-
      Structured issues discovered during analysis, with optional conversation
      attachments and comments.
  - name: Experiments
    description: >-
      Prospective measurement of two externally routed prompt versions across
      independent monitor outcomes.
  - name: Organizations
    description: >-
      Headless org provisioning. Requires an admin/service API key (not a
      read-only org-scoped customer key).
paths:
  /v1/action-checks:
    post:
      tags:
        - Action checks
      summary: Check a proposed action before committing it
      description: >-
        Compares supplied scalar identifiers and tool statuses synchronously.
        Does not book or fetch CRM state. Await allowed=true before committing;
        do not commit on errors or timeouts. Maximum 64 KiB.
      operationId: checkProposedAction
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionCheckInput'
      responses:
        '200':
          description: Decision for the supplied snapshot
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionCheckDecision'
        '400':
          description: Invalid request
        '401':
          description: Authentication required
        '404':
          description: Agent not found in the authenticated organization
        '413':
          description: Body exceeds 64 KiB
components:
  schemas:
    ActionCheckInput:
      type: object
      required:
        - agentId
        - referenceData
        - comparisons
      properties:
        agentId:
          type: string
          format: uuid
        referenceData:
          type: object
          additionalProperties: true
        comparisons:
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: object
            required:
              - key
              - expectedPath
              - actualPath
            properties:
              key:
                type: string
                maxLength: 80
              expectedPath:
                type: string
                maxLength: 120
              actualPath:
                type: string
                maxLength: 120
        tools:
          type: array
          maxItems: 20
          items:
            type: object
            required:
              - key
              - status
            properties:
              key:
                type: string
                maxLength: 80
              status:
                type: string
                enum:
                  - succeeded
                  - failed
                  - pending
                  - not_called
          description: >-
            Tool keys must be unique and distinct from comparison keys. Keys are
            case-sensitive and trimmed. Send one authoritative status per
            execution prerequisite.
        requiredTools:
          type: array
          maxItems: 20
          uniqueItems: true
          default: []
          description: >-
            Caller-owned prerequisite tool keys, independent of reported
            executions. Every listed tool must be reported as succeeded. Omitted
            required tools produce missing and block approval. Use only
            pre-action prerequisites, not the action being authorized. Defaults
            to an empty list for compatibility.
          items:
            type: string
            minLength: 1
            maxLength: 80
    ActionCheckDecision:
      type: object
      required:
        - decision
        - allowed
        - checks
      properties:
        decision:
          type: string
          enum:
            - proceed
            - request_clarification
            - flag_mismatch
        allowed:
          type: boolean
        checks:
          type: array
          items:
            type: object
            required:
              - key
              - status
            properties:
              key:
                type: string
              status:
                type: string
                enum:
                  - matched
                  - mismatch
                  - missing
                  - failed
                  - pending
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send `Authorization: Bearer YOUR_API_KEY`. The key resolves to a single
        organization.

````