Skip to main content

Trust API — REST Reference

For applications that do not speak XRPC natively, Verak provides two read-only REST endpoints: a trust summary by handle or DID, and a label definitions catalogue. Both endpoints are CDN-cached, CORS-unrestricted, and require no API key.
These endpoints are a convenience layer over the AT Protocol labeler. If your stack can make XRPC calls, the native labeler path is the preferred integration — it removes Verak infrastructure as a dependency entirely.

Base URL

All endpoints under /api/v1/ are versioned. Breaking changes (removed fields, changed semantics) will be released under /api/v2/. Additive changes (new optional fields) are non-breaking and may appear at any time.

Trust Summary Endpoint

GET /api/v1/trust/{subject}

Returns the trust state for a single subject. The subject can be an AT Protocol handle or a did:plc DID. Cache: s-maxage=300 (5 minutes at the CDN edge)
CORS: Access-Control-Allow-Origin: *
Authentication: None

Request examples

By handle
By DID
Both forms return an identical response shape. Handle-based queries resolve the DID via the PLC directory before querying the labeler; the resolved DID is always present in the response.

Response — 200 OK (verified member)

Response — 200 OK (resolvable non-member)

A subject whose DID resolves via the PLC directory but who has no Verak labels returns 200 with verified: false. This is intentional — an unresolvable subject is a different failure mode from a resolved subject with no trust signals.

Response — 404 Not Found

Returned when the subject cannot be resolved to a DID — either because the handle does not exist, the DID is malformed, or the PLC directory returned no result.

Field reference


Definitions Endpoint

GET /api/v1/labels/definitions

Returns the catalogue of labels issued by the Verak Labeler with display metadata. Useful for building local label renderers without hardcoding label semantics. Cache: s-maxage=3600 (1 hour at the CDN edge)
CORS: Access-Control-Allow-Origin: *
Authentication: None

Request

Response — 200 OK

Field reference

This endpoint returns only the allowlisted fields above. Internal metadata (review state, reviewer identity, applied signal weights) is never included.

CORS

Both endpoints are served with:
CORS preflight (OPTIONS) requests succeed from any origin. Browser-based applications can call these endpoints directly without a proxy.

Data Boundary

To be explicit about what these endpoints will never return: If a field you need is not in the response, it is not available via this API by design.

Fair Use

These endpoints are CDN-cached. There are no API keys, no rate-limit tiers, and no authentication. Cache behaviour means repeated identical requests within the cache window return the cached response at no additional cost to the origin. If you need bulk lookups, real-time streaming, or firehose-scale data, the right path is the AT Protocol labeler stream (com.atproto.label.subscribeLabels), not repeated calls to this API. See the labeler page →

Status Codes

5xx errors are transient. Retry with exponential backoff. Do not surface 5xx as a negative trust signal — inability to query is not the same as verified: false.