Records

Read a stored validation record

Returns the record created by a POST /v1/validate?record=true call, exactly as it was stored.

NO API KEY. The 128-bit id in the path is the credential: it is unguessable, so anyone holding the link reads the record and anyone who does not cannot enumerate their way to one. That is deliberate — the audience for a record is a buyer, an auditor or an onboarding desk, none of whom are our customers.

It is safe to hand out because of what is in it: a SHA-256 fingerprint of the document, the findings, and what ran. The document itself was never stored, and neither was the email or the API key of whoever ran the check.

The URL is the verification. This page is served by Attestwire from its own stored copy of the record, so whoever holds the link sees exactly what Attestwire recorded when the check ran — nobody can edit it, and the record cannot be re-issued with different findings under the same address. The link is also the only credential: the record id is 128 random bits and is not guessable, so anyone you send it to can read the record, and anyone you do not, cannot. Nothing here identifies the customer who ran the check, and the document itself was never stored — only its SHA-256 fingerprint, which you can reproduce from your own copy of the file.

IMMUTABLE, so the response carries a one-year Cache-Control: public, max-age=31536000, immutable. There is no update path — a record cannot be re-issued with different findings at the same address. The only thing that changes is that it stops existing 365 days after creation.

CORS is *, so a supplier-onboarding page can render one in the browser.

The same record with a human face is at /r/{id}, which is not described here because it is an HTML page rather than an API.

get/v1/records/{id}

Request

  • Base URL: https://api.attestwire.com
  • URL: https://api.attestwire.com/v1/records/{id}
  • Auth: none required

Path parameters

idstring required

The record id from the record.id field of the validation response.

Response

The record. Read statement before quoting anything else from it.

type'attestwire.validation-record' required
version1 required
idstring required
createdstring date-time required
expiresstring date-time required
validboolean required

No fatal findings. Copied from the verdict.

statementstring required

The liability wording, in full and verbatim on every record. Rendered unaltered on the HTML page too.

Example response

{
  "findings": [
    {
      "rule": "BR-DE-15"
    }
  ],
  "findings_truncated": {
    "total": 20012,
    "returned": 500,
    "cap": 500
  },
  "provenance": {
    "engine": "@attestwire/en16931",
    "engine_version": "0.14.1",
    "ruleset": "en16931@0.14.1",
    "profile": "xrechnung-ubl",
    "kosit_conformance": {
      "recorded": "2026-09-24",
      "validator": "1.6.3",
      "configuration": "3.0.2",
      "configuration_published": "2026-08-31"
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.