---
title: "Check an intended use against a license: permitted, prohibited, needs review or not documented, with duties and an uncertainty block (level: none, review or undocumented; reasons; human_review_required). A check reads license terms only; its verdicts are not receipt verdicts (allowed, blocked) and never convert into them"
method: POST
path: "/v1/licenses/check"
tags: ["Rights desk"]
---

# Check an intended use against a license: permitted, prohibited, needs review or not documented, with duties and an uncertainty block (level: none, review or undocumented; reasons; human_review_required). A check reads license terms only; its verdicts are not receipt verdicts (allowed, blocked) and never convert into them

`POST /v1/licenses/check`

## Request

- Base URL: `https://www.rightshold.com`
- URL: `https://www.rightshold.com/v1/licenses/check`
- Auth: none required

## Headers

- `X-Request-Id` string

## Request body

- object
  - `license` string, required: SPDX id, e.g. CC-BY-NC-4.0 (uncurated ids answer needs_review)
  - `source_url` string: Instead of license: a page on GitHub, Hugging Face, npm, PyPI, Wikimedia Commons, Unsplash or Pexels; the license it declares is checked
  - `intended_use` object, required: Intended use: every true flag is a right the check must find documented; omitted flags are false; unknown fields are refused. For instance {"commercial_use":true,"deployment":true,"attribution_planned":true,"duration_days":365}
    - `commercial_use` boolean
    - `redistribution` boolean
    - `modification` boolean
    - `sublicensing` boolean
    - `deployment` boolean
    - `model_training` boolean
    - `model_inference` boolean
    - `attribution_planned` boolean
    - `geography` string: worldwide (default) or a region code such as US, EU, UK
    - `duration_days` integer, nullable: Whole days of use (1 to 36500), or null for no fixed term

## Response `200`

OK

- object: Inferred from 401 recorded responses; required fields appeared in every one; additional properties may appear.
  - `verdict` string, required
  - `answer` string, required
  - `uncertainty` object, required
    - `level` string, required
    - `reasons` string[], required
    - `human_review_required` boolean, required
  - `uses_evaluated` string[], required
  - `duties` string[], required
  - `findings` object[], required
    - `code` string, required
    - `explanation` string, required
  - `next_actions` string[], required
  - `license` object, required
    - `curation` string, required
    - `id` string, required
    - `name` string, required
    - `short` string, required
    - `family` string, required
    - `version` string, required
    - `url` string, required
    - `summary` string, required
    - `suits` string[], required
    - `permissions` string[], required
    - `prohibitions` string[], required
    - `needs_review` string[], required
    - `prohibited_combinations` object[], required
      - `uses` string[], required
      - `explanation` string, required
    - `duties` string[], required
    - `notes` string[], required
    - `reference_hash` string, required
    - `profile_version` string, required
    - `reviewer` string, required
    - `page` string, required
    - `odrl` object, required
      - `@context` union[], required
        - union
          - string
          - object
      - `@type` string, required
      - `uid` string, required
      - `profile` string, required
      - `permission` object[], required
      - `prohibition` object[], required
      - `rs:needsReview` string[], required
    - `reference_hash_covers` string[], required
    - `verification` object
      - `status` string, required
      - `notice` string, required
      - `official_text` string, required
  - `cache` object, required
    - `key` string, required
    - `deterministic` boolean, required
    - `depends_on` object, required
      - `reference_hash` string, required
      - `profile_version` string, required
      - `declared_license` string
      - `source` string
    - `max_age_seconds` integer, required
    - `note` string, required
  - `limitations` string[], required
  - `next_action` object
    - `action` string, required
    - `label` string, required
    - `why` string, required
    - `needs` string, required
    - `tool` string
    - `rest` string
    - `arguments` object
      - `asset` object, required
        - `sha256` string, required
        - `name` string, required
      - `license` string, required
      - `intended_use` string, required
  - `resolved_from` string
  - `source` object
    - `platform` string, required
    - `item` string, required
    - `url` string, required
    - `declared_license` string, required
    - `license` string, required
    - `basis` string, required
    - `evidence_url` string, required
    - `note` string, required
    - `fetched_at` string, required
  - `verification` object
    - `status` string, required
    - `notice` string, required
    - `official_text` string, required

## Other responses

- `400`: Problem details: a stable error code, type URI, title, status and an explanation
- `401`: Problem details: a stable error code, type URI, title, status and an explanation
- `404`: Problem details: a stable error code, type URI, title, status and an explanation
- `405`: Problem details: a stable error code, type URI, title, status and an explanation
- `422`: Problem details: a stable error code, type URI, title, status and an explanation
- `429`: Request budget exhausted; retry after Retry-After seconds
- `500`: Problem details: a stable error code, type URI, title, status and an explanation
- `4XX`: {error, detail}

---

[API](https://skmtc.dev/rightshold/apis/rightshold-api.md) · [All operations](https://skmtc.dev/rightshold/apis/rightshold-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rightshold/apis/rightshold-api/revisions/cfe84fdde1ca?raw)
