Authentication
Send your API key as a Bearer token. Keys are created in the dashboard and prefixed with sk_live_.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx Same engine as the website, reachable as HTTP. Use it from CI, cron, serverless or your editor.
Send your API key as a Bearer token. Keys are created in the dashboard and prefixed with sk_live_.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx Returns the same structured report that powers the website.
GET /api/v1/og/check?url=https://example.com curl "https://siteassets.dev/api/v1/og/check?url=https://example.com" \
-H "Authorization: Bearer sk_live_REPLACE_ME" const res = await fetch('https://siteassets.dev/api/v1/og/check?url=https://example.com', {
headers: { Authorization: `Bearer ${process.env.SITEASSETS_API_KEY}` }
});
const report = await res.json();
console.log(report.score); import os, json, requests
res = requests.get(
'https://siteassets.dev/api/v1/og/check',
params={'url': 'https://example.com'},
headers={'Authorization': f"Bearer {os.environ['SITEASSETS_KEY']}"},
timeout=10,
)
print(res.json()['score']) Inspect the favicon set of a public URL — HTML icons, /favicon.ico, apple-touch-icon, Web App Manifest and Safari mask-icon. The same check that powers /checker/favicon, callable from anywhere.
GET /api/v1/favicon/check?url=https://example.com Response includes assets, manifest, issues and checks.
{
"url": "https://example.com",
"finalUrl": "https://example.com",
"score": 92,
"assets": [
{ "kind": "icon-html", "url": "https://example.com/favicon.svg",
"declared": { "rel": "icon", "type": "image/svg+xml" },
"fetch": { "status": 200, "contentType": "image/svg+xml",
"width": null, "height": null, "hasAlpha": null, "https": true } }
],
"manifest": {
"found": true, "name": "Example",
"iconCount": 2, "has192": true, "has512": true, "hasMaskable": false
},
"issues": [
{ "id": "manifest-maskable", "severity": "warning", "category": "favicon",
"title": "No maskable icon in the manifest", "fixCode": "..." }
],
"checks": [{ "id": "favicon-present", "weight": 15, "earned": 15, "status": "pass" }]
} {
"url": "https://example.com",
"finalUrl": "https://example.com",
"score": 92,
"title": "Example Domain",
"description": "...",
"canonical": "https://example.com",
"og": { "title": "...", "description": "...", "image": "...", "url": "...", "type": "...", "siteName": "..." },
"twitter": { "card": "summary_large_image", ... },
"image": { "url": "...", "width": 1200, "height": 630, "https": true, "loads": true },
"issues": [{ "id": "og-title", "severity": "warning", "category": "og", "title": "...", ... }],
"checks": [{ "id": "og-title", "label": "...", "category": "og", "weight": 10, "earned": 10, "status": "pass" }]
} Generate OG images for multiple pages at once. Parse sitemaps, analyze existing meta tags, and batch generate consistent social images.
POST /api/v1/sitemap/parse Extract all page URLs from a sitemap.
{ "url": "https://example.com/sitemap.xml" } POST /api/v1/bulk/analyze Check which pages already have OG images.
{ "urls": ["https://example.com/page1", "https://example.com/page2"] } POST /api/v1/bulk/generate Generate OG image for a single URL.
{ "url": "https://example.com/page1", "template": "minimal" } POST /api/v1/bulk/download Download multiple OG images as a ZIP file.
{ "urls": ["https://siteassets.dev/og/abc.png", "https://siteassets.dev/og/def.png"] } Retry-After header tells you when to retry.