API keys
Issuing, scoping, rotating and revoking credentials — and what to do about a leak.
The primary endpoint needs no credential at all. POST /v1/verifications answers anonymously.
A key adds three things to verification, and none of them is a different verdict:
- a higher rate limit,
- a durable verification log you can reconcile against,
- your own
referenceechoed back on every verification.
You need one to list or read verifications back, and to authenticate documents as your organisation. See authenticate as your organisation.
Getting a key
Settings → Organisation → API credentials, in the portal. An admin or a signatory can issue
one, once they have completed their own identity verification.
The secret is shown once, at creation, and is never retrievable afterwards. Store it where you store other production credentials; if you lose it, revoke it and issue another rather than hunting for it.
Keys are minted in the portal only, by a signed-in person. An API key cannot mint another API key — a credential that can create credentials is an escalation surface.
Scopes
| Scope | What it allows | On a new key |
|---|---|---|
verifications:read | Verify documents and read your verification log | Always |
records:write | Authenticate documents as your organisation | When your organisation has the add-on |
records:revoke | Revoke records your organisation authenticated | Only when you ask for it |
Scopes are fixed when the key is created and never widen afterwards. If you need another scope,
create a new key. A key with records:revoke also carries records:write, so protect it like a
signing key and revoke it when its job is done.
Scopes only ever subtract. Your organisation's API access is checked first, and a scope can never grant beyond it.
Rotation
Several keys can be active at once. Rotation is therefore three steps:
- Issue the replacement.
- Deploy it.
- Revoke the old one once traffic has moved.
There is no cutover window and no coordinated switch.
A key expires 365 days after it is issued, and then returns 401. The lifetime is fixed and
there is no expiry picker, so keys minted at different times expire at different times. Record the
issue date of every key you deploy and rotate before it lapses.
Revocation
Revocation takes effect immediately. There is no propagation delay to wait out, and no cache that keeps a revoked key working.
Revoking a key does not affect verifications already performed with it — your reconciliation log survives the credential that produced it.
live and test
A key's prefix selects its environment. There is no separate hostname and no separate account.
| Prefix | Environment | |
|---|---|---|
aud_live_ | production | Works from the moment it is issued, including while your organisation is being validated. See Disclosure tiers. |
aud_test_ | test | Creates and reads test records only. A test key never sees live records, and a live key never sees test ones. See sandbox and test keys. |
The two are isolated, not ranked. Neither is a permission level, and choosing one does not change what you are entitled to. The prefix keeps your live and test work apart, and that separation is enforced on every read and write.
Validation status affects your disclosure tier — how much detail a response carries — never whether a key works.
If a key leaks
Revoke it yourself, immediately, from Settings → Organisation → API credentials. Then issue a replacement — because several keys can be active at once, you can roll the new one out before retiring the old.
A leaked key exposes your verification log — the SHA-256 of every document your organisation has
verified, and every reference you attached, which is why matter numbers and case ids do not
belong in that field. It also lets the holder write to that log and spend your rate limit. A key with the records scopes
can also authenticate, and revoke, documents as your organisation, so revoke a leaked key first
and review your records afterwards.
It does not expose your documents. Audrie holds hashes, never content, so a key cannot read a document from your account — but a hash identifies a file to anyone who already holds it.
Never send a key from a browser
API credentials are organisation-wide and long-lived, so a key in frontend JavaScript is readable
by every visitor to your site. A credentialed request from a browser is refused with 403. Call
this API from your server.
Treat a key that has ever been served to a browser as leaked, and revoke it.