duvo.ai Cases API

Create, list, and manage cases and their labels within queues

Operations 21

DELETE /v2/queues/{queue_id}/cases Clear Queue Cases #
GET /v2/queues/{queue_id}/cases List Cases #
POST /v2/queues/{queue_id}/cases Create Cases #
GET /v2/cases/{case_id} Get Case #
DELETE /v2/cases/{case_id} Delete Case #
GET /v2/cases/{case_id}/runs List Case Runs #
GET /v2/cases/{case_id}/runs/{run_id}/recent-messages List Case Run Recent Messages #
POST /v2/queues/{queue_id}/cases/bulk-delete Bulk Delete Cases #
POST /v2/queues/{queue_id}/cases/bulk-reprocess Bulk Reprocess Cases #
POST /v2/queues/{queue_id}/cases/bulk-delegate Bulk Delegate Cases #
POST /v2/queues/{queue_id}/cases/bulk-retry Bulk Retry Cases #
POST /v2/queues/{queue_id}/cases/bulk-update-status Bulk Update Case Status #
POST /v2/queues/{queue_id}/cases/bulk-update-priority Bulk Update Case Priority #
POST /v2/queues/{queue_id}/cases/{case_id}/labels Assign Case Labels #
GET /v2/queues/{queue_id}/cases/{case_id}/labels List Case Labels #
GET /v2/queues/{queue_id}/labels List Queue Labels #
POST /v2/queues/{queue_id}/labels Create Queue Label #
POST /v2/queues/{queue_id}/cases/{case_id}/labels/unlink Unlink Case Labels #
DELETE /v2/queues/{queue_id}/labels/{label_id} Delete Queue Label #
PATCH /v2/queues/{queue_id}/labels/{label_id} Update Queue Label #
POST /v2/queues/{queue_id}/cases/search Search Cases #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/duvoai-cases-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

duvoai-cases-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Duvo Public Agent Folders Cases API
  description: Public API for programmatic access to Duvo. Authenticate with API keys created in the Duvo dashboard.
  version: 1.0.0
servers:
- url: https://api.duvo.ai
  description: Production server
tags:
- name: Cases
  description: Create, list, and manage cases and their labels within queues
