Drop your score into any HTML or markdown.
A server-rendered SVG badge from /api/v1/badge. Edge-cached, no JavaScript, no tracking. Works in READMEs, blog posts, and social previews.
Build your snippet
Preview
Signed URLs carry a small “verified” mark + tamper detection.
Markdown (README, Substack)
HTML (blog, web page)
<a href="https://songforgeai.com/scoring/standard"><img src="https://songforgeai.com/api/v1/badge?score=82&label=My%20Song" alt="Lyric score 82/100 — SongForgeAI" /></a>JavaScript widget (any page that allows raw HTML)
<div data-sfai-badge="82">
<a href="https://songforgeai.com/scoring/standard" target="_blank" rel="noopener" style="text-decoration:none">
<img src="https://songforgeai.com/api/v1/badge?score=82&label=My%20Song" alt="Lyric score 82/100 — SongForgeAI" style="height:24px;vertical-align:middle" />
</a>
</div>Live samples
Markdown

HTML
<a href="https://songforgeai.com/scoring/standard"><img src="https://songforgeai.com/api/v1/badge?score=92&label=Cigarettes%20%26%20Promises" alt="Lyric score 92/100 — SongForgeAI" /></a>
Markdown

HTML
<a href="https://songforgeai.com/scoring/standard"><img src="https://songforgeai.com/api/v1/badge?score=78&label=Walking%20Home%20in%20Winter" alt="Lyric score 78/100 — SongForgeAI" /></a>
Markdown

HTML
<a href="https://songforgeai.com/scoring/standard"><img src="https://songforgeai.com/api/v1/badge?score=64&label=First%20Draft" alt="Lyric score 64/100 — SongForgeAI" /></a>
Query parameters
| Param | Type | Notes |
|---|---|---|
| score | int 0–100 | Composite score. Coerced + clamped server-side. Color tier: 85+ cyan, 70+ gold, 55+ forge, <55 muted. |
| label | string | Optional. Song title or any short label. URL-encode it. Falls back to “Lyric score”. |
| gpt4o | 1 | Optional. When ?gpt4o=1, the score chip gains a small “GPT-4o ✓” annotation declaring the score was cross-checked by a different model family. The assertion is opt-in trust today (not cryptographically tied to the signature) — a sophisticated viewer verifies via the song’s share URL or /admin/triangulation. |
| div | int 0–100 | Optional. Combined with gpt4o=1: the annotation reads “GPT-4o Δ<N>” where N is the divergence in points between the primary score and the GPT-4o re-score. Zero divergence is strongest agreement; >8pt divergence is the threshold where triangulation logs thetriangulation.high_divergencewarning event. |
Cross-family annotation (B1361 + B1356)
When you embed a score from a song that was cross-checked by GPT-4o (every internal eval since B1356), append &gpt4o=1 and optionally &div=N for the divergence value. The annotation is the difference between “Sonnet says it scores 82” and “Two model families agree this scores 82, ±3 points.” The second is what a B2B prospect doing diligence will trust.
Without cross-family
With ?gpt4o=1&div=4
Where to find the divergence value: every song’s eval_data.triangulation.divergence field after B1356. The X-SFAI-Badge-CrossCheck response header echoes “gpt-4o” or “none” for programmatic detection.
Signed badges (B1236)
Unsigned URLs render but carry no proof of authenticity. POST to /api/v1/badge/sign with your Bearer key to receive an HMAC-SHA256-signed URL with ?sig=<hex> appended. Signed badges render with a small verified mark and the response carries X-SFAI-Badge-Verified: true.
curl -X POST https://songforgeai.com/api/v1/badge/sign \
-H "Authorization: Bearer sfai_live_<KEY>" \
-H "Content-Type: application/json" \
-d '{"score":82,"label":"My Song"}'