Reference · v1
TrustLayer API
REST API to verify decentralized identities, look up public trust profiles, and embed live trust badges. All responses are JSON.
Bearer
Rate limited
v1.0.0
Authentication
Pass your API key as a Bearer token. Get one from the API tab in the dashboard.
Authorization: Bearer htl_live_xxxxxxxxxxxxxxxxxxxx
POST /v1/verify — Verify identity
Returns whether a public identity key is human-verified, plus a trust score and risk level.
curl -X POST 'https://klzwvxcxjzhtgqpfyglc.supabase.co/functions/v1/v1-verify' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"identity_id":"BASE64_PUBLIC_KEY"}'
# 200 OK
{
"is_human": true,
"trust_score": 78,
"risk": "low"
}GET /v1/profile — Public profile lookup
Read-only public trust data. No auth required. Cached 60s.
curl 'https://klzwvxcxjzhtgqpfyglc.supabase.co/functions/v1/public-profile?handle=ahmad'
# or by social handle:
curl 'https://klzwvxcxjzhtgqpfyglc.supabase.co/functions/v1/public-profile?platform=x&social=ahmad'
# 200 OK
{
"handle": "ahmad",
"trust_score": 84,
"verifiers": 21,
"proofs": 47,
"badges": ["Trusted","Well-Connected"]
}GET /v1/badge — Embeddable SVG
Returns a dynamic SVG badge. Cache 5 min. Style: flat | dark.
<a href="https://trstlyr.com/u/ahmad"> <img src="https://klzwvxcxjzhtgqpfyglc.supabase.co/functions/v1/badge-svg?handle=ahmad" alt="Trust Score" /> </a>
Rate limits
- Starter — 60 req/min, 1,000 req/month
- Pro — 300 req/min, 50,000 req/month
- Enterprise — 1,000 req/min, 500,000 req/month
Headers returned: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After (on 429).
Errors
401 { "error": "Invalid API key" }
402 { "error": "Monthly usage limit exceeded" }
429 { "error": "Rate limit exceeded", "retry_after": 12 }
500 { "error": "Internal server error" }JavaScript SDK
import { TrustLayer } from 'trustlayer-sdk';
const tl = new TrustLayer('htl_live_xxx');
const r = await tl.verify('public_key_base64');
if (r.is_human && r.trust_score >= 60) { /* allow */ }SDK source available in the app at src/sdk/trustlayer.ts. NPM package coming soon.