Embed Widget
Fetch your published changelog as public JSON and render it anywhere.
Every project exposes a public, CORS-enabled JSON endpoint with its latest published entries. Use it to build a widget, a "What's new" modal, or any custom surface — no API key required.
Endpoint
GET https://launchly.dev/api/widget/{slug}- Auth: none. CORS open (
Access-Control-Allow-Origin: *). - Cache:
public, s-maxage=60, stale-while-revalidate=300. - Returns the last 20 published entries.
Response
{
"project": {
"name": "Acme",
"slug": "acme",
"settings": { "accent": "#d7ff4f", "position": "bottom-right", "theme": "dark" },
"branding": true
},
"entries": [
{
"id": "06879e3f-...",
"title": "v2.1 — Scheduling",
"version": "2.1.0",
"category": "feature",
"publishedAt": "2026-05-31T10:00:00.000Z",
"html": "<p>Sanitized release body…</p>",
"reactions": { "👍": 4, "🎉": 1 }
}
]
}project.settingsonly exposes the whitelisted display keysaccent,position,theme.project.brandingistrueon Free plans (show "Powered by Launchly"),falseon paid plans.htmlis sanitized server-side by Launchly.
Example
const res = await fetch("https://launchly.dev/api/widget/acme");
const { project, entries } = await res.json();
const html = entries
.map((e) => `<article><h3>${e.title}</h3>${e.html}</article>`)
.join("");
document.querySelector("#changelog").innerHTML = html;Building in React? Use @launchly/react instead — it wraps this
endpoint with hooks, a render-prop component, and an SSR fetch helper.