---
title: "Batch-resolve up to 100 URIs (e.g. ground all citations in one answer)"
method: POST
path: "/api/v1/objects"
tags: ["objects"]
---

# Batch-resolve up to 100 URIs (e.g. ground all citations in one answer)

`POST /api/v1/objects`

## Request

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

## Request body

- object
  - `commentary_scope` 'self' | 'inherit'
  - `include` string: string or array of: content, units, versions, relations, authority, commentary, all
  - `uris` string[], required

## Response `200`

Objects in input order

- object
  - `objects` LegalObject[]
    - `authority` object
      - `indeg` integer
      - `pct` number
      - `score` number
    - `canonical_uri` string
    - `children` object[]: statute TOC (include=children)
      - `label` string
      - `section_path` string[]
      - `uri` string
    - `commentary` object[]: include=commentary: anchored, author-attributed annotations (never merged); with commentary_scope=inherit entries carry inherited=true + anchor_level
    - `content` object
    - `exists` boolean, required
    - `hint` string
    - `identity` object
      - `href` string, nullable
      - `path` union: concept hierarchy: array of {code,label}
        - object[]
        - string
      - `subtitle` string, nullable
      - `title` string
    - `include_ignored` string[]
    - `kind` 'norm' | 'decision' | 'gesetz' | 'aufsatz' | 'concept' | 'flow' | 'normversion' | 'material' | 'section' | 'unknown', required
    - `object_version` string, required
    - `provenance` Provenance: The verifiability kernel.
      - `derived` boolean
      - `quelle` string, nullable
      - `retrieved_at` string, date-time, nullable
      - `source` string
      - `source_url` string, nullable
      - `version` string, nullable: Content version (hash or update timestamp)
    - `relations` object
      - `in` object[]
      - `out` object[]
    - `suggestions` object[]: did-you-mean candidates when exists=false
    - `units` Unit[]
      - `citation` string
      - `deeplink` string
      - `label` string
      - `path` string: norm: a<abs>.n<nr>.b<buchst>; decision: r<Rn>
      - `text` string
      - `unit` string
    - `units_confidence` number: Fraction of extracted sub-units whose text verifies against the full text (1.0 = all clean). Only verified units are returned.
    - `uri` string, required
    - `versions` object[]

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