Raw schema
{
"type": "object",
"properties": {
"fields": {
"type": "object",
"description": "What to put on the card. Text fields replace the template's text; the *_url fields replace its pictures, fetched server-side. Omit a field to keep what the template has. Design - colours, fonts, layout, crop framing - never changes.",
"additionalProperties": false,
"properties": {
"author": {
"type": "string",
"description": "Byline (up to 50 characters). The handle on Profile, the reviewer's name on Testimonial."
},
"background_url": {
"type": "string",
"description": "Absolute https URL of the background photo, on a template whose background is a photo. Works on every card kind."
},
"badge": {
"type": "string",
"description": "Sale sticker in a corner of the card, Product cards only: \"-30%\", \"SALE\", \"2 FOR 1\" (up to 18 characters)."
},
"description": {
"type": "string",
"description": "Support line under the headline (up to 220 characters). The bio on Profile, the quote on Testimonial. Not drawn by Minimal templates."
},
"footer": {
"type": "string",
"description": "Tagline in the corner, typically the domain (up to 60 characters)."
},
"image2_url": {
"type": "string",
"description": "Absolute https URL of the second capture, used only by the Product card's window-and-phone frame (the phone over the browser window's corner). It needs image_url too: on its own there is no window for the phone to sit over and nothing is drawn."
},
"image_url": {
"type": "string",
"description": "Absolute https URL of the picture for the card's image slot - the product photo, the screenshot inside the frame, or the avatar on a Profile card. PNG, JPEG or WebP, up to 5 MB. Omit it to keep the template's own picture. Minimal cards have no image slot."
},
"logo_url": {
"type": "string",
"description": "Absolute https URL of the corner logo, pinned above the text. Drawn by every card kind except Profile, whose own picture is the avatar."
},
"price": {
"type": "string",
"description": "Price headline under the pitch, Product cards only. Free text so it can read \"$29\", \"49 PLN\" or \"Free\" (up to 16 characters)."
},
"price_note": {
"type": "string",
"description": "Small print beside the price, Product cards only: a billing period, a former price or a shipping note (up to 40 characters)."
},
"price_was": {
"type": "string",
"description": "The price this one replaces, drawn struck through beside it, Product cards only (up to 16 characters)."
},
"rating": {
"maximum": 5,
"type": "integer",
"description": "Star rating, Testimonial and Product cards only.",
"minimum": 1
},
"tag": {
"type": "string",
"description": "Short label above the headline, e.g. \"NEW POST\" (up to 30 characters). The company on Testimonial."
},
"title": {
"type": "string",
"description": "Headline. Up to 220 characters; long titles auto-shrink to fit. On Profile cards this is the person's name, on Testimonial cards the role, on Product cards the product's name."
}
}
},
"scale": {
"type": "integer",
"enum": [
1,
2
],
"description": "2 renders at twice the pixel size for high-DPI screens (a 1200x630 card becomes 2400x1260). Default 1."
},
"size": {
"type": "string",
"enum": [
"og",
"youtube",
"square",
"portrait",
"story",
"pinterest"
],
"description": "Output canvas: og (1200x630), youtube (1280x720), square (1080x1080), portrait (1080x1350), story (1080x1920), pinterest (1000x1500). Defaults to the template's own size, usually og (1200x630, the link preview size). Layouts restack automatically on square and vertical canvases."
},
"template": {
"type": "string",
"description": "Template slug from list_templates or save_template."
}
},
"required": [
"template"
],
"additionalProperties": false
}