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

# Create Cases

> 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 takes a title (max 500 chars), 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). For the case payload, send free-form `data` OR a structured `json_data` object, never both, and a single request must be all free-text or all structured. `json_data` is validated against the queue's Case schema and requires the queue to have one; a schema-guarded queue accepts only `json_data`, while a queue without the guard also accepts free-text `data`. A guarded queue that has no schema yet accepts free-text `data` only when typed Case schemas are off for that queue — the team has them turned off AND the queue is not inside an automation (there is then no way to declare a schema, so the guard cannot apply). A queue inside an automation always has them on, so a guarded one refuses free-text `data` until its schema is declared.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json post /v2/queues/{queue_id}/cases
openapi: 3.0.3
info:
  title: Duvo Public API
  description: >-
    Public API for programmatic access to Duvo. Authenticate with API keys
    created in the Duvo dashboard.


    ## Rate limits


    Requests are counted per API key. Every response advertises the quota with
    the IETF RateLimit fields, so a client can self-throttle without waiting for
    a rejection:


    - `RateLimit-Policy: "default";q=<quota>;w=<window seconds>` — the policy in
    force: `q` requests per `w` seconds.

    - `RateLimit: "default";r=<remaining>;t=<seconds>` — the live state: `r`
    requests left, quota resetting in `t` seconds.

    - Read the quota from the headers rather than hard-coding it; it differs per
    environment.

    - The same numbers are also sent as `ratelimit-limit`, `ratelimit-remaining`
    and `ratelimit-reset`.


    Once the quota is exhausted the API answers `429 Too Many Requests` with
    `Retry-After` set to the seconds to wait; honor it instead of retrying
    immediately.
  version: 1.0.0
servers:
  - url: https://api.duvo.ai
    description: Production server
security: []
tags:
  - name: Runs
    description: Start, monitor, and manage agent runs (Runs in the Duvo UI)
  - name: Sandboxes
    description: Create sandboxes and upload files for agent runs
  - name: Queues
    description: Manage queues and their agent bindings
  - name: Cases
    description: Create, list, and manage cases and their labels within queues
  - name: Case Approvals
    description: Submit decisions on pending case approval requests issued by an agent run
  - name: Case Attachments
    description: Upload, list, download, and remove the files attached to a case
  - name: Automations
    description: >-
      List and manage automations — the workspace container that groups the
      agents and queues making up one end-to-end process
  - name: Agents
    description: Create and manage agents for automation workloads
  - name: Revisions
    description: Create and manage agent revisions — the underlying Setup for an Agent
  - name: Agent Folders
    description: Organize agents into folders
  - name: Agent Memory
    description: Read an agent's memory files (the Memory feature in the Duvo UI)
  - name: Suggestions
    description: >-
      List, apply, and dismiss an Agent's improvement suggestions (the
      suggestions inbox in the Duvo UI)
  - name: Notifications
    description: >-
      List, read, dismiss, and clear the authenticated user's team notifications
      (the Notification Center in the Duvo UI)
  - name: Schedules
    description: List schedules configured for an agent
  - name: Duvo Pulse
    description: >-
      Create, list, iterate on, and delete Duvo Pulse dashboards — live,
      agent-generated visualizations of your Duvo data
  - name: Case Triggers
    description: >-
      Configure case triggers that automatically dispatch agent runs (Runs in
      the Duvo UI) for cases added to a queue
  - name: Triggers
    description: >-
      Configure event triggers that start a Run automatically when an external
      event fires (e.g. an email arrives, a Linear issue is created, or a file
      changes in Google Drive)
  - name: Skills
    description: Manage team and system skills (reusable knowledge packs).
  - name: Files
    description: Manage team files.
  - name: Plugins
    description: Discover plugins that can be referenced from a revision.
  - name: Organizations
    description: Inspect organizations you belong to and the teams within them
  - name: Team
    description: Inspect the team and members associated with the API key
  - name: Invites
    description: >-
      Invite people to a team — one at a time or in bulk, scoped to a Clarity
      process or the whole team — and manage the team's shareable invite link
  - name: Integrations
    description: Browse the team's catalog of available integration types
  - name: Connections
    description: Manage your connected integrations
  - name: Credentials
    description: >-
      Manage logins (domain + username + password + TOTP) used by agents to sign
      in to websites and desktop applications, and attach them to assignment
      revisions
  - name: Secrets
    description: >-
      Manage env-var secrets injected into runs, and attach them to assignment
      revisions. Only metadata is exposed; values are never returned
  - name: Revision Integrations
    description: >-
      Attach integrations to assignment revisions, pin specific connections, and
      link queues
  - name: ClarityV2
    description: >-
      Manage Clarity v2 process snapshots, automation proposals, and the
      extra-capture-request follow-up loop
