Seven REST capabilities behind one Bearer token — verify badges, mint certificates, scan for forensic anomalies, query the intelligence graph, run Bastion security scans. HMAC-sealed outputs. 90-day trial. Free monthly allowance on every capability.
Every new API account gets the full capability surface on day one. A 90-day trial covers every call, regardless of volume. After the trial, every capability has a monthly free allowance before any metered charge. Platform fee is waived for founder-class accounts.
All seven ship under the same unified capability namespace and share the same billing gate: design-partner → trial → entitlement → monthly free allowance. Usage is metered per call and reflected on the /dashboard/usage view in real time.
Probe the API, mint a verification badge, read your usage. Works with Bearer JWT from a signed-in Certisyn user, or server-to-server via x-partner-id.
# 1. Probe — no auth required curl https://certisyn.com/api/v1/ping # 2. Mint a verification badge (Bearer JWT path) curl -X POST https://certisyn.com/api/v1/verify/badge \ -H "Authorization: Bearer $JWT" \ -H "Content-Type: application/json" \ -d '{"entity_name":"Acme Corp","claim":"iso27001","vertical_code":"CYB"}' # 3. Check your usage curl https://certisyn.com/api/v1/usage \ -H "Authorization: Bearer $JWT"
# Assumes $jwt holds a Supabase access_token $headers = @{ Authorization = "Bearer $jwt" 'Content-Type' = 'application/json' } # 1. Probe Invoke-RestMethod -Uri 'https://certisyn.com/api/v1/ping' # 2. Mint a badge $body = @{ entity_name='Acme Corp'; claim='iso27001'; vertical_code='CYB' } | ConvertTo-Json Invoke-RestMethod -Uri 'https://certisyn.com/api/v1/verify/badge' -Method Post -Headers $headers -Body $body # 3. Usage roll-up Invoke-RestMethod -Uri 'https://certisyn.com/api/v1/usage' -Headers $headers
// Requires Node 18+ (built-in fetch) const JWT = process.env.CERTISYN_JWT; const API = 'https://certisyn.com/api/v1'; // 1. Probe const ping = await fetch(`${API}/ping`).then(r => r.json()); // 2. Mint a badge const badge = await fetch(`${API}/verify/badge`, { method: 'POST', headers: { Authorization: `Bearer ${JWT}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ entity_name: 'Acme Corp', claim: 'iso27001', vertical_code: 'CYB' }), }).then(r => r.json()); // 3. Usage const usage = await fetch(`${API}/usage`, { headers: { Authorization: `Bearer ${JWT}` }, }).then(r => r.json());
import os, requests JWT = os.environ['CERTISYN_JWT'] API = 'https://certisyn.com/api/v1' HEADERS = { 'Authorization': f'Bearer {JWT}' } # 1. Probe ping = requests.get(f'{API}/ping').json() # 2. Mint a badge badge = requests.post( f'{API}/verify/badge', headers={**HEADERS, 'Content-Type': 'application/json'}, json={'entity_name': 'Acme Corp', 'claim': 'iso27001', 'vertical_code': 'CYB'}, ).json() # 3. Usage usage = requests.get(f'{API}/usage', headers=HEADERS).json()
Every request must carry either a user-scope Bearer JWT or a partner-scope identifier. The billing gate resolves the actor, applies design-partner and trial overrides, and then falls through to the monthly free allowance.
Sign in at app.certisyn.com, then read the Supabase access token from local storage (browser console: Application → Local Storage → sb-…-auth-token → access_token). Use it verbatim in the Authorization header.
For backend integrations and tenant-scoped service calls, pass your partner UUID via the x-partner-id header. Pair with a partner-scoped API key obtained from /dashboard/api-keys.
Sign up takes two minutes. Your 90-day trial starts on your first authenticated call. No credit card. Cancel any time by emailing support.