> ## 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.

# Create List

> POST /v3/lists/ — create a new allowlist or custom list for your Didit application. System blocklists are auto-provisioned. Pay-per-call, no contracts.

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="Create List API Prompt"
  prompt={`Create a new allowlist or custom list in my Didit application through the Management API.

Endpoint:
POST https://verification.didit.me/v3/lists/

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

Goal:
- Create an allowlist (used in workflow conditions to approve / fast-track matching items) or a custom list (for workflow branching, monitoring rules, or manual review).
- System blocklists are auto-provisioned (one per entry type). You cannot create blocklists.

Request body (application/json):
{
"name": "Trusted IPs",
"description": "Optional description",
"list_type": "allowlist",    // "allowlist" or "custom"
"entry_type": "ip_address"   // face | document | phone | email | ip_address | device_fingerprint | wallet_address | bank_account | user | business | country | key
}

Required: name, list_type, entry_type. name must be unique per application.

Example call:
curl -X POST "https://verification.didit.me/v3/lists/" \\
-H "x-api-key: YOUR_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{"name": "Trusted IPs", "list_type": "allowlist", "entry_type": "ip_address"}'

Example response (201):
{
"uuid": "f1e2d3c4-...",
"name": "Trusted IPs",
"list_type": "allowlist",
"entry_type": "ip_address",
"is_system": false,
"entry_count": 0,
"created_at": "..."
}

Persist the returned uuid — use it as list_uuid for all subsequent entry calls and to reference the list from workflow status_rules (value_type: "list").

Failure modes:
- 400 — list_type is "blocklist" (not creatable), name missing, or entry_type unsupported.
- 401 — missing or malformed x-api-key.
- 403 — canonical { "detail": "You do not have permission to perform this action." } envelope.
- 409 — a list with this name already exists in this application.

Side effects:
- New list scoped to the application resolved from the API key.

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

Create a new list for your application. Only `allowlist` and `custom` types can be created — system blocklists are auto-provisioned.

## Request body

| Field         | Type   | Required | Description                                                                                                                                              |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | string | Yes      | List name (must be unique per application)                                                                                                               |
| `description` | string | No       | Optional description                                                                                                                                     |
| `list_type`   | string | Yes      | `allowlist` or `custom`                                                                                                                                  |
| `entry_type`  | string | Yes      | One of: `face`, `document`, `phone`, `email`, `ip_address`, `device_fingerprint`, `wallet_address`, `bank_account`, `country`, `user`, `business`, `key` |

<RequestExample>
  ```bash theme={null}
  curl -X POST "https://verification.didit.me/v3/lists/" \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"name": "Trusted IPs", "list_type": "allowlist", "entry_type": "ip_address"}'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "uuid": "f1e2d3c4-...",
    "name": "Trusted IPs",
    "description": "",
    "list_type": "allowlist",
    "entry_type": "ip_address",
    "is_system": false,
    "entry_count": 0,
    "last_entry_added_at": null,
    "created_at": "2025-06-09T12:26:54Z",
    "updated_at": "2025-06-09T12:26:54Z"
  }
  ```
</ResponseExample>
