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

# Bulk Update Case Status

> Apply the same status transition to several cases in one call: OPEN reopens, AWAITING_USER requests info, RESOLVED resolves (resolution required). Each case is evaluated independently; gate failures (incomplete checklist, missing required note) are reported per case without aborting the batch.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="Bulk Update Case Status API Prompt"
  prompt={`Update the status of several cases in one call through the Management API.

Endpoint:
POST https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/

Authentication:
Use the x-api-key header with my Didit API key.

Request body:
{
"case_uuids": ["<uuid>", "<uuid>"],   // required, at least 1
"status": "RESOLVED",                   // required: OPEN | AWAITING_USER | RESOLVED
"resolution": "FALSE_POSITIVE",         // required when status is RESOLVED
"note": "Bulk-cleared after review"      // optional
}

Behavior:
- OPEN reopens each case, AWAITING_USER requests info, RESOLVED resolves with the given resolution/note.
- Each case is evaluated independently inside its own transaction - a case blocked by an incomplete checklist or a missing required note is reported in "failures" without aborting the rest of the batch.

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/" \\
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \\
-d '{"case_uuids": ["<uuid>"], "status": "RESOLVED", "resolution": "FALSE_POSITIVE"}'

Response 200: {"updated": 3, "failures": [{"case_uuid": "<uuid>", "detail": "Case has incomplete checklist items: ..."}]}

Failure modes:
- 400 - status is RESOLVED without a resolution, or case_uuids is empty.
- 401/403 - auth/permission errors.

For the full integration shape, see /integration/integration-prompt.`}
/>

Apply the same status transition to many cases at once, mirroring the Cases list's bulk **Set Status** action. Failures are reported per case, so one blocked case never rolls back the rest of the batch.

## Related

* [Resolve case](/management-api/cases/resolve)
* [List cases](/management-api/cases/list)


## OpenAPI

````yaml POST /v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/:
    post:
      tags:
        - Cases
      summary: Bulk update case status
      description: >-
        Apply the same status transition to several cases in one call: OPEN
        reopens, AWAITING_USER requests info, RESOLVED resolves (resolution
        required). Each case is evaluated independently; gate failures
        (incomplete checklist, missing required note) are reported per case
        without aborting the batch.
      operationId: bulk_update_case_status
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Organization UUID.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Application UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - case_uuids
                - status
              properties:
                case_uuids:
                  type: array
                  items:
                    type: string
                    format: uuid
                  minItems: 1
                status:
                  type: string
                  enum:
                    - OPEN
                    - AWAITING_USER
                    - RESOLVED
                resolution:
                  type: string
                  enum:
                    - FALSE_POSITIVE
                    - VALID_THREAT
                  description: Required when status is RESOLVED.
                note:
                  type: string
                  nullable: true
      responses:
        '200':
          description: Per-case results.
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated:
                    type: integer
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        case_uuid:
                          type: string
                          format: uuid
                        detail:
                          type: string
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/bulk/status/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"case_uuids": ["c1a5e000-0000-4000-8000-000000000001"], "status": "RESOLVED", "resolution": "FALSE_POSITIVE"}'

````