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

# Quickstart

> Send your first piece of content through the Enforcement API in minutes

## Get started in three steps

Every result is a verdict. Pass. Fix. Block. Escalate.

Enforce your first piece of content with the ZeroDrift Enforcement API.

### Step 1: Get your API key

<AccordionGroup>
  <Accordion icon="key" title="Create an API key in Command">
    API keys live in ZeroDrift Command. Sign in, open **Settings**, then under **API** select **Keys**.

    <Frame>
      <img src="https://mintcdn.com/zerodrift/owsXk0Mh8ts2lMQQ/images/command-api-keys.png?fit=max&auto=format&n=owsXk0Mh8ts2lMQQ&q=85&s=6561c052d4d6c56b464d581803f200b8" alt="Command Settings → API → Keys empty state with Create first key" width="3285" height="1918" data-path="images/command-api-keys.png" />
    </Frame>

    1. Select **Create first key** (or **New API key** if you already have keys).
    2. In the **Create API key** dialog, enter a **Key name**, choose **Permissions** (Full access or Read only), and set **Rulepacks**.
    3. Select **Create**, then **Copy** the key immediately — Command shows the full value only once.

    Export it once and every sample on this site works as written:

    ```bash theme={null}
    export ZERODRIFT_API_KEY="zd_..."
    ```

    The key goes in the `x-api-key` header on all API requests.
  </Accordion>
</AccordionGroup>

### Step 2: Send content for enforcement

<AccordionGroup>
  <Accordion icon="paper-plane" title="Enforce financial content">
    The quickest way to test the API is with a text snippet:

    ```bash theme={null}
    curl -X POST "https://api.zerodrift.ai/api/v3/content/validate" \
      -H "x-api-key: $ZERODRIFT_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "content": "Our fund guarantees 20% returns with zero risk!",
        "mode": "async",
        "model_engine": "anchor_3_0"
      }'
    ```

    You'll receive a `job_id` in the response:

    ```json theme={null}
    {
      "api_version": "v3",
      "job_id": "abc123def456",
      "status": "queued",
      "mode": "async",
      "model_engine": "anchor_3_0",
      "poll": { "method": "GET", "url": "/api/v3/jobs/abc123def456" }
    }
    ```

    <Tip>`mode` is required. Enforcement runs on Anchor. `"model_engine": "anchor_3_0"` is Flagship (the default; older notes called this Base). Mini is `anchor_3_0_mini`; Max is `anchor_3_0_max`. Custom rules require Max — see [Enforce Content](/api-reference/validate/validate-content). See [Choose a model](/models). Use `"mode": "async"` for a job you poll; for short content, `"mode": "sync"` returns the completed verdict in a single response.</Tip>
  </Accordion>

  <Accordion icon="shield-heart" title="Enforce healthcare content">
    The same endpoint can enforce policies in other regulated industries:

    ```bash theme={null}
    curl -X POST "https://api.zerodrift.ai/api/v3/content/validate" \
      -H "x-api-key: $ZERODRIFT_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "content": "Send Jane Doe'\''s diagnosis and treatment plan to the entire partner mailing list.",
        "mode": "sync",
        "model_engine": "anchor_3_0"
      }'
    ```
  </Accordion>
</AccordionGroup>

### Step 3: Get the results

<Accordion icon="clipboard-check" title="Poll for results">
  Use the `job_id` to retrieve the results:

  ```bash theme={null}
  curl "https://api.zerodrift.ai/api/v3/jobs/abc123def456" \
    -H "x-api-key: $ZERODRIFT_API_KEY"
  ```

  Poll until `status` is `completed` or `failed`. A completed response includes:

  ```json theme={null}
  {
    "api_version": "v3",
    "job_id": "abc123def456",
    "status": "completed",
    "mode": "async",
    "submitted_at": "2026-09-23T04:44:13.879781+00:00",
    "model_engine": "anchor_3_0",
    "result": {
      "overall_status": "needs_changes",
      "summary": { "do_not_send": 0, "send_with_caution": 1, "document_pages": 1 },
      "revalidation_recommended": false,
      "units": 1,
      "cost": { "currency": "USD", "amount": "0.01" },
      "violations": [
        {
          "rule_id": "guarantee_of_returns",
          "signal_name": "Guarantees of returns",
          "rule_type": "SLM_SIGNAL",
          "severity": "send_with_caution",
          "confidence": "high",
          "quote": "Our fund guarantees 20% returns with zero risk!",
          "fix": {
            "action": "replace",
            "suggested_text": "Returns are not guaranteed and involve risk."
          }
        }
      ]
    },
    "extracted_text": null
  }
  ```

  Read `result.overall_status`: `approved` is Pass, `needs_changes` is Fix,
  and `do not send` is Block. Anything you would not apply automatically,
  escalate to a human. See
  [Get Verdict](/api-reference/validate/get-results).
</Accordion>

## Next steps

Explore the full API capabilities:

<CardGroup cols={2}>
  <Card title="Use Cases" icon="list-check" href="/use-cases">
    What teams enforce with the API, and which guide to follow for each.
  </Card>

  <Card title="Concepts" icon="book" href="/concepts">
    Verdicts, rulepacks, policies, and adapters in one page.
  </Card>

  <Card title="Enforce Content" icon="paper-plane" href="/api-reference/validate/validate-content">
    Full request and response details for the enforcement endpoint used above.
  </Card>

  <Card title="Rule Packs" icon="list-check" href="/api-reference/rulepacks">
    Browse the managed rule pack catalog.
  </Card>

  <Card title="Train an Adapter" icon="graduation-cap" href="/guides/train-an-adapter">
    Import a policy, train a policy-specific adapter, and enforce against it.
  </Card>

  <Card title="SDKs" icon="code" href="/generate-sdk">
    Produce a typed Python or TypeScript client from the OpenAPI spec.
  </Card>

  <Card title="MCP Connectors" icon="plug" href="/connecting-mcp">
    Import a policy from Notion, Linear, Confluence, or Google Drive instead of uploading a file.
  </Card>
</CardGroup>

<Note>
  **Need help?** Contact us at **[support@zerodrift.ai](mailto:support@zerodrift.ai)**
</Note>


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