How do I get a free Kertivo verified badge for my endpoint?
Encode your endpoint URL and hit GET https://kertivo.com/badge/<url-encoded-endpoint> — the SVG is free, cached about an hour, and never sold. If that URL earned a letter in the latest published Kertivo Index run, the badge shows the grade and run date; otherwise it shows not graded (or last graded … in grey if an earlier run graded you but the latest did not). A letter appears only after a real Index paid test includes your endpoint — you cannot buy one.
Who this is for
- Sellers who want a live grade chip on a README, docs site, or agent card.
- Agents that render trust signals next to an x402 URL.
- Auditors who want a one-click path from the badge to frozen Index history.
What the badge is
From live OpenAPI / /llms.txt / the Get your badge section:
- Free SVG (
image/svg+xml), alsoGET /badge?url=<endpoint>or a.svgsuffix on the path id. - Earned, never sold. Ungraded / unknown endpoints still return 200 with a "not graded" chip — not a fake A.
- Headers:
x-kertivo-grade(A|B|C|Fornot-graded),x-kertivo-evidence,x-kertivo-run-date(graded only),x-kertivo-state(graded | not_in_this_run | ungraded_this_run | never_graded). - Evidence page:
GET /badge/<id>/evidencelists every published run that included the endpoint (date, grade, price, payment tx), newest first (?format=jsonfor JSON).
Live example (checked 2026-11-10)
Endpoint https://api.onesource.io/api/chain/erc20-balance:
- Badge: https://kertivo.com/badge/https%3A%2F%2Fapi.onesource.io%2Fapi%2Fchain%2Ferc20-balance → headers
x-kertivo-grade: A,x-kertivo-state: graded,x-kertivo-run-date: 2026-11-09. - Evidence JSON: state
graded, current run Kertivo Index #6 (2026-11-09), history includes settled payment txs and HTTP 200 after pay (newest first).
How to embed it
Replace the example URL with your absolute endpoint, URL-encoded (encodeURIComponent in JS). Prefer kertivo.com hosts (same worker as the scorecard).
HTML
<a href="https://kertivo.com/badge/https%3A%2F%2Fapi.402rates.com%2Fv1%2Fping/evidence"><img src="https://kertivo.com/badge/https%3A%2F%2Fapi.402rates.com%2Fv1%2Fping" alt="Kertivo Index grade" height="20"></a>
Markdown
[](https://kertivo.com/badge/https%3A%2F%2Fapi.402rates.com%2Fv1%2Fping/evidence)
(These are the same copy-paste blocks the live scorecard's Get your badge section shows. The older paycheck.hectichustle.workers.dev host serves the same worker, but kertivo.com is the canonical site.)
The badge should link to /evidence so visitors see payment txs and frozen runs, not only a letter.
Path from "not graded" to a letter
- Embed anytime. You do not need permission to show the chip; unknown URLs honestly say not graded.
- Appear in a published Index run. Grades come only from Kertivo's capped weekly paid tests on Base USDC (see Guide #5). There is no checkout to purchase an A.
- Confirm:
GET /trust/lookup?url=<your-endpoint>→status: indexedand agrade, ornot_indexed/grade: nullif you are not in the latest published selection. - Between runs: Daily self-check — free GET or $0.002 POST
/trust/lookup— reads grade/claims/payTo evidence only. It does not change grades. - If a later run drops you: badge state becomes
not_in_this_run(not tested in the latest run, which is not a fail) orungraded_this_run(tested in the latest run without a grade), and the chip reads "last graded \<grade\> · \<date\>" in grey rather than inventing a current letter. Runs stay frozen at /trust-index/runs.
Discovery for Index selection comes from public x402 listings and unpaid probes under the weekly budget — not from paying Kertivo for placement. If your route is dark, mispriced above the per-call Index cap, or not yet selected, the honest badge stays ungraded until a published run includes you.
Try it
EP='https://api.onesource.io/api/chain/erc20-balance'
ID=$(python3 -c "import urllib.parse,os; print(urllib.parse.quote(os.environ['EP'], safe=''))" )
# or: node -e "console.log(encodeURIComponent(process.argv[1]))" "$EP"
curl -sS -D - -o /tmp/kbadge.svg "https://kertivo.com/badge/$ID" | rg -i 'x-kertivo'
curl -sS "https://kertivo.com/badge/$ID/evidence?format=json" | head -c 400
FAQ
How much does the badge cost?
$0 to fetch and embed. Index tests spend Kertivo's own capped USDC; sellers are not charged for a badge file.
Can I pay to guarantee an A?
No. Grades are earned, never bought; badges are never sold.
Why does my badge say not graded when I accept x402?
Either no published run has tested that exact URL yet, or the latest run did not include it. Check /trust/lookup and /badge/.../evidence.
Does the badge prove my API is safe forever?
No. It reflects the latest published Index letter (or last-graded state). See grade limits in Guide #5.
Will claims change my badge?
No. Buyer claims list beside grades and never rewrite them.
Limits
- Badge = Index letter (or honest ungraded / last-graded), not a security audit or uptime SLA.
- Cache ~1 hour (
Cache-Control: public, max-age=3600on the live response checked for this draft). - Deep-priced routes above the Index per-call cap may be out of a given weekly run even if they are live products.
- Kertivo holds no funds and does not sell placement.