Design one visually in the studio, or generate thousands on the fly by hitting the image API with query params or JSON. Same 1200×630 Codalent template either way.
One endpoint, /api/thumbnail, returns a 1200×630 PNG. Use GET with query params for links you can drop straight into an <img> or an og:image tag, or POST JSON for longer copy.
https://YOUR-DEPLOYMENT.vercel.app/api/thumbnail
?service=Sanity%20Development
&category=Service
&detail=Headless%20CMS
&headline=Structured%20content%20on%20**Sanity**%0Ashipped%20**fast**.
&tags=Sanity,GROQ,Next.js
&url=codalent.com%20/%20services%20/%20sanity%0A is a newline (line break). **word** renders the word in Codalent orange.
curl -X POST https://YOUR-DEPLOYMENT.vercel.app/api/thumbnail \
-H "Content-Type: application/json" \
-o thumbnail.png \
-d '{
"service": "Ghost CMS Development",
"category": "Service",
"detail": "Publishing",
"headline": "Publishing built on **Ghost**\nthat just works**.**",
"subheadline": "Custom Ghost themes, memberships and integrations.",
"tags": ["Ghost", "Handlebars", "Members"],
"url": "codalent.com / services / ghost",
"logo": "https://your-cdn.com/ghost-logo.png"
}'| Param | Default | Notes |
|---|---|---|
category | Service | Small eyebrow label (top-right). |
detail | AI Automation | Text after the dot. Pass empty to hide it. |
service | n8n Automation Service | Badge label. |
logo | "" | Absolute URL or data: URI for the tech logo in the badge. Omit to hide. |
headline | Reliable **n8n workflows**… | Wrap words in **stars** for orange; \n for a line break. |
subheadline | Codalent designs, builds… | Supporting paragraph. |
tags | n8n, API Integrations, Monitoring | Comma-separated (GET) or string array (POST). |
url | codalent.com / services / ai / n8n | Footer breadcrumb. |
scale | 2 | Output resolution multiplier, 1–3. 2 → 2400×1260 (crisp). |
<meta property="og:image"
content="https://YOUR-DEPLOYMENT.vercel.app/api/thumbnail?service=...&headline=..." />