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

# Reject agent approval

> An independent authorized human reviewer may reject once. One rejection immediately closes the request. Requesters, previous reviewers, API keys, and expired requests cannot be reviewed.

An independent authorized human reviewer may reject once. One rejection immediately closes the request. Requesters, previous reviewers, API keys, and expired requests cannot be reviewed.

See [independent agent reviews](/guides/agent-approvals) for the authorization and execution boundaries.


## OpenAPI

````yaml maip-openapi.yaml POST /v1/approvals/{approvalID}/reject
openapi: 3.0.3
info:
  title: Truthlocks MAIP receipts and approvals
  version: 2.0.0
servers:
  - url: https://api.truthlocks.com
    description: Production
  - url: https://sandbox-api.truthlocks.com
    description: Sandbox
security:
  - apiKey: []
  - bearerAuth: []
paths:
  /v1/approvals/{approvalID}/reject:
    post:
      tags:
        - Agent approvals
      summary: Reject agent approval
      description: >-
        An independent authorized human reviewer may reject once. One rejection
        immediately closes the request. Requesters, previous reviewers, API
        keys, and expired requests cannot be reviewed.
      operationId: maipApprovalsReject
      parameters:
        - name: approvalID
          in: path
          required: true
          description: UUID returned when the approval request was created.
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - reason
              properties:
                reason:
                  type: string
                  minLength: 1
                  description: >-
                    Reason for the decision; nonblank and at most 2000 UTF-8
                    bytes.
      responses:
        '200':
          description: Recorded result
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/AgentApproval'
                  - type: object
                    properties:
                      approval_id:
                        type: string
                        format: uuid
                        description: Alias of id for compatibility.
        '400':
          description: Invalid identifier, request fields, or decision reason
        '401':
          description: Authentication required
        '403':
          description: >-
            Wrong workspace realm, missing current reviewer permission,
            self-review, or unauthorized cancellation
        '404':
          description: Request or active agent absent from this workspace environment
        '409':
          description: Already decided, duplicate reviewer, or expired request
      security:
        - bearerAuth: []
components:
  schemas:
    AgentApproval:
      type: object
      required:
        - id
        - agent_id
        - status
        - requested_by
        - required_approvals
        - current_approvals
        - expires_at
        - decisions
      properties:
        id:
          type: string
          format: uuid
        tenant_id:
          type: string
          format: uuid
        agent_id:
          type: string
        action:
          type: string
        resource:
          type: string
        scope:
          type: string
        justification:
          type: string
        requested_by:
          type: string
          description: >-
            Authenticated requester: human user UUID or api_key:<stored key ID>;
            never a caller-supplied reviewer.
        decision_reason:
          type: string
        status:
          type: string
          enum:
            - pending
            - approved
            - rejected
            - expired
            - cancelled
        risk_level:
          type: string
          enum:
            - low
            - medium
            - high
            - critical
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        expires_at:
          type: string
          format: date-time
        decided_at:
          type: string
          format: date-time
        decided_by:
          type: string
          description: >-
            Final reviewer or requester cancelling the request; absent while
            pending.
        required_approvals:
          type: integer
          minimum: 1
          maximum: 10
        current_approvals:
          type: integer
          minimum: 0
          maximum: 10
        decisions:
          type: array
          description: >-
            Immutable individual reviews. The queue response leaves this empty;
            get the request for its complete review history.
          items:
            type: object
            properties:
              reviewer_id:
                type: string
                format: uuid
              decision:
                type: string
                enum:
                  - approved
                  - rejected
              reason:
                type: string
              created_at:
                type: string
                format: date-time
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
    bearerAuth:
      type: http
      scheme: bearer

````

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