Skip to content
Back to developer docs
Embed your score

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

Lyric score 82/100

Signed URLs carry a small “verified” mark + tamper detection.

Markdown (README, Substack)

![Lyric score 82/100](https://songforgeai.com/api/v1/badge?score=82&label=My%20Song)

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

Lyric score 92/100top tier — cyan

Markdown

![Lyric score 92/100](https://songforgeai.com/api/v1/badge?score=92&label=Cigarettes%20%26%20Promises)

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>
Lyric score 78/100strong — gold

Markdown

![Lyric score 78/100](https://songforgeai.com/api/v1/badge?score=78&label=Walking%20Home%20in%20Winter)

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>
Lyric score 64/100mid — forge

Markdown

![Lyric score 64/100](https://songforgeai.com/api/v1/badge?score=64&label=First%20Draft)

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

ParamTypeNotes
scoreint 0–100Composite score. Coerced + clamped server-side. Color tier: 85+ cyan, 70+ gold, 55+ forge, <55 muted.
labelstringOptional. Song title or any short label. URL-encode it. Falls back to “Lyric score”.
gpt4o1Optional. 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.
divint 0–100Optional. 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

Lyric score 82/100

With ?gpt4o=1&div=4

Lyric score 82/100, cross-checked by GPT-4o, divergence 4 points

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"}'