Docs · integration
Integrate 6d trust
Every verdict is computed from a root's seeds and
exposed three ways: a compact badge (README badge
rows), a branded badge (root emblem + readout),
and a trust JSON (machine readout). All are a pure
function of (root, handle), public, and cached — safe to
poll and safe to embed.
Trust JSON
The machine readout. One request resolves a handle's level, distance, and stable links from a root's vantage.
Response
| Field | Type | Description |
|---|---|---|
| root | string | The root slug you queried. |
| handle | string | The GitHub handle, normalized (lowercased, no @). |
| level | 0–3 | Engine level. 0 = pending, 1 = known, 2 = vouched, 3 = trusted. |
| levelName | string | Human name for the level (pending / known / vouched / trusted). |
| accepted | boolean | Whether the handle is in this root's accept-set (level > 0). |
| distance | number | null | Hops from the nearest seed via vouch edges (seed = 0). null if pending or unreachable. |
| isSeed | boolean | Whether the handle is an axiomatic seed of this root. |
| status | "claimed" | "unclaimed" | null | Account state. null = no identity exists for this handle yet. |
| computedAt | string | null | ISO timestamp of the membership row, or null when pending. |
| badgeUrl | string | Compact SVG badge (22px) — README badge rows beside CI shields. |
| brandedBadgeUrl | string | Branded SVG badge (32px) — root emblem with stacked readout. |
| profileUrl | string | Stable URL of the person profile, scoped to this root. |
Status codes
200— valid handle, always. Pending is a state, not an error — an unknown handle returns a level-0 payload, not a 404.404— the root slug doesn't exist, or isn't public.400— the handle is malformed (not a valid GitHub username).
Example
{
"root": "osc",
"handle": "torvalds",
"level": 3,
"levelName": "trusted",
"accepted": true,
"distance": 0,
"isSeed": true,
"status": "unclaimed",
"computedAt": "2026-06-15T23:31:23.308Z",
"badgeUrl": "https://www.6dtrust.com/badge/osc/torvalds",
"brandedBadgeUrl": "https://www.6dtrust.com/badge/branded/osc/torvalds",
"profileUrl": "https://www.6dtrust.com/u/torvalds?root=osc"
} Caching: responses carry a CDN cache header
(s-maxage), so they serve from the edge and reflect the last
recompute. There is no authentication or rate limit yet — both are tracked, not shipped.
Badges
Human readouts — live SVGs you can embed in a README or profile. Both are a pure function of (root, handle), update when the graph recomputes,
and use separate URLs (no query parameters).
Compact — README badge row
22px tall — lines up with Shields-style CI
badges in the top row of a repo. Graph glyph, trust:{root},
and level on one line.
Branded — root emblem
32px tall — square root logo (from the root's avatar_url, or initials fallback) on the left,
stacked readout on the right. Use when the root's identity matters more than fitting a tight badge
row.
Caching: badge SVGs carry Cache-Control: max-age=300 — materialized readouts from the last
recompute. Branded badges inline the root emblem as a data URI at render time so they work inside <img> tags and through GitHub's camo proxy.
Trust levels
3 · trusted
deeply trusted, near the seeds — the strongest signal
2 · vouched
endorsed into the web of trust from this root
1 · known
a real, known person — reachable from this root
0 · pending
no path reaches them from this root yet — an open door, not a verdict
Trust is always relative to a root — the same handle can be trusted from one root and pending from another. There is no global verdict.