Browse the docs Open Close
Guides
Read the recipe before you cook.
Guides are static reference catalogs. They tell you which layer properties exist, which overrides a layer accepts, how to compose a template that looks good, and what the v2 editor document contains. They also tell you what a platform does to an image after you upload it, and what a given kind of image has to achieve. The content never changes between accounts, so you can cache a response and reuse it.
These endpoints read no template and no company data, and they cost no credits. They also stay outside your usage record, so a guide call never appears in `GET /v1/usage`.
On this page
/v1/guides/design
Get the design guide
Returns design guidance for building a template: canvas presets, the back-to-front layer order, typography and color rules, composition recipes, anti-patterns, and a preflight checklist. Read it before you write a `layers` array.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/design \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": {
"typography": {
"scale": "On a 1080px canvas: headline 64\u2013120px, subhead 36\u201356px, body 24\u201336px."
}
}
}
{
"message": "Unauthenticated."
}
/v1/guides/layers
Get the layer schema
Returns the design-time layer vocabulary: the layer object shape, every property name, the value shape of each property, and a worked example. Use it to build the `layers` array a template write accepts.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/layers \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": {
"property_names": [
"textContent",
"backgroundType",
"fontFamily"
]
}
}
{
"message": "Unauthenticated."
}
/v1/guides/variant-properties
List variant properties
Returns every property you can apply to a layer in `variants`, with its value type, the layer types it applies to, and an example. Pair it with the `available_modifications` of a template layer.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/variant-properties \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": [
{
"property": "text",
"value_type": "string",
"applies_to": "text layers",
"description": "Replace a text layer's content.",
"example": {
"layer": "headline",
"text": "Summer Sale \u2014 40% off"
}
}
]
}
{
"message": "Unauthenticated."
}
/v1/guides/editor-document
Get the editor document contract
Returns the versioned v2 editor-document contract: the resource it describes, property constraints, persistence rules, conflict recovery, and a safe workflow. Read it before you change an editor document.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/editor-document \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": {
"contract_version": 2,
"editor_document_version": 2,
"resource": "template.editor_document"
}
}
{
"message": "Unauthenticated."
}
/v1/guides/platforms
List platform guides
Returns one line per platform: the size preset to start from, its dimensions and why that preset is the default. Read it to choose a platform, then read that platform for the full rules. The response also carries `specs_reviewed`, the month the published specs were last checked.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/platforms \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": [
{
"platform": "instagram",
"name": "Instagram",
"start_here": "instagram_post",
"dimensions": "1080x1350",
"why": "A 4:5 portrait post fills the most vertical space the feed will give a single image."
}
]
}
{
"message": "Unauthenticated."
}
/v1/guides/platforms/{platform}
Get one platform guide
Returns everything one platform does to an image: how it crops the frame, the directional UI safe zones where it paints its own controls, the accepted formats and size limits, the export width and color profile, its size presets, and its rules and anti-patterns.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
platform |
path | string | Yes | A key from the index route, or a common alias. Maximum 64 characters. Valid keys: instagram, facebook, x, linkedin, threads, pinterest, tiktok, youtube, snapchat, whatsapp, web, ads, print. |
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
An alias is accepted. `/v1/guides/platforms/insta` returns the same guide as `/v1/guides/platforms/instagram`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/platforms/instagram \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": {
"platform": "instagram",
"name": "Instagram",
"specs_reviewed": "2026-09",
"start_here": "instagram_post"
}
}
{
"message": "Unauthenticated."
}
{
"message": "No platform guide matches `myspace`.",
"available": [
"instagram",
"facebook",
"x",
"linkedin",
"threads",
"pinterest",
"tiktok",
"youtube",
"snapchat",
"whatsapp",
"web",
"ads",
"print"
]
}
{
"message": "The platform field must not be greater than 64 characters."
}
/v1/guides/purposes
List image purpose guides
Returns one line per purpose: what that kind of image is, when to use it and the size presets that fit it. Read it to choose a purpose, then read that purpose for the full rules.
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/purposes \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": [
{
"purpose": "link_preview",
"name": "Link preview / meta tag image",
"use_when": "You are shipping a page and you want the shared link to look deliberate.",
"sizes": [
"open_graph",
"twitter_card"
]
}
]
}
{
"message": "Unauthenticated."
}
/v1/guides/purposes/{purpose}
Get one image purpose guide
Returns the job one kind of image has to do: the size presets that fit it, the rules and failure modes specific to it, a layer recipe in the Snapsbrew vocabulary, an anti-pattern list and a preflight checklist. The `link_preview` purpose also returns the og: and twitter: meta tags to put in the page head.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
purpose |
path | string | Yes | A key from the index route, or a common alias. Maximum 64 characters. Valid keys: link_preview, feed_post, carousel, story, profile_picture, cover, video_thumbnail, ad, product_shot, email_header, article_header, presentation_slide. |
The catalog is the same for every account. Cache the response and refresh it on a new API version.
A guide call costs no credits and does not appear in `GET /v1/usage`.
An alias is accepted. `/v1/guides/purposes/og` returns the same guide as `/v1/guides/purposes/link_preview`.
Example request
curl
curl https://snapsbrew.com/api/v1/guides/purposes/link_preview \
-H 'Authorization: Bearer <your-token>' \
-H 'Accept: application/json'
Example responses
{
"data": {
"purpose": "link_preview",
"name": "Link preview / meta tag image",
"layer_recipe": "base fill -> optional photo with a dark scrim -> headline -> supporting line -> logo."
}
}
{
"message": "Unauthenticated."
}
{
"message": "No purpose guide matches `wallpaper`.",
"available": [
"link_preview",
"feed_post",
"carousel",
"story",
"profile_picture",
"cover",
"video_thumbnail",
"ad",
"product_shot",
"email_header",
"article_header",
"presentation_slide"
]
}
{
"message": "The purpose field must not be greater than 64 characters."
}