# Social Card Studio API Social Card Studio generates branded OG images (social cards) for blog posts. The API is designed to drop into a blog theme with a one-line URL change. ## OG Image Generation GET /api/v1/og Generates a 1200×630 PNG social card for a blog post. This endpoint is designed to be embedded directly in tags. **Critical contract:** Always returns image/png — never a 4xx or 5xx status. Use the X-SCS-Reason response header to determine the actual outcome. ### Query Parameters | Parameter | Required | Description | |------------|----------|-------------| | token | Yes | API token with scs_live_ prefix | | title | Yes | Post title (max 200 chars) | | template | No | Template name — defaults to brand kit setting | ### Response Headers | Header | Values | |-------------------------|--------| | X-SCS-Reason | ok \| over-quota \| subscription-required \| token-revoked \| kit-paused \| rate-limited \| template-unknown \| render-error \| title-rejected \| origin-blocked | | X-RateLimit-Limit | Per-IP request limit (requests per window) | | X-RateLimit-Remaining | Requests remaining in current window | | Content-Type | image/png | ### Example ``` GET /api/v1/og?token=scs_live_abc123&title=Why+I+Write+Every+Day ``` ### Usage in Ghost ```handlebars {{#post}} {{/post}} ``` ### Usage in WordPress ```php add_filter('wpseo_opengraph_image', function() { $title = urlencode(get_the_title()); return 'https://your-site.com/api/v1/og?token=scs_live_abc123&title=' . $title; }); ``` ## Authentication Tokens are created in the Social Card Studio dashboard. Each token is linked to a brand kit. Token format: scs_live_{random} Tokens cannot be retrieved after creation — store them securely. ## Rate Limits Per-IP rate limiting applies. Exceeded requests return a fallback image with X-SCS-Reason: rate-limited. ## Try-It Preview GET /api/v1/og/preview Generates a watermarked 1200×630 PNG for the try-it flow. No token required. Always returns image/png. Bot requests silently return a 1×1 transparent fallback. ### Query Parameters | Parameter | Required | Description | |------------|----------|-------------| | title | No | Post title (max 200 chars) | | site_name | No | Site name (max 150 chars) | | author | No | Author name (max 150 chars) | | template | No | verso (default) \| dispatch \| margin | ## OG Metadata Scraping GET /api/fetch-og Public endpoint that fetches Open Graph metadata from a URL. Used by the preview page to populate try-it cards from existing posts. SSRF-protected (private IPs blocked). Rate-limited per IP (10 req/60s). ### Query Parameters | Parameter | Required | Description | |-----------|----------|-------------| | url | Yes | URL to scrape OG metadata from | ### Response (JSON) ```json { "title": "string|null", "description": "string|null", "image": "string|null", "url": "string|null" } ``` Returns 400 if the URL is missing, unreachable, or resolves to a private IP. Returns 429 if rate limited. ## Free Tools Free, no-signup utilities. Index: /tools. - [Open Graph Meta Tag Generator](/tools/open-graph-generator) — fill in title/description/image/URL, copy a ready-to-paste block of og: and twitter: meta tags, with a live preview. Runs entirely in the browser. - [Social Media Image Size Reference](/tools/social-image-sizes) — interactive per-platform OG image dimensions, aspect ratios, file-size ceilings, and a 1200×630 safe-zone overlay for Facebook, X, LinkedIn, Slack, Discord, iMessage, and WhatsApp. - [Link Preview Checker](/preview) — paste any URL to see how it renders on Twitter/X, LinkedIn, Facebook, and Slack. ## The Journal (Guides) Free, in-depth guides on Open Graph, social cards, and link previews. Full index and feed: /blog · /blog/rss.xml · sitemap at /sitemap.xml. - [Best OG Image Generators Compared (2026)](/blog/best-og-image-generator) — The best OG image generator depends on your stack: Placid and Bannerbear for no-code, @vercel/og for developers, Social Card Studio for blogs. - [OG Image Not Showing on Facebook? The Fix List](/blog/og-image-not-showing-facebook) — Why your OG image isn't showing on Facebook and how to fix it: absolute HTTPS URLs, the right dimensions, Facebook's stale cache, and the Sharing Debugger. - [A/B Test Social Media Previews for More Clicks](/blog/ab-test-social-media-previews) — How to A/B test social media link previews — swap the OG image, title, and color, measure click-through, and learn which card actually earns shares. - [Open Graph and SEO: Do Social Signals Help Rankings?](/blog/open-graph-seo) — Open Graph tags don't directly boost Google rankings, but they win clicks and shares that fuel real SEO. Here's what actually moves the needle. - [Open Graph Engagement: Why Platforms Care About Your Cards](/blog/open-graph-engagement) — Open Graph tags decide how your links look in every feed and DM — and a good social card can lift impressions by ~114%. Here's the data behind why it matters. - [Social Sharing Metrics: Track What Drives Traffic](/blog/social-sharing-metrics) — Which social sharing metrics actually predict traffic, how to measure them with UTM tags and your CMS, and the three numbers worth watching. - [Color Psychology in Social Media: Which Colors Drive Clicks?](/blog/color-psychology-social-media) — What color psychology research actually says about social media engagement — and how brand-color consistency on link previews lifts recognition and clicks. - [Meta Description Optimization: The 150-Char Sweet Spot](/blog/meta-description-optimization) — Write meta descriptions that earn clicks: keep them near 150 characters, front-load the value, match search intent, and pair them with a strong social card. - [Blog Post Title Optimization: The Data on Shares](/blog/blog-post-title-optimization) — Blog post title optimization, backed by data: numbers lift shares ~73%, an image lifts impressions ~114%. What actually makes titles travel. - [Yoast Open Graph Settings: A Full Walkthrough](/blog/yoast-open-graph) — How to set up Yoast SEO Open Graph for WordPress: enable the tags, set the default image, fix per-post cards, and verify the preview renders. - [WooCommerce OG Image: Product & Post Social Cards](/blog/woocommerce-og-image) — Set the right WooCommerce OG image for products and posts — correct 1200×630 size, the og:image:width tags WooCommerce needs, and how to fix blank previews. - [Add Open Graph Tags to WordPress (Code, No Plugin)](/blog/wordpress-add-open-graph-tags) — Add Open Graph tags to WordPress by hand with a functions.php snippet — og:title, og:image, og:url — no plugin, plus how to verify the preview. - [Best WordPress Open Graph Plugins Compared (2026)](/blog/wordpress-open-graph-plugin) — The best WordPress Open Graph plugins compared — Yoast, Rank Math, Slim SEO, and code-free options — for correct og:image tags and unbroken link previews. - [Ghost Schema.org + Open Graph: Beyond Social Sharing](/blog/ghost-schema-org) — How Ghost emits Schema.org structured data and Open Graph tags — what's automatic, what to verify, and how to add Article and FAQ JSON-LD for SEO. - [Ghost Auto Social Cards: One-Line Setup Guide](/blog/ghost-auto-social-cards) — Auto-generate branded 1200×630 social cards for every Ghost post with one line of code injection — no per-post exports, no design tool, no broken previews. - [Ghost Open Graph: Auto-Generate Social Cards from Metadata](/blog/ghost-open-graph) — How Ghost builds Open Graph and Twitter cards from post metadata, where the defaults fall short, and how to ship a branded 1200×630 card for every post. - [CMS Dynamic OG Images: Wire Ghost & WordPress](/blog/cms-dynamic-og-image) — Wire your CMS to a dynamic OG image endpoint so every Ghost or WordPress post ships a branded 1200×630 social card automatically — no manual exports. - [OG Image Caching: Speed Up Dynamic Social Cards](/blog/og-image-caching) — Cache dynamic OG images at the edge so cards render once, not on every share. The headers, keys, and invalidation rules that cut render cost to near zero. - [OG Image Template Generators: Placid vs Bannerbear](/blog/og-image-template-generator) — Compare OG image template generators — Placid, Bannerbear, and custom @vercel/og — on pricing, speed, and control to pick the right one for your blog. - [Satori + React: OG Images Without a Headless Browser](/blog/satori-react-og-image) — Satori renders React/JSX to SVG, then to a PNG OG image — no Chromium, no Puppeteer. Here's how it works, its limits, and how to ship it. - [Dynamic OG Image API vs Self-Hosted: Which to Use](/blog/dynamic-og-image-api) — A dynamic OG image API generates a branded social card per page from a URL — compare hosted APIs vs self-hosted @vercel/og on cost, control, and speed. - [@vercel/og Tutorial: Dynamic Social Cards in Next.js](/blog/vercel-og-nextjs-tutorial) — Generate dynamic Open Graph images in Next.js with @vercel/og — a working route, the 1200×630 spec, fonts, caching, and the gotchas, step by step. - [iMessage & WhatsApp Link Previews: The Forgotten Channels](/blog/imessage-whatsapp-link-previews) — How iMessage and WhatsApp build link previews, the exact image sizes each wants, and why these high-trust messaging channels beat social feeds for clicks. - [Slack & Discord Link Previews: One 1200×630 OG Image](/blog/slack-discord-link-previews) — Slack and Discord both read your Open Graph tags, so a single 1200×630 og:image renders link previews correctly in both — here's the exact spec. - [OG Image File Size: Why a 5 MB Card Fails on Mobile](/blog/og-image-file-size) — Keep your OG image file size at 100–200 KB. A 1200×630 JPEG at quality 80 lands ~150 KB — small enough to load fast and never get skipped by a scraper. - [Safe Zone for Social Media Images: Stop the Crop](/blog/safe-zone-social-media-images) — Keep your logo and headline inside a ~1080×510 safe zone on a 1200×630 card so Facebook, X, and LinkedIn never crop the part that matters. - [OG Image Aspect Ratio: Why 1.91:1 Dominates](/blog/og-image-aspect-ratio) — The Open Graph image aspect ratio is 1.91:1 (1200×630). Here's why every platform standardized on it, where it breaks, and how to avoid cropping. - [LinkedIn OG Image Dimensions: The Safe-Zone Setup](/blog/linkedin-og-image-dimensions) — LinkedIn reads Open Graph tags and shows a 1200×627 (1.91:1) card. Here are the exact dimensions, the safe zone that survives cropping, and the tags to set. - [The Complete Open Graph Meta Tag Reference](/blog/open-graph-meta-tags) — Every Open Graph meta tag that matters: what each one does, the exact values to use, and the mistakes that quietly break your link preview. - [The 2026 Social Media Image Size Cheat Sheet](/blog/social-media-image-sizes) — Exact Open Graph and Twitter card image dimensions for Facebook, X, LinkedIn, Slack, Discord, iMessage, and WhatsApp — with file-size and safe-zone rules. - [Twitter Card Meta Tags: Summary vs Large Image](/blog/twitter-x-card-meta-tags) — How X (Twitter) cards work: the difference between summary and summary_large_image, the exact meta tags to use, and how to refresh a stale preview. - [What Is Open Graph? A Complete Guide for Bloggers](/blog/what-is-open-graph) — Open Graph is the meta-tag protocol that controls how your links look when shared. Here's what each tag does, why it matters, and how to set it up. - [Why Your Link Preview Is Broken (and How to Fix It)](/blog/fix-broken-link-preview) — A blank or wrong link preview almost always comes from one of five causes. Here's how to diagnose each with the official platform debuggers and fix it fast. ## OpenAPI Spec Machine-readable spec: /openapi.json