paths:
  /v2/queues/{queue_id}/cases:
    delete:
      operationId: clearQueueCases
      tags:
      - Cases
      description: Delete every case in a queue. Interrupts any associated active runs first. Destructive — not exposed via MCP.
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: queue_id
        required: true
        description: The queue's unique identifier
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  deletedCount:
                    type: number
                  interruptedRunIds:
                    type: array
                    items:
                      type: string
                      format: uuid
                required:
                - success
                - deletedCount
                - interruptedRunIds
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
      summary: Clear Queue Cases
    get:
      operationId: listCases
      tags:
      - Cases
      description: List cases in a queue. Supports status, date-range, and free-text filters via query params. For label filters, use POST /v2/teams/:team_id/queues/:queue_id/cases/search.
      parameters:
      - schema:
          default: 20
          type: integer
          minimum: 1
          maximum: 100
        in: query
        name: limit
        required: false
        description: Number of cases per page (1-100, default 20).
      - schema:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        in: query
        name: offset
        required: false
        description: Zero-based offset for pagination.
      - schema:
          type: string
        in: query
        name: status
        required: false
        description: 'Filter by one or more case statuses (comma-separated). Values: pending, claimed, completed, failed, needs_input, postponed.'
      - schema:
          type: string
        in: query
        name: priority
        required: false
        description: 'Filter by one or more priority levels (comma-separated). Values: none, medium, high.'
      - schema:
          type: string
        in: query
        name: search
        required: false
        description: Full-text search across case title and data.
      - schema:
          type: string
        in: query
        name: created_at_from
        required: false
        description: Return only cases created on or after this ISO-8601 timestamp.
      - schema:
          type: string
        in: query
        name: updated_at_from
        required: false
        description: Return only cases updated on or after this ISO-8601 timestamp.
      - schema:
          default: created_at
          type: string
          enum:
          - created_at
          - updated_at
          - postponed_to
        in: query
        name: sort_by
        required: false
        description: 'Field to sort by. Default: created_at.'
      - schema:
          default: desc
          type: string
          enum:
          - asc
          - desc
        in: query
        name: sort_order
        required: false
        description: 'Sort direction. Default: desc.'
      - schema:
          type: string
          format: uuid
        in: path
        name: queue_id
        required: true
        description: The queue's unique identifier
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  cases:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        queue_id:
                          type: string
                          format: uuid
                        title:
                          type: string
                        data:
                          type: string
                        status:
                          type: string
                          enum:
                          - pending
                          - completed
                          - failed
                        priority:
                          type: string
                          enum:
                          - none
                          - medium
                          - high
                        display_status:
                          type: string
                          enum:
                          - pending
                          - in_progress
                          - needs_input
                          - postponed
                          - completed
                          - failed
                        claimed_at:
                          type:
                          - string
                          - 'null'
                        claimed_by_run_id:
                          type:
                          - string
                          - 'null'
                        completed_at:
                          type:
                          - string
                          - 'null'
                        postponed_to:
                          type:
                          - string
                          - 'null'
                        created_at:
                          type: string
                        updated_at:
                          type: string
                        created_by_user_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        created_by_user_name:
                          type:
                          - string
                          - 'null'
                        created_by_user_email:
                          type:
                          - string
                          - 'null'
                        agent_run_status:
                          type:
                          - string
                          - 'null'
                        agent_run_user_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_human_request_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_approval_batch_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_approval_assignee_user_ids:
                          type: array
                          items:
                            type: string
                            format: uuid
                        approval_approved_count:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        approval_rejected_count:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        eval_summary:
                          type:
                          - object
                          - 'null'
                          properties:
                            passed:
                              type: number
                            total:
                              type: number
                            final_comment:
                              type: string
                            status:
                              type: string
                              enum:
                              - ready
                              - unavailable
                              - in_progress
                            severityCounts:
                              type: object
                              properties:
                                critical:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                medium:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                low:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                              required:
                              - critical
                              - medium
                              - low
                              additionalProperties: false
                          required:
                          - passed
                          - total
                          - status
                          additionalProperties: false
                        search_match_data_snippet:
                          type: object
                          properties:
                            before:
                              type: string
                            match:
                              type: string
                            after:
                              type: string
                          required:
                          - before
                          - match
                          - after
                          additionalProperties: false
                        labels:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              key:
                                type: string
                              value:
                                type: string
                                minLength: 1
                              color_hue:
                                type: integer
                                minimum: 0
                                maximum: 360
                            required:
                            - id
                            - key
                            - value
                            - color_hue
                            additionalProperties: false
                      required:
                      - id
                      - queue_id
                      - title
                      - data
                      - status
                      - priority
                      - display_status
                      - claimed_at
                      - claimed_by_run_id
                      - completed_at
                      - postponed_to
                      - created_at
                      - updated_at
                      - created_by_user_id
                      - created_by_user_name
                      - created_by_user_email
                      - agent_run_status
                      - agent_run_user_id
                      - pending_human_request_id
                      - pending_approval_batch_id
                      - pending_approval_assignee_user_ids
                      - approval_approved_count
                      - approval_rejected_count
                      - labels
                      additionalProperties: false
                  total:
                    type: number
                  limit:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  offset:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                required:
                - cases
                - total
                - limit
                - offset
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
      summary: List Cases
    post:
      operationId: createCases
      tags:
      - Cases
      description: 'Create one or more cases in a queue. Provide either a single `case` object or a `cases` array (1-100); providing both returns 400. Each case accepts a title (max 500 chars), optional free-form `data`, optional labels that will be assigned to the case on creation (missing labels are created on the queue), and an optional priority (`none`, `medium`, or `high`; `medium`/`high` raise it above the default in the queue, `none` is the default). Priority only affects the order pending cases are picked up in: due postponed cases are handled first, then higher priority.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                case:
                  type: object
                  properties:
                    title:
                      type: string
                      minLength: 1
                      maxLength: 500
                      description: Short title for the case (max 500 characters). Put long context in `data`.
                    data:
                      description: Additional data for the case. Free-form text or JSON; Agents receive this on claim.
                      type: string
                    labels:
                      description: Optional labels to assign to the case at creation. Labels are created on the queue if they don't already exist.
                      maxItems: 50
                      type: array
                      items:
                        type: object
                        properties:
                          key:
                            default: ''
                            description: Label key (omit for a simple tag).
                            type: string
                          value:
                            type: string
                            minLength: 1
                            description: Label value (required).
                        required:
                        - value
                    priority:
                      description: Case priority. `medium` or `high` raise the case above the default in the queue; omit (or `none`) for normal priority. Only set this when the AOP or the user explicitly instructs prioritization — do not infer it on your own.
                      type: string
                      enum:
                      - none
                      - medium
                      - high
                  required:
                  - title
                cases:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        minLength: 1
                        maxLength: 500
                        description: Short title for the case (max 500 characters). Put long context in `data`.
                      data:
                        description: Additional data for the case. Free-form text or JSON; Agents receive this on claim.
                        type: string
                      labels:
                        description: Optional labels to assign to the case at creation. Labels are created on the queue if they don't already exist.
                        maxItems: 50
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              default: ''
                              description: Label key (omit for a simple tag).
                              type: string
                            value:
                              type: string
                              minLength: 1
                              description: Label value (required).
                          required:
                          - value
                      priority:
                        description: Case priority. `medium` or `high` raise the case above the default in the queue; omit (or `none`) for normal priority. Only set this when the AOP or the user explicitly instructs prioritization — do not infer it on your own.
                        type: string
                        enum:
                        - none
                        - medium
                        - high
                    required:
                    - title
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: queue_id
        required: true
        description: The queue's unique identifier
      security:
      - bearerAuth: []
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  added_cases:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        queue_id:
                          type: string
                          format: uuid
                        title:
                          type: string
                        data:
                          type: string
                        status:
                          type: string
                          enum:
                          - pending
                          - completed
                          - failed
                        priority:
                          type: string
                          enum:
                          - none
                          - medium
                          - high
                        display_status:
                          type: string
                          enum:
                          - pending
                          - in_progress
                          - needs_input
                          - postponed
                          - completed
                          - failed
                        claimed_at:
                          type:
                          - string
                          - 'null'
                        claimed_by_run_id:
                          type:
                          - string
                          - 'null'
                        completed_at:
                          type:
                          - string
                          - 'null'
                        postponed_to:
                          type:
                          - string
                          - 'null'
                        created_at:
                          type: string
                        updated_at:
                          type: string
                        created_by_user_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        created_by_user_name:
                          type:
                          - string
                          - 'null'
                        created_by_user_email:
                          type:
                          - string
                          - 'null'
                        agent_run_status:
                          type:
                          - string
                          - 'null'
                        agent_run_user_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_human_request_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_approval_batch_id:
                          type:
                          - string
                          - 'null'
                          format: uuid
                        pending_approval_assignee_user_ids:
                          type: array
                          items:
                            type: string
                            format: uuid
                        approval_approved_count:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        approval_rejected_count:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        eval_summary:
                          type:
                          - object
                          - 'null'
                          properties:
                            passed:
                              type: number
                            total:
                              type: number
                            final_comment:
                              type: string
                            status:
                              type: string
                              enum:
                              - ready
                              - unavailable
                              - in_progress
                            severityCounts:
                              type: object
                              properties:
                                critical:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                medium:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                low:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                              required:
                              - critical
                              - medium
                              - low
                              additionalProperties: false
                          required:
                          - passed
                          - total
                          - status
                          additionalProperties: false
                        search_match_data_snippet:
                          type: object
                          properties:
                            before:
                              type: string
                            match:
                              type: string
                            after:
                              type: string
                          required:
                          - before
                          - match
                          - after
                          additionalProperties: false
                        labels:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              key:
                                type: string
                              value:
                                type: string
                                minLength: 1
                              color_hue:
                                type: integer
                                minimum: 0
                                maximum: 360
                            required:
                            - id
                            - key
                            - value
                            - color_hue
                            additionalProperties: false
                      required:
                      - id
                      - queue_id
                      - title
                      - data
                      - status
                      - priority
                      - display_status
                      - claimed_at
                      - claimed_by_run_id
                      - completed_at
                      - postponed_to
                      - created_at
                      - updated_at
                      - created_by_user_id
                      - created_by_user_name
                      - created_by_user_email
                      - agent_run_status
                      - agent_run_user_id
                      - pending_human_request_id
                      - pending_approval_batch_id
                      - pending_approval_assignee_user_ids
                      - approval_approved_count
                      - approval_rejected_count
                      - labels
                      additionalProperties: false
                required:
                - added_cases
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
                additionalProperties: false
      summary: Create Cases
  /v2/cases/{case_id}:
    get:
      operationId: getCase
      tags:
      - Cases
      description: Get a case by ID. Returns the case, its event history, and every case-approval batch ever created on the case (newest first).
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: case_id
        required: true
        description: The case's unique identifier
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  case:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      queue_id:
                        type: string
                        format: uuid
                      title:
                        type: string
                      data:
                        type: string
                      status:
                        type: string
                        enum:
                        - pending
                        - completed
                        - failed
                      priority:
                        type: string
                        enum:
                        - none
                        - medium
                        - high
                      display_status:
                        type: string
                        enum:
                        - pending
                        - in_progress
                        - needs_input
                        - postponed
                        - completed
                        - failed
                      claimed_at:
                        type:
                        - string
                        - 'null'
                      claimed_by_run_id:
                        type:
                        - string
                        - 'null'
       

# --- truncated at 32 KB (146 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/duvo-ai/refs/heads/main/openapi/duvoai-cases-api-openapi.yml