paths:
  /v2/queues/{queue_id}/cases:
    post:
      tags:
        - Cases
      summary: Create 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
        takes a title (max 500 chars), 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). For the case payload, send
        free-form `data` OR a structured `json_data` object, never both, and a
        single request must be all free-text or all structured. `json_data` is
        validated against the queue's Case schema and requires the queue to have
        one; a schema-guarded queue accepts only `json_data`, while a queue
        without the guard also accepts free-text `data`. A guarded queue that
        has no schema yet accepts free-text `data` only when typed Case schemas
        are off for that queue — the team has them turned off AND the queue is
        not inside an automation (there is then no way to declare a schema, so
        the guard cannot apply). A queue inside an automation always has them
        on, so a guarded one refuses free-text `data` until its schema is
        declared.
      operationId: createCases
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: queue_id
          required: true
          description: The queue's unique identifier
      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
                    json_data:
                      description: >-
                        Structured payload for a queue that has a Case schema.
                        Validated against that schema and mutually exclusive
                        with `data` — send this instead of free-text `data` on a
                        schema-guarded queue. Within one request, either every
                        case is structured or every case is free-text.
                      type: object
                      additionalProperties: {}
                    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
                      json_data:
                        description: >-
                          Structured payload for a queue that has a Case schema.
                          Validated against that schema and mutually exclusive
                          with `data` — send this instead of free-text `data` on
                          a schema-guarded queue. Within one request, either
                          every case is structured or every case is free-text.
                        type: object
                        additionalProperties: {}
                      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
      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
                        json_data:
                          nullable: true
                          type: object
                          additionalProperties: {}
                        json_schema_id:
                          nullable: true
                          type: string
                          format: uuid
                        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
                            - evaluating
                            - success
                            - issues
                            - completed
                            - failed
                            - canceled
                        outcome_source:
                          nullable: true
                          type: string
                          enum:
                            - system
                            - eval
                            - manual
                        outcome_severity:
                          nullable: true
                          type: string
                          enum:
                            - critical
                            - medium
                            - low
                        claimed_at:
                          type: string
                          nullable: true
                        claimed_by_run_id:
                          type: string
                          nullable: true
                        completed_at:
                          type: string
                          nullable: true
                        postponed_to:
                          type: string
                          nullable: true
                        created_at:
                          type: string
                        updated_at:
                          type: string
                        created_by_user_id:
                          nullable: true
                          type: string
                          format: uuid
                        created_by_user_name:
                          type: string
                          nullable: true
                        created_by_user_email:
                          type: string
                          nullable: true
                        agent_run_status:
                          type: string
                          nullable: true
                        agent_run_user_id:
                          nullable: true
                          type: string
                          format: uuid
                        pending_human_request_id:
                          nullable: true
                          type: string
                          format: uuid
                        pending_approval_batch_id:
                          nullable: true
                          type: string
                          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:
                          nullable: true
                          type: object
                          properties:
                            evaluationId:
                              type: string
                              format: uuid
                            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
        '409':
          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
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Get your API key from the Duvo dashboard.

````

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