---
title: "Record a provenance assertion"
method: POST
path: "/api/v1/assets/{assetH}/provenance"
tags: ["Assets"]
---

# Record a provenance assertion

`POST /api/v1/assets/{assetH}/provenance`

## Request

- Base URL: `https://numonic.ai`
- URL: `https://numonic.ai/api/v1/assets/{assetH}/provenance`
- Auth: API key in header `x-api-key`

Record a user-asserted provenance statement for an asset: its prompt, a source asset, a workflow file, or a declaration that it is not AI-generated or has an unknown origin. The request body is selected by `assertion_type`. Requires the `write` scope.

## Path parameters

- `assetH` string, required: Asset hash (40-char hex SHA-1)

## Request body

- union
  - object
    - `assertion_type` 'prompt', required
    - `prompt_text` string, required
    - `negative_prompt` string
    - `model_name` string
    - `seed` integer
    - `note` string
  - object
    - `assertion_type` 'source_link', required
    - `source_asset_h` string, required: Hash of the source asset
    - `note` string
  - object
    - `assertion_type` 'workflow', required
    - `workflow_filename` string
    - `workflow_json` object, required: Workflow JSON (up to about 2 MB)
    - `note` string
  - object
    - `assertion_type` 'origin_declaration', required
    - `origin_declaration` 'non_ai' | 'unknown', required
    - `note` string

## Response `201`

Provenance assertion recorded

- object
  - `message` string, required
  - `assertion_type` string, required
  - `recorded_at` string, required
  - `lineage_link_h` string, nullable, required: Hash of the lineage link created by a source_link assertion, otherwise null

## Other responses

- `400`: Invalid asset hash or request body
- `401`: Missing or invalid credentials
- `403`: Permission denied
- `404`: Asset or source asset not found

---

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