---
title: "Grounding gate: check a full draft (citations + quotes + currency)"
method: POST
path: "/api/v1/check-draft"
tags: ["objects"]
---

# Grounding gate: check a full draft (citations + quotes + currency)

`POST /api/v1/check-draft`

## Request

- Base URL: `https://kvasir.legal`
- URL: `https://kvasir.legal/api/v1/check-draft`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
  - none

Send a drafted text (answer, memo, brief). Extracts every legal citation and verifies it, checks verbatim quotes („…"/"…") against the canonical source wording (similarity + source excerpt on deviation), and flags repealed acts/norms and pending legislative changes to cited acts. Returns a structured report with `summary.verdict` (pass | warn | fail) and per-finding severities — built to run as the last step before an AI answer ships.

## Request body

- object
  - `quellen` string: comma-separated jurisdiction filter (bund, by, nrw, sn, bb, hb, at, ch, eu) — pins abbreviations that exist in more than one jurisdiction, e.g. BV (CH/BY)
  - `text` string, required

## Response `200`

Grounding report

- object
  - `citations` object[]
  - `findings` object[]
  - `quotes` object[]
  - `summary` object
    - `citations` object
    - `complete` boolean: false = draft only partially checked (size caps) — never treat as a clean pass
    - `findings` object
    - `quotes` object
    - `verdict` 'pass' | 'warn' | 'fail'

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key
- `429`: Rate limit (120/min default), monthly quota or sandbox cap reached — `code` distinguishes; honor Retry-After

---

[API](https://skmtc.dev/kvasir/apis/kvasir-legal-grounding-api.md) · [All operations](https://skmtc.dev/kvasir/apis/kvasir-legal-grounding-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kvasir/apis/kvasir-legal-grounding-api/revisions/87f32370cf06?raw)
