---
title: "Create a new approval request"
method: POST
path: "/api/approval-requests"
tags: ["ApprovalRequests"]
---

# Create a new approval request

`POST /api/approval-requests`

## Request body

- object
  - `title` string, required
  - `questions` object[], required
    - `id` string, required
    - `type` 'approval' | 'text' | 'single-select' | 'multi-select' | 'boolean', required
    - `label` string, required
    - `required` boolean
    - `description` string
    - `placeholder` string
    - `multiline` boolean
    - `options` object[]
      - `value` string, required
      - `label` string, required
      - `description` string
    - `minSelections` integer
    - `maxSelections` integer
    - `defaultValue` boolean
  - `approvers` object, required
    - `users` string[]
    - `roles` string[]
    - `policy` union, required
      - 'any'
      - 'all'
      - object
        - `min` integer, required
  - `workflowRunId` string, uuid
  - `workflowRunStepId` string, uuid
  - `sourceTaskId` string, uuid
  - `timeoutSeconds` integer
  - `notifications` object[]
    - `channel` 'slack' | 'email', required
    - `target` string, required

## Response `201`

Approval request created

- object
  - `approvalRequest` object, required
    - `id` string, required
    - `title` string, required
    - `questions` object[], required
      - `id` string, required
      - `type` 'approval' | 'text' | 'single-select' | 'multi-select' | 'boolean', required
      - `label` string, required
      - `required` boolean
      - `description` string
      - `placeholder` string
      - `multiline` boolean
      - `options` object[]
        - `value` string, required
        - `label` string, required
        - `description` string
      - `minSelections` integer
      - `maxSelections` integer
      - `defaultValue` boolean
    - `workflowRunId` string, nullable, required
    - `workflowRunStepId` string, nullable, required
    - `sourceTaskId` string, nullable, required
    - `approvers` object, required
      - `users` string[]
      - `roles` string[]
      - `policy` union, required
        - 'any'
        - 'all'
        - object
          - `min` integer, required
    - `status` 'pending' | 'approved' | 'rejected' | 'timeout', required
    - `responses` object, nullable, required
    - `resolvedBy` string, nullable, required
    - `resolvedAt` string, nullable, required
    - `timeoutSeconds` number, nullable, required
    - `expiresAt` string, nullable, required
    - `notificationChannels` object[], nullable, required
      - `channel` 'slack' | 'email', required
      - `target` string, required
      - `messageTs` string
    - `createdBy` string
    - `createdAt` string, required
    - `updatedAt` string, required

## Other responses

- `400` — Validation error

---

[API](https://skmtc.net/desplega-ai/apis/agent-swarm-api.md) · [All operations](https://skmtc.net/desplega-ai/apis/agent-swarm-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/desplega-ai/agent-swarm-api/versions/0375890be8c4/schema)
