Raw schema
{
"type": "object",
"properties": {
"idea": {
"type": "string",
"minLength": 3,
"maxLength": 280,
"description": "The post idea the cover is for, in one or two sentences"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 90,
"description": "The cover title, at most about 8 words; it stays live text"
},
"subtitle": {
"description": "One short line under the title",
"type": "string",
"maxLength": 140
},
"byline": {
"description": "Account or author name, for example @openkrill",
"type": "string",
"maxLength": 60
},
"reader": {
"description": "Who the post is for, for example 'founders who run AI agents'",
"type": "string",
"maxLength": 80
},
"subject": {
"description": "One concrete object the picture shows, such as 'a glass jar of folded paper notes'; write one from the idea when the user gave none, since an idea alone gives a vague picture",
"type": "string",
"maxLength": 200
},
"kind": {
"default": "article",
"description": "article: Article or blog cover: a strong headline beside one clear picture; note: Note cover (Instagram or Xiaohongshu style): a large headline over a close, friendly picture; ecommerce: Shop poster: the product large in the middle, the offer in words; product: Product design shot: the object as a hero on a clean set, the name below",
"type": "string",
"enum": [
"article",
"note",
"ecommerce",
"product"
]
},
"style": {
"default": "openkrill",
"description": "An account style preset, or your own style so every cover of one account looks alike",
"anyOf": [
{
"type": "string",
"enum": [
"openkrill",
"openkrill_dark"
]
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"medium": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "What the pictures are, for example a film photograph or a flat paper collage"
},
"light": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"mood": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"palette": {
"minItems": 2,
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"description": "Hex colours, background tone first"
},
"ink": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$",
"description": "Colour of the title and subtitle"
},
"muted": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$",
"description": "Colour of the byline"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"required": [
"name",
"medium",
"light",
"mood",
"palette",
"ink",
"muted",
"accent"
],
"additionalProperties": false
}
]
},
"formats": {
"default": [
"instagram_portrait",
"x_landscape"
],
"description": "Sizes to lay out; the first is the size the pictures are made at",
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"instagram_portrait",
"x_landscape",
"1:1",
"9:16",
"16:9",
"5:2",
"4:3",
"3:4"
]
}
},
"split": {
"default": "separate",
"description": "separate: two pictures, a background plate and a subject cutout; segment: one scene per size that a segmentation model cuts",
"type": "string",
"enum": [
"separate",
"segment"
]
},
"background_url": {
"description": "Your background picture, once made from the prompt",
"type": "string",
"maxLength": 2048,
"format": "uri"
},
"subject_url": {
"description": "Your subject cutout, once made from the prompt",
"type": "string",
"maxLength": 2048,
"format": "uri"
}
},
"required": [
"idea",
"title"
],
"additionalProperties": false
}