Skip to content
StoreStudio

Docs

Studio project schema

Portable metadata for a screenshot studio project. Binary assets are referenced by key and are not embedded.

Browse the types, required fields, and limits for Studio projects. This reference is generated from the same JSON schema used by the editor.

Version 8. 22 definitions, 111 fields. Every object is closed: a property the schema does not name is rejected.

project

schemaVersion8Required
idstringRequired
Cannot be empty
namestringRequired
listingSourceobject
appIconstring
createdAtnumberRequired
updatedAtnumberRequired
screenshotTarget"iphone-6_9" | "ipad-13"Required
allowTargetDeviceMismatchbooleanRequired
slidesarray of slideRequired
localesarray of string
No duplicates·Each item: cannot be empty
defaultLocalestring
Cannot be empty

slide

Appears in project.

idstringRequired
Cannot be empty
namestring
At most 48 characters
role"hero" | "feature" | "proof" | "differentiator" | "cta"
backgroundbackgroundRequired
texttextRequired
devicedeviceRequired
screenshotRefstring or nullRequired
elementsarray of slideElement
At most 8 items
localizedTextobject keyed by string, values are localizedText

background

Appears in slide.

type"solid" | "gradient" | "image"Required
colorstring
gradientgradient
imageRefstring
blurnumber
panoramapanorama

panorama

Appears in background.

groupIdstringRequired
Cannot be empty
indexintegerRequired
0 to 4
spanintegerRequired
2 to 5

gradient

Appears in background.

colorsarray of stringRequired
At least 2 items
directionnumberRequired

localizedText

Appears in slide.

contentstringRequired
subCaptionstringRequired

elementPosition

Appears in badgeElement, ratingElement, laurelElement, appIconBadgeElement, deviceExtraElement, shapeElement, stickerElement.

zone"top-left" | "top-center" | "top-right" | "middle-left" | "middle-center" | "middle-right" | "bottom-left" | "bottom-center" | "bottom-right"Required
nudgeXnumberRequired
Authored templates may exceed the interactive ±12 adjustment range.
-100 to 100
nudgeYnumberRequired
-100 to 100

elementSize

"small" | "medium" | "large"

Appears in badgeElement, ratingElement, laurelElement.

elementColor

string

Matches ^(text|#[0-9a-fA-F]{6})$

Appears in badgeElement, ratingElement, laurelElement, shapeElement.

textColor

  • "white" | "black" | "auto"
  • string

    Matches ^#[0-9a-fA-F]{6}$

Appears in text.

slideElement

badgeElement | ratingElement | laurelElement | appIconBadgeElement | deviceExtraElement | shapeElement | stickerElement

Appears in slide.

badgeElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"badge"Required
positionelementPositionRequired
textstringRequired
At most 28 characters
style"solid" | "soft" | "outline"Required

ratingElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"rating"Required
positionelementPositionRequired
rating4 | 4.5 | 4.8 | 5Required
countTextstringRequired
At most 32 characters
tone"light" | "dark"Required

laurelElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"laurel"Required
positionelementPositionRequired
textstringRequired
At most 36 characters
tone"light" | "dark"Required

appIconBadgeElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"appIconBadge"Required
positionelementPositionRequired
size"small" | "medium" | "large"Required
style"plain" | "card"Required

deviceExtraElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"deviceExtra"Required
positionelementPositionRequired
devicedeviceRequired
screenshotRefstring or null

shapeElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"shape"Required
positionelementPositionRequired
shape"blob" | "ring" | "grid-dots"Required
tone"accent" | "light" | "dark"Required
size"small" | "medium" | "large"Required

stickerElement

Appears in slideElement.

idstringRequired
Cannot be empty
type"sticker"Required
positionelementPositionRequired
imageRefstring or nullRequired
size"small" | "medium" | "large"Required
mask"none" | "rounded" | "circle"Required
layer"behind" | "front"Required

text

Appears in slide.

contentstringRequired
fontfontRequired
sizenumberRequired
colortextColorRequired
align"left" | "center" | "right"Required
verticalPositionnumberRequired
horizontalOffsetnumberRequired
showSubCaptionbooleanRequired
subCaptionstringRequired
subCaptionFontfontRequired
subCaptionSizenumberRequired
subCaptionSpacingnumberRequired

font

  • "sf-pro" | "inter" | "poppins" | "dm-sans" | "playfair" | "space-grotesk" | "manrope" | "montserrat" | "outfit" | "sora" | "fraunces" | "dm-serif-display" | "oswald" | "archivo-black" | "bricolage-grotesque" | "jetbrains-mono" | "noto-sans-jp" | "noto-sans-kr" | "noto-sans-sc" | "noto-sans-tc" | "noto-sans-arabic" | "noto-sans-devanagari"
  • string

    A font you uploaded under the id after the prefix

    Matches ^custom:.+

Appears in text.

device

Appears in slide, deviceExtraElement.

model"iphone-17-pro-max" | "iphone-17-pro" | "iphone-16-pro-max" | "iphone-16-pro" | "ipad-13"Required
angle"straight" | "slight-left" | "slight-right" | "dramatic-left" | "dramatic-right"Required
verticalPositionnumberRequired
frameScalenumberRequired
horizontalPositionnumberRequired
allowOffCanvasPositionbooleanRequired
hiddenboolean
spanPanoramaboolean
tiltnumber
-30 to 30
popOutsarray of popOut
At most 5 items

popOut

Appears in device.

idstringRequired
Cannot be empty
xnumberRequired
0 to 1
ynumberRequired
0 to 1
widthnumberRequired
0.04 to 1
heightnumberRequired
0.04 to 1
scalenumberRequired
1.1 to 2.2

Download the JSON schema

The schema itself is served at /docs/project.schema.json. It is the same file this page was built from, so a validator you point at it agrees with the editor.