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.

GET https://www.6dtrust.com/trust/{root}/{handle}.json

Response

FieldTypeDescription
rootstringThe root slug you queried.
handlestringThe GitHub handle, normalized (lowercased, no @).
level0–3Engine level. 0 = pending, 1 = known, 2 = vouched, 3 = trusted.
levelNamestringHuman name for the level (pending / known / vouched / trusted).
acceptedbooleanWhether the handle is in this root's accept-set (level > 0).
distancenumber | nullHops from the nearest seed via vouch edges (seed = 0). null if pending or unreachable.
isSeedbooleanWhether the handle is an axiomatic seed of this root.
status"claimed" | "unclaimed" | nullAccount state. null = no identity exists for this handle yet.
computedAtstring | nullISO timestamp of the membership row, or null when pending.
badgeUrlstringCompact SVG badge (22px) — README badge rows beside CI shields.
brandedBadgeUrlstringBranded SVG badge (32px) — root emblem with stacked readout.
profileUrlstringStable 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

curl https://www.6dtrust.com/trust/osc/torvalds.json
{
  "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.

Compact trust badge @torvalds · osc
GET https://www.6dtrust.com/badge/{root}/{handle}
![trust](https://www.6dtrust.com/badge/{root}/{handle})

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.

Branded trust badge @torvalds · osc · branded
GET https://www.6dtrust.com/badge/branded/{root}/{handle}
![trust](https://www.6dtrust.com/badge/branded/{root}/{handle})

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.