{"openapi":"3.1.0","info":{"title":"ideare API","version":"1.0.0","description":"Brands, their approved versions and files, AI pictures and posts. Make a key in the studio (https://studio.ideare.app) and send it as \"Authorization: Bearer ideare_...\". Approved versions are public: reading them needs no key."},"servers":[{"url":"https://api.ideare.app/v1"}],"tags":[{"name":"Brands","description":"A brand's draft, its settings and its approval."},{"name":"Versions","description":"Approved versions. Public: anyone can read them."},{"name":"Files","description":"The files of a version, and pictures drawn from templates."},{"name":"Runs","description":"Work that takes a while: follow it, or stop it."},{"name":"AI","description":"Text suggestions (free) and AI pictures (credits)."},{"name":"Imports","description":"Start a brand from a link or from your own files."},{"name":"Assets","description":"Your uploaded files."},{"name":"Names","description":"Is a name free as a domain and as a handle?"},{"name":"Usage","description":"Credits and daily allowances."},{"name":"Designs","description":"Posts and other designs made in the editor."}],"paths":{"/brands":{"get":{"operationId":"list_brands","tags":["Brands"],"summary":"List your brands","description":"The brands in your workspace, the most recently changed first, with the total. Each one says its current version and whether a change waits for approval. Costs no credits.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"List your brands","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposed":{"type":"boolean"},"approving":{"type":"boolean"},"markUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","currentVersion","draftRev","proposed","approving","markUrl","updatedAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","offset"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.list","returns":"BrandPageDto"},"x-credits":0},"post":{"operationId":"create_brand","tags":["Brands"],"summary":"Create a brand","description":"Start a brand with a name, and the masters you drew so far if you have them. It starts as a private draft; nothing is public until an owner approves it. The slug comes from the name when you leave it out, and becomes the brand's address: ideare.app/b/<slug>. Costs no credits.","parameters":[{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":80},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"origin":{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false}},"required":["name"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Create a brand","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draft":{"type":"object","properties":{"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["masters","rev","updatedAt","updatedBy"],"additionalProperties":false},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"proposal":{"anyOf":[{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false},{"type":"null"}]},"approving":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runId","version"],"additionalProperties":false},{"type":"null"}]},"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"required":["voice","artRefs","contacts"],"additionalProperties":false},"origin":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false},{"type":"null"}]},"urls":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"latest":{"type":"string","format":"uri"}},"required":["page","latest"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","workspaceId","draft","currentVersion","proposal","approving","launched","sharing","origin","urls","createdAt","updatedAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.create","returns":"BrandDto"},"x-credits":0}},"/brands/{slug}":{"get":{"operationId":"get_brand","tags":["Brands"],"summary":"Read a brand","description":"A brand with its draft: the masters (brand.json) as last saved, the draft's rev, the current version and any change waiting for approval. Send the rev back when you save or approve. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Read a brand","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draft":{"type":"object","properties":{"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["masters","rev","updatedAt","updatedBy"],"additionalProperties":false},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"proposal":{"anyOf":[{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false},{"type":"null"}]},"approving":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runId","version"],"additionalProperties":false},{"type":"null"}]},"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"required":["voice","artRefs","contacts"],"additionalProperties":false},"origin":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false},{"type":"null"}]},"urls":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"latest":{"type":"string","format":"uri"}},"required":["page","latest"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","workspaceId","draft","currentVersion","proposal","approving","launched","sharing","origin","urls","createdAt","updatedAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.get","returns":"BrandDto"},"x-credits":0},"patch":{"operationId":"update_brand","tags":["Brands"],"summary":"Change a brand's settings","description":"Say the brand launched, so search engines may show its public page, and choose what its public brand.json shares: the voice notes, the art references and the contacts (phone, WhatsApp and email). Launching shows within a minute; what brand.json shares changes with the next approval. Owners and admins only. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"additionalProperties":false}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Change a brand's settings","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draft":{"type":"object","properties":{"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["masters","rev","updatedAt","updatedBy"],"additionalProperties":false},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"proposal":{"anyOf":[{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false},{"type":"null"}]},"approving":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runId","version"],"additionalProperties":false},{"type":"null"}]},"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"required":["voice","artRefs","contacts"],"additionalProperties":false},"origin":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false},{"type":"null"}]},"urls":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"latest":{"type":"string","format":"uri"}},"required":["page","latest"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","workspaceId","draft","currentVersion","proposal","approving","launched","sharing","origin","urls","createdAt","updatedAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.update","returns":"BrandDto"},"x-credits":0},"delete":{"operationId":"delete_brand","tags":["Brands"],"summary":"Delete a brand","description":"Remove a brand from your workspace, with its draft and designs. Versions already approved stay on the CDN, because sites and lockfiles may use them, and the slug is never given to anyone else. The owner only. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Delete a brand","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.delete","returns":"DeletedDto"},"x-credits":0}},"/brands/{slug}/draft":{"put":{"operationId":"update_draft","tags":["Brands"],"summary":"Save the draft","description":"Replace the draft's masters (brand.json). Send the draftRev you started from: if someone saved in between, you get a 409 with the current draft, so no change is lost. Saving publishes nothing. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}}},"required":["draftRev","masters"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Save the draft","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draft":{"type":"object","properties":{"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["masters","rev","updatedAt","updatedBy"],"additionalProperties":false},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"proposal":{"anyOf":[{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false},{"type":"null"}]},"approving":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runId","version"],"additionalProperties":false},{"type":"null"}]},"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"required":["voice","artRefs","contacts"],"additionalProperties":false},"origin":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false},{"type":"null"}]},"urls":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"latest":{"type":"string","format":"uri"}},"required":["page","latest"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","workspaceId","draft","currentVersion","proposal","approving","launched","sharing","origin","urls","createdAt","updatedAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.updateDraft","returns":"BrandDto"},"x-credits":0}},"/brands/{slug}/approve":{"post":{"operationId":"approve_draft","tags":["Brands"],"summary":"Approve the draft","description":"From an owner or an admin: make the draft a new public version. Every file is drawn again and published at cdn.ideare.app/b/<slug>/v<n>/; follow the run to see it finish. From anyone else: ask the owner to approve this draft, which they do in one tap. Send the draftRev you looked at. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["draftRev"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Approve the draft","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","const":"approving"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["outcome","version","runId"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"type":"string","const":"proposed"},"proposal":{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false}},"required":["outcome","proposal"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"type":"string","const":"current"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["outcome","version","draftRev"],"additionalProperties":false}]}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.approve","returns":"ApproveResultDto"},"x-credits":0}},"/brands/{slug}/check":{"post":{"operationId":"check_brand","tags":["Brands"],"summary":"Check a brand","description":"Check the draft the way an approval does: contrast, legibility at small sizes, text that fits, safe areas on every social size, and the copy rules. Each result says what to fix. Changes nothing. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Check a brand","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"passed":{"type":"boolean"},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pass","warn","fail"]},"file":{"type":["string","null"]},"message":{"type":"string"},"messageKey":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","status","file","message"],"additionalProperties":{}}}},"required":["passed","checks"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.check","returns":"CheckReportDto","repeatable":true},"x-credits":0}},"/brands/{slug}/versions":{"get":{"operationId":"list_versions","tags":["Versions"],"summary":"List a brand's versions","description":"Every approved version of a brand, newest first, with what changed in each. Versions are public: no key needed. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"security":[],"responses":{"200":{"description":"List a brand's versions","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"approvedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string","enum":["studio","cli","api","mcp"]},"restoredFrom":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"summary":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"change":{"type":"string","enum":["added","changed","removed"]}},"required":["path","change"],"additionalProperties":false}}},"required":["version","approvedAt","source","restoredFrom","summary"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","offset"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"versions.list","returns":"VersionPageDto"},"x-credits":0}},"/brands/{slug}/versions/{version}":{"get":{"operationId":"get_version","tags":["Versions"],"summary":"Read a version","description":"One approved version and every file in it, each with its address and sha256. Ask for `latest` to get the version the brand points at now: the CLI resolves it here, then fetches the files of that exact version. Versions are public: no key needed. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"version","in":"path","required":true,"schema":{"anyOf":[{"type":"string","const":"latest"},{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}]}}],"security":[],"responses":{"200":{"description":"Read a version","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"approvedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string","enum":["studio","cli","api","mcp"]},"restoredFrom":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"summary":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"change":{"type":"string","enum":["added","changed","removed"]}},"required":["path","change"],"additionalProperties":false}},"slug":{"type":"string"},"rendererVersion":{"type":"string"},"baseUrl":{"type":"string","format":"uri"},"manifestUrl":{"type":"string","format":"uri"},"files":{"type":"array","items":{"type":"object","properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"mime":{"type":"string"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"path":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["sha256","mime","size","path","url"],"additionalProperties":false}}},"required":["version","approvedAt","source","restoredFrom","summary","slug","rendererVersion","baseUrl","manifestUrl","files"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"versions.get","returns":"VersionDto"},"x-credits":0}},"/brands/{slug}/versions/{version}/restore":{"post":{"operationId":"restore_version","tags":["Versions"],"summary":"Bring back an older version","description":"Put an older version's masters back in the draft and approve them as a new version, so the history only grows. From anyone but an owner or admin, this asks the owner to approve instead. Send the draft's current draftRev: the draft is replaced. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["draftRev"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Bring back an older version","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","const":"approving"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["outcome","version","runId"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"type":"string","const":"proposed"},"proposal":{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false}},"required":["outcome","proposal"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"type":"string","const":"current"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["outcome","version","draftRev"],"additionalProperties":false}]}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"versions.restore","returns":"ApproveResultDto"},"x-credits":0}},"/brands/{slug}/files":{"get":{"operationId":"list_files","tags":["Files"],"summary":"List a brand's files","description":"Every file of a version (the current one when you leave it out): logos, site icons, share cards, social sizes, tokens, the email signature, the business card. Each has its address, type, size and sha256. Pass a group (web, logo, og, social, tokens, registry, docs, email, print) to get one folder. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"version","in":"query","required":false,"schema":{"default":"latest","anyOf":[{"type":"string","const":"latest"},{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}]}},{"name":"group","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z-]{2,20}$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"List a brand's files","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"baseUrl":{"type":"string","format":"uri"},"files":{"type":"array","items":{"type":"object","properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"mime":{"type":"string"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"path":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["sha256","mime","size","path","url"],"additionalProperties":false}}},"required":["slug","version","baseUrl","files"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"files.list","returns":"FilesDto"},"x-credits":0}},"/brands/{slug}/render":{"post":{"operationId":"render_template","tags":["Files"],"summary":"Draw a template","description":"Draw one of the brand's post templates with your words, as PNG or JPEG, and get a link to it that works for an hour. Templates: promotion, hours, menu, pix (send the Pix key), new-product, status-offer and carousel (5 pages). Sizes: ig-post, ig-square, ig-story, wa-status and share-card. Words that don't fit are refused, with which slot to shorten. Uses the draft unless you name a version. Costs no credits, within the hourly render allowance.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"template":{"type":"string","enum":["promotion","hours","menu","pix","new-product","status-offer","carousel"]},"size":{"type":"string","enum":["ig-post","ig-square","ig-story","wa-status","share-card"]},"text":{"default":{},"type":"object","propertyNames":{"type":"string","pattern":"^[a-z0-9-]{1,40}$"},"additionalProperties":{"type":"string","maxLength":500}},"locale":{"type":"string","enum":["pt-BR","en","es"]},"page":{"default":0,"type":"integer","minimum":0,"maximum":19},"pix":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":77},"city":{"type":"string","minLength":1,"maxLength":15},"amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"required":["key"],"additionalProperties":false},"format":{"default":"png","type":"string","enum":["png","jpeg"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["template"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Draw a template","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"revision":{"type":"string"},"mime":{"type":"string","enum":["image/png","image/jpeg"]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["url","revision","mime","width","height","expiresAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"files.render","returns":"RenderDto","repeatable":true},"x-credits":0}},"/brands/{slug}/live-images":{"get":{"operationId":"get_live_images","tags":["Brands"],"summary":"Read the live image secret","description":"The secret your server signs live image links with (img.ideare.app/<slug>/<template>.png?t.title=...&sig=...), and an example link. Owner only. Keep it on your server: whoever has it can put words on your brand's pictures. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Read the live image secret","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"secret":{"type":"string"},"origin":{"type":"string","format":"uri"},"example":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["slug","secret","origin","example"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.liveImages","returns":"LiveImagesDto"},"x-credits":0}},"/brands/{slug}/live-images/secret":{"post":{"operationId":"rotate_live_image_secret","tags":["Brands"],"summary":"Change the live image secret","description":"Make a new secret for live image links. Links signed with the old one stop working now (403): sign them again with the new one. A picture someone already opened can still show for up to a year if its link has a version (v=), or up to 5 minutes if it doesn't, because browsers and Cloudflare keep a copy. Owner only. Costs no credits.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Change the live image secret","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"secret":{"type":"string"},"origin":{"type":"string","format":"uri"},"example":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["slug","secret","origin","example"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"brands.rotateLiveImageSecret","returns":"LiveImagesDto"},"x-credits":0}},"/runs/{id}":{"get":{"operationId":"get_run","tags":["Runs"],"summary":"Read a run","description":"Where a long job stands (drawing a version's files, AI pictures, an import): queued with its place in line, running, or finished with its result or what went wrong. For live updates, open its eventsUrl as Server-Sent Events. Costs no credits.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Read a run","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"runs.get","returns":"RunDto"},"x-credits":0},"delete":{"operationId":"cancel_run","tags":["Runs"],"summary":"Stop a run","description":"Stop a run that is queued or running. Credits for pictures not made yet come back. A version's cascade can't be stopped: once approved, its files finish. Answers the run as it stands.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Stop a run","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"runs.cancel","returns":"RunDto"},"x-credits":0}},"/ai/text":{"post":{"operationId":"generate_text","tags":["AI"],"summary":"Suggest names and words","description":"Suggestions from what the business does: names, taglines in each of the brand's languages, a voice, palette moods and font tags. Free, within a daily allowance (see get_usage).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"idea":{"type":"string","minLength":3,"maxLength":500},"name":{"type":"string","minLength":1,"maxLength":80},"locales":{"default":["pt-BR"],"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["pt-BR","en","es"]}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["idea"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Suggest names and words","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"names":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"note":{"type":"string"}},"required":["name","note"],"additionalProperties":false}},"copy":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","enum":["pt-BR","en","es"]},"taglines":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]}},"required":["locale","taglines","description"],"additionalProperties":false}},"voice":{"type":"object","properties":{"tone":{"type":"array","items":{"type":"string"}},"notes":{"type":"string"}},"required":["tone","notes"],"additionalProperties":false},"palettes":{"type":"array","items":{"type":"object","properties":{"mood":{"type":"string"},"hue":{"type":"number"},"note":{"type":"string"}},"required":["mood","hue","note"],"additionalProperties":false}},"fonts":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"display":{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string"}},"required":["id","family"],"additionalProperties":false},"text":{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string"}},"required":["id","family"],"additionalProperties":false}},"required":["tags","display","text"],"additionalProperties":false},"dropped":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["names","copy","voice","palettes","fonts","dropped"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"ai.text","returns":"TextBundleDto"},"x-credits":0}},"/brands/{slug}/symbols":{"post":{"operationId":"generate_symbols","tags":["AI"],"summary":"Make AI symbol ideas","description":"Draw up to 4 symbol ideas for the brand with AI: vector, no letters, in its colors. Costs 1 credit per idea, taken when the run starts and given back for each one that fails. Answers with the run; each idea arrives as an event.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"count":{"default":4,"type":"integer","minimum":1,"maximum":4},"hint":{"type":"string","maxLength":200}}}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Make AI symbol ideas","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"ai.symbols","returns":"RunDto"},"x-credits":1}},"/brands/{slug}/art":{"post":{"operationId":"generate_art","tags":["AI"],"summary":"Make AI art","description":"Draw a picture in the brand's own style with AI, from your prompt and the brand's references. A 1k draft costs 1 credit and a 2k keeper costs 2, taken when the run starts and given back if it fails. Answers with the run.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"prompt":{"type":"string","minLength":3,"maxLength":1000},"size":{"default":"1k","type":"string","enum":["1k","2k"]},"references":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["prompt"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Make AI art","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"ai.art","returns":"RunDto"},"x-credits":1}},"/imports/link":{"post":{"operationId":"import_link","tags":["Imports"],"summary":"Read a brand from a link","description":"Read a site or a social profile and pull out the name, the about text, up to 6 colors and the logo, in about 20 seconds. The logo comes as it was and as a clean vector. Free, within a daily allowance. Answers with the run; its result is what it found, to start a brand from.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","minLength":3,"maxLength":2000},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["url"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Read a brand from a link","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.link","returns":"RunDto"},"x-credits":0}},"/imports/files":{"post":{"operationId":"import_files","tags":["Imports"],"summary":"Read a brand from your files","description":"Read uploaded logos and pictures: find their colors and trace a logo into a clean vector, always next to your original. Upload first with create_upload. Free, within a daily allowance. Answers with the run.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"assetIds":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["assetIds"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Read a brand from your files","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.files","returns":"RunDto"},"x-credits":0}},"/imports/folder":{"post":{"operationId":"import_folder","tags":["Imports"],"summary":"Read a whole brand folder","description":"Sort a brand folder or zip you already uploaded (up to 200 files): logos in every version, fonts, a guide PDF, posts and photos. Code reads each file first, then AI looks at the pictures and reads the guide. Each file comes back with the slot it fits and how sure we are, and nothing changes in a brand until you call apply_import. Free, within the daily import allowance. Answers with the run; read it with get_folder_import.","parameters":[{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"files":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["assetId"],"additionalProperties":false}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"source":{"type":"string","minLength":1,"maxLength":120}},"required":["files"]}}}},"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Read a whole brand folder","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["cascade","symbols","art","import_link","import_files","import_folder"]},"brand":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"queuePosition":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"anyOf":[{},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"eventsUrl":{"type":"string","format":"uri"}},"required":["id","kind","brand","status","queuePosition","createdAt","startedAt","finishedAt","result","error","eventsUrl"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.folder","returns":"RunDto"},"x-credits":0}},"/imports/folder/{runId}":{"get":{"operationId":"get_folder_import","tags":["Imports"],"summary":"See a folder import","description":"Where a folder import stands and, once it is read, where each file goes: its slot, how sure we are, the questions to answer, and what the guide said. Each picture has a link that works for an hour. Costs no credits.","parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"See a folder import","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled"]},"brand":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"kind":{"type":"string","enum":["image","svg","font","pdf","other"]},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"role":{"type":"string","enum":["mainLogo","logoHorizontal","logoStacked","logoSymbol","logoName","logoDark","logoLight","icon","profile","cover","post","story","product","pattern","reference","font","guide","other"]},"layout":{"anyOf":[{"type":"string","enum":["symbol","horizontal","stacked","name","badge"]},{"type":"null"}]},"hasText":{"type":["boolean","null"]},"text":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"string","pattern":"^#[0-9a-f]{6}$"}},"slot":{"type":"string","enum":["mark","markSmall","markDark","horizontal","stacked","wordmark","fontDisplay","fontText","fontPrivate","artRefs","guide","library"]},"confidence":{"type":"number","minimum":0,"maximum":1},"by":{"type":"string","enum":["code","ai"]},"vector":{"anyOf":[{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"svg":{"type":"string"},"traced":{"type":"boolean"}},"required":["assetId","svg","traced"],"additionalProperties":false},{"type":"null"}]},"ref":{"anyOf":[{"type":"object","properties":{"sha256":{"type":"string"},"mime":{"type":"string","enum":["image/png","image/jpeg","image/webp"]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["sha256","mime","width","height"],"additionalProperties":false},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"family":{"type":"string"},"style":{"type":"string"},"weight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"italic":{"type":"boolean"},"open":{"type":"boolean"},"catalogId":{"type":["string","null"]},"standIn":{"type":["string","null"]},"use":{"type":"string","enum":["display","text"]}},"required":["family","style","weight","italic","open","catalogId","standIn","use"],"additionalProperties":false},{"type":"null"}]},"note":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","enum":["unreadable","heic","noVector","privateFont","guideUnread","duplicate","tooManyRefs"]},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["assetId","path","kind","size","width","height","role","layout","hasText","text","colors","slot","confidence","by","vector","ref","font","note"],"additionalProperties":false}},"guide":{"anyOf":[{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]},"tagline":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"name":{"type":["string","null"]},"cmyk":{"type":["string","null"]},"pantone":{"type":["string","null"]},"role":{"type":"string","enum":["primary","secondary","accent","neutral","other"]}},"required":["hex","name","cmyk","pantone","role"],"additionalProperties":false}},"fonts":{"type":"array","items":{"type":"object","properties":{"family":{"type":"string"},"use":{"type":"string","enum":["display","text","other"]},"catalogId":{"type":["string","null"]}},"required":["family","use","catalogId"],"additionalProperties":false}},"logoRules":{"type":"array","items":{"type":"string"}},"voice":{"anyOf":[{"type":"object","properties":{"tone":{"type":"array","items":{"type":"string"}},"notes":{"type":["string","null"]}},"required":["tone","notes"],"additionalProperties":false},{"type":"null"}]}},"required":["assetId","name","tagline","colors","fonts","logoRules","voice"],"additionalProperties":false},{"type":"null"}]},"questions":{"type":"array","items":{"type":"object","properties":{"slot":{"type":"string","enum":["mark","markSmall","markDark","horizontal","stacked","wordmark"]},"assetIds":{"minItems":2,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["slot","assetIds"],"additionalProperties":false}},"name":{"type":["string","null"]},"ai":{"type":"boolean"}},"required":["files","guide","questions","name","ai"],"additionalProperties":false},{"type":"null"}]},"previews":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","format":"uri"}},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["runId","status","brand","result","previews","error"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.getFolder","returns":"FolderImportDto"},"x-credits":0}},"/imports/folder/{runId}/apply":{"post":{"operationId":"apply_import","tags":["Imports"],"summary":"Use a folder import","description":"Write a read folder into the brand: every file goes to its slot, with your moves made (a file moved into a logo slot sends the one there back to your files). For a brand, send its draftRev; without one, a new brand is made with `name`. Fonts ideare's catalog doesn't have stay private and are never published: list the ones you hold a license for in `licensed`. Only the draft changes: approve it to publish. Costs no credits.","parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"idempotency-key","in":"header","required":false,"description":"Your own key for this request, such as a UUID. Send the same key again after a timeout and you get the first answer back, with nothing done or charged twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":40},"locale":{"type":"string","enum":["pt-BR","en","es"]},"moves":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slot":{"type":"string","enum":["mark","markSmall","markDark","horizontal","stacked","wordmark","fontDisplay","fontText","fontPrivate","artRefs","guide","library"]}},"required":["assetId","slot"],"additionalProperties":false}},"licensed":{"default":[],"maxItems":200,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Use a folder import","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draft":{"type":"object","properties":{"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["masters","rev","updatedAt","updatedBy"],"additionalProperties":false},"currentVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"proposal":{"anyOf":[{"type":"object","properties":{"rev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"proposedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string","enum":["studio","cli","api","mcp"]}},"required":["rev","proposedAt","proposedBy","source"],"additionalProperties":false},{"type":"null"}]},"approving":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runId","version"],"additionalProperties":false},{"type":"null"}]},"launched":{"type":"boolean"},"sharing":{"type":"object","properties":{"voice":{"type":"boolean"},"artRefs":{"type":"boolean"},"contacts":{"type":"boolean"}},"required":["voice","artRefs","contacts"],"additionalProperties":false},"origin":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false},{"type":"null"}]},"urls":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"latest":{"type":"string","format":"uri"}},"required":["page","latest"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","name","workspaceId","draft","currentVersion","proposal","approving","launched","sharing","origin","urls","createdAt","updatedAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.applyFolder","returns":"BrandDto"},"x-credits":0}},"/imports/repo":{"post":{"operationId":"read_repo","tags":["Imports"],"summary":"Read a brand from a codebase","description":"Send a project's style files (Tailwind config, CSS variables, theme files, package.json, the root layout), at most 55,000 characters, and get back its colors for light and dark, its fonts, its corner radius and which of the logo paths you listed is the brand's. `ideare init` sends these when you are signed in. Free, within the daily import allowance.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"files":{"minItems":1,"maxItems":40,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":300},"content":{"type":"string","maxLength":20000}},"required":["path","content"]}},"logos":{"default":[],"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}}},"required":["files"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Read a brand from a codebase","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"hasUi":{"type":"boolean"},"name":{"type":["string","null"]},"light":{"anyOf":[{"type":"object","properties":{"bg":{"type":"string"},"surface":{"type":"string"},"border":{"type":"string"},"fg":{"type":"string"},"fgMuted":{"type":"string"},"accent":{"type":"string"},"accentFg":{"type":"string"},"danger":{"type":["string","null"]},"success":{"type":["string","null"]},"warning":{"type":["string","null"]},"radius":{"type":"string"},"fontSans":{"type":"string"},"fontDisplay":{"type":["string","null"]}},"required":["bg","surface","border","fg","fgMuted","accent","accentFg","danger","success","warning","radius","fontSans","fontDisplay"],"additionalProperties":false},{"type":"null"}]},"dark":{"anyOf":[{"type":"object","properties":{"bg":{"type":"string"},"surface":{"type":"string"},"border":{"type":"string"},"fg":{"type":"string"},"fgMuted":{"type":"string"},"accent":{"type":"string"},"accentFg":{"type":"string"},"danger":{"type":["string","null"]},"success":{"type":["string","null"]},"warning":{"type":["string","null"]},"radius":{"type":"string"},"fontSans":{"type":"string"},"fontDisplay":{"type":["string","null"]}},"required":["bg","surface","border","fg","fgMuted","accent","accentFg","danger","success","warning","radius","fontSans","fontDisplay"],"additionalProperties":false},{"type":"null"}]},"logoPath":{"type":["string","null"]}},"required":["hasUi","name","light","dark","logoPath"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"imports.repo","returns":"RepoTokensDto"},"x-credits":0}},"/assets":{"post":{"operationId":"create_upload","tags":["Assets"],"summary":"Upload a file","description":"Get a link to PUT one file to, up to 25 MB: a PNG, JPEG, WebP, SVG or HEIC picture, a TTF, OTF, WOFF or WOFF2 font, or a PDF. Send its sha256 first; storage checks the bytes against it. If your workspace already has that file, no link comes back and you use it as it is. Then call complete_upload. Costs no credits.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"mime":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/svg+xml","image/heic","image/heif","font/ttf","font/otf","font/woff","font/woff2","application/pdf"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":26214400},"name":{"type":"string","minLength":1,"maxLength":200},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["sha256","mime","size"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Upload a file","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sha256":{"type":"string"},"kind":{"type":"string","enum":["upload","import","symbol","art","trace"]},"mime":{"type":"string"},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"urlExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"uploaded":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sha256","kind","mime","size","width","height","name","url","urlExpiresAt","uploaded","createdAt"],"additionalProperties":false},"upload":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"method":{"type":"string","const":"PUT"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["url","method","headers","expiresAt"],"additionalProperties":false},{"type":"null"}]}},"required":["asset","upload"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"assets.createUpload","returns":"UploadDto"},"x-credits":0},"get":{"operationId":"list_assets","tags":["Assets"],"summary":"List your files","description":"The files in your workspace's library, newest first: uploads, imported pictures, AI symbols and art. Each has a link that works for an hour. Costs no credits.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"List your files","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sha256":{"type":"string"},"kind":{"type":"string","enum":["upload","import","symbol","art","trace"]},"mime":{"type":"string"},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"urlExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"uploaded":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sha256","kind","mime","size","width","height","name","url","urlExpiresAt","uploaded","createdAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","offset"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"assets.list","returns":"AssetPageDto"},"x-credits":0}},"/assets/{id}/complete":{"post":{"operationId":"complete_upload","tags":["Assets"],"summary":"Finish an upload","description":"Tell us the PUT finished. We check the file is there with the size you said, and it joins your library. Costs no credits.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Finish an upload","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sha256":{"type":"string"},"kind":{"type":"string","enum":["upload","import","symbol","art","trace"]},"mime":{"type":"string"},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"urlExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"uploaded":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sha256","kind","mime","size","width","height","name","url","urlExpiresAt","uploaded","createdAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"assets.completeUpload","returns":"AssetDto"},"x-credits":0}},"/names/check":{"post":{"operationId":"check_names","tags":["Names"],"summary":"Check if a name is free","description":"For up to 5 names, see whether the domains (.com.br, .com and .app unless you say) and the social handles look free, with links to search trademarks at INPI, USPTO and EUIPO. `available` means no record was found, not that it is yours; `unknown` means nobody answered. Each name whose handles are checked uses one of the day's handle checks. Costs no credits.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"names":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":63}},"tlds":{"default":["com.br","com","app"],"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","pattern":"^[a-z0-9.-]{2,24}$"}},"networks":{"default":["instagram"],"maxItems":4,"type":"array","items":{"type":"string","enum":["instagram","tiktok","x","youtube"]}}},"required":["names"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Check if a name is free","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"status":{"type":"string","enum":["available","taken","unknown"]},"reason":{"anyOf":[{"type":"string","enum":["noAnswer","dailyCap","notSetUp","invalid"]},{"type":"null"}]}},"required":["domain","status","reason"],"additionalProperties":false}},"handles":{"type":"array","items":{"type":"object","properties":{"network":{"type":"string"},"handle":{"type":"string"},"status":{"type":"string","enum":["available","taken","unknown"]},"reason":{"anyOf":[{"type":"string","enum":["noAnswer","dailyCap","notSetUp","invalid"]},{"type":"null"}]}},"required":["network","handle","status","reason"],"additionalProperties":false}},"trademarks":{"type":"array","items":{"type":"object","properties":{"office":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["office","url"],"additionalProperties":false}}},"required":["name","domains","handles","trademarks"],"additionalProperties":false}}},"required":["results"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"names.check","returns":"NamesDto","repeatable":true},"x-credits":0}},"/usage":{"get":{"operationId":"get_usage","tags":["Usage"],"summary":"See your credits","description":"This month's credits: what your plan includes, what you used, the credits you bought, the welcome credits a new account starts with and when they expire, and what is left. Also today's text suggestions and imports against their daily allowance, and when each resets. Costs no credits.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"See your credits","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"plan":{"type":"string","enum":["free","pro","internal"]},"credits":{"type":"object","properties":{"monthly":{"type":"integer","minimum":0,"maximum":9007199254740991},"usedThisMonth":{"type":"integer","minimum":0,"maximum":9007199254740991},"balance":{"type":"integer","minimum":0,"maximum":9007199254740991},"welcome":{"anyOf":[{"type":"object","properties":{"credits":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["credits","expiresAt"],"additionalProperties":false},{"type":"null"}]},"remaining":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["monthly","usedThisMonth","balance","welcome","remaining"],"additionalProperties":false},"text":{"type":"object","properties":{"dailyCap":{"type":"integer","minimum":0,"maximum":9007199254740991},"usedToday":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["dailyCap","usedToday"],"additionalProperties":false},"imports":{"type":"object","properties":{"dailyCap":{"type":"integer","minimum":0,"maximum":9007199254740991},"usedToday":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["dailyCap","usedToday"],"additionalProperties":false},"resetsAt":{"type":"object","properties":{"day":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"month":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["day","month"],"additionalProperties":false}},"required":["plan","credits","text","imports","resetsAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"usage.get","returns":"UsageDto"},"x-credits":0}},"/designs":{"get":{"operationId":"list_designs","tags":["Designs"],"summary":"List your designs","description":"Your posts and other designs, the most recently changed first. Pass a brand to see only its designs. Costs no credits.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"brand","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"List your designs","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brandSlug":{"type":"string"},"name":{"type":"string"},"template":{"type":["string","null"]},"sceneRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","brandSlug","name","template","sceneRev","revision","createdAt","updatedAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","offset"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.list","returns":"DesignPageDto"},"x-credits":0},"post":{"operationId":"create_design","tags":["Designs"],"summary":"Start a design","description":"Start a post or any design for a brand, from one of its templates or from a blank page. A workspace makes up to 300 designs on Free and 5,000 on Pro, and deleted ones count too. Costs no credits.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"name":{"type":"string","minLength":1,"maxLength":120},"template":{"type":"string","enum":["promotion","hours","menu","pix","new-product","status-offer","carousel"]},"size":{"type":"string","enum":["ig-post","ig-square","ig-story","wa-status","share-card"]},"locale":{"type":"string","enum":["pt-BR","en","es"]},"scene":{"type":"object","properties":{"v":{"type":"number","const":1},"pages":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["v","pages"],"additionalProperties":{}}},"required":["brand","name"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Start a design","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brandSlug":{"type":"string"},"name":{"type":"string"},"template":{"type":["string","null"]},"sceneRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"scene":{"type":"object","properties":{"v":{"type":"number","const":1},"pages":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["v","pages"],"additionalProperties":{}}},"required":["id","brandSlug","name","template","sceneRev","revision","createdAt","updatedAt","scene"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.create","returns":"DesignDto"},"x-credits":0}},"/designs/{id}":{"get":{"operationId":"get_design","tags":["Designs"],"summary":"Read a design","description":"One design with its whole scene: every page and layer. Send its sceneRev back when you save. Costs no credits.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Read a design","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brandSlug":{"type":"string"},"name":{"type":"string"},"template":{"type":["string","null"]},"sceneRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"scene":{"type":"object","properties":{"v":{"type":"number","const":1},"pages":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["v","pages"],"additionalProperties":{}}},"required":["id","brandSlug","name","template","sceneRev","revision","createdAt","updatedAt","scene"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.get","returns":"DesignDto"},"x-credits":0},"put":{"operationId":"update_design","tags":["Designs"],"summary":"Save a design","description":"Save a design's scene or name. Send the sceneRev you started from: if it changed in between, you get a 409 with the current design. Costs no credits.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"sceneRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scene":{"type":"object","properties":{"v":{"type":"number","const":1},"pages":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["v","pages"],"additionalProperties":{}},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["sceneRev"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Save a design","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brandSlug":{"type":"string"},"name":{"type":"string"},"template":{"type":["string","null"]},"sceneRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"scene":{"type":"object","properties":{"v":{"type":"number","const":1},"pages":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["v","pages"],"additionalProperties":{}}},"required":["id","brandSlug","name","template","sceneRev","revision","createdAt","updatedAt","scene"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.update","returns":"DesignDto"},"x-credits":0},"delete":{"operationId":"delete_design","tags":["Designs"],"summary":"Delete a design","description":"Delete a design. Pictures you already shared stay where you put them. Costs no credits.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Delete a design","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.delete","returns":"DeletedDto"},"x-credits":0}},"/designs/{id}/render":{"post":{"operationId":"render_design","tags":["Designs"],"summary":"Export a design","description":"Draw one page of a design as PNG or JPEG, with the brand's draft, and get a link to it that works for an hour. Costs no credits, within the hourly render allowance.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"page":{"default":0,"type":"integer","minimum":0,"maximum":19},"format":{"default":"png","type":"string","enum":["png","jpeg"]}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Export a design","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"revision":{"type":"string"},"mime":{"type":"string","enum":["image/png","image/jpeg"]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["url","revision","mime","width","height","expiresAt"],"additionalProperties":false}}}}}},"400":{"description":"The input is wrong. `details` names each field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"The key is missing, wrong or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"This key or this person may not do this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not found, or not yours.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Something changed in between, such as the draft's rev.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests, or a daily allowance is spent. Retry-After says when.","headers":{"Retry-After":{"description":"When present, how many seconds to wait before trying again.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Not built yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Any other failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-sdk":{"method":"designs.render","returns":"RenderDto","repeatable":true},"x-credits":0}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","UNAUTHORIZED","INVALID_TOKEN","PAYMENT_REQUIRED","FORBIDDEN","NOT_FOUND","CONFLICT","PAYLOAD_TOO_LARGE","IDEMPOTENCY_KEY_REUSED","RATE_LIMIT_EXCEEDED","QUOTA_EXCEEDED","INTERNAL_ERROR","NOT_IMPLEMENTED","SERVICE_UNAVAILABLE"],"description":"What went wrong, as a word a program can check."},"message":{"type":"string","description":"What went wrong, as a sentence."},"messageKey":{"type":"string","description":"`message` as a key, to show it in your reader's language, with `params` filling its blanks."},"params":{"type":"object","additionalProperties":{"type":["string","number"]},"description":"The values that fill `messageKey`'s blanks, such as a limit."},"details":{"description":"More about this error, such as retryAfterSecs."}}}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"x-mcp-tools":[{"name":"list_brands","title":"List your brands","description":"The brands in your workspace, the most recently changed first, with the total. Each one says its current version and whether a change waits for approval. Costs no credits.","inputSchema":{"type":"object","properties":{"limit":{"default":20,"type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},{"name":"get_brand","title":"Read a brand","description":"A brand with its draft: the masters (brand.json) as last saved, the draft's rev, the current version and any change waiting for approval. Send the rev back when you save or approve. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["slug"],"additionalProperties":false}},{"name":"create_brand","title":"Create a brand","description":"Start a brand with a name, and the masters you drew so far if you have them. It starts as a private draft; nothing is public until an owner approves it. The slug comes from the name when you leave it out, and becomes the brand's address: ideare.app/b/<slug>. Costs no credits.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}},"origin":{"type":"object","properties":{"kind":{"type":"string","enum":["idea","link","files","try"]},"idea":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"},"seed":{"type":"string","maxLength":100},"picks":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number"]}},"run":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind"],"additionalProperties":false}},"required":["name"],"additionalProperties":false}},{"name":"update_draft","title":"Save the draft","description":"Replace the draft's masters (brand.json). Send the draftRev you started from: if someone saved in between, you get a 409 with the current draft, so no change is lost. Saving publishes nothing. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"masters":{"type":"object","properties":{"schemaVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["schemaVersion","name"],"additionalProperties":{}}},"required":["slug","draftRev","masters"],"additionalProperties":false}},{"name":"approve_draft","title":"Approve the draft","description":"From an owner or an admin: make the draft a new public version. Every file is drawn again and published at cdn.ideare.app/b/<slug>/v<n>/; follow the run to see it finish. From anyone else: ask the owner to approve this draft, which they do in one tap. Send the draftRev you looked at. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["slug","draftRev"],"additionalProperties":false}},{"name":"check_brand","title":"Check a brand","description":"Check the draft the way an approval does: contrast, legibility at small sizes, text that fits, safe areas on every social size, and the copy rules. Each result says what to fix. Changes nothing. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["slug"],"additionalProperties":false}},{"name":"list_versions","title":"List a brand's versions","description":"Every approved version of a brand, newest first, with what changed in each. Versions are public: no key needed. Costs no credits.","inputSchema":{"type":"object","properties":{"limit":{"default":20,"type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["slug"],"additionalProperties":false}},{"name":"get_version","title":"Read a version","description":"One approved version and every file in it, each with its address and sha256. Ask for `latest` to get the version the brand points at now: the CLI resolves it here, then fetches the files of that exact version. Versions are public: no key needed. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"version":{"anyOf":[{"type":"string","const":"latest"},{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}]}},"required":["slug","version"],"additionalProperties":false}},{"name":"restore_version","title":"Bring back an older version","description":"Put an older version's masters back in the draft and approve them as a new version, so the history only grows. From anyone but an owner or admin, this asks the owner to approve instead. Send the draft's current draftRev: the draft is replaced. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["slug","version","draftRev"],"additionalProperties":false}},{"name":"list_files","title":"List a brand's files","description":"Every file of a version (the current one when you leave it out): logos, site icons, share cards, social sizes, tokens, the email signature, the business card. Each has its address, type, size and sha256. Pass a group (web, logo, og, social, tokens, registry, docs, email, print) to get one folder. Costs no credits.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"version":{"default":"latest","anyOf":[{"type":"string","const":"latest"},{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}]},"group":{"type":"string","pattern":"^[a-z-]{2,20}$"}},"required":["slug"],"additionalProperties":false}},{"name":"render_template","title":"Draw a template","description":"Draw one of the brand's post templates with your words, as PNG or JPEG, and get a link to it that works for an hour. Templates: promotion, hours, menu, pix (send the Pix key), new-product, status-offer and carousel (5 pages). Sizes: ig-post, ig-square, ig-story, wa-status and share-card. Words that don't fit are refused, with which slot to shorten. Uses the draft unless you name a version. Costs no credits, within the hourly render allowance.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"template":{"type":"string","enum":["promotion","hours","menu","pix","new-product","status-offer","carousel"]},"size":{"type":"string","enum":["ig-post","ig-square","ig-story","wa-status","share-card"]},"text":{"default":{},"type":"object","propertyNames":{"type":"string","pattern":"^[a-z0-9-]{1,40}$"},"additionalProperties":{"type":"string","maxLength":500}},"locale":{"type":"string","enum":["pt-BR","en","es"]},"page":{"default":0,"type":"integer","minimum":0,"maximum":19},"pix":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":77},"city":{"type":"string","minLength":1,"maxLength":15},"amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"required":["key"],"additionalProperties":false},"format":{"default":"png","type":"string","enum":["png","jpeg"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["slug","template"],"additionalProperties":false}},{"name":"get_run","title":"Read a run","description":"Where a long job stands (drawing a version's files, AI pictures, an import): queued with its place in line, running, or finished with its result or what went wrong. For live updates, open its eventsUrl as Server-Sent Events. Costs no credits.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":false}},{"name":"cancel_run","title":"Stop a run","description":"Stop a run that is queued or running. Credits for pictures not made yet come back. A version's cascade can't be stopped: once approved, its files finish. Answers the run as it stands.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":false}},{"name":"generate_text","title":"Suggest names and words","description":"Suggestions from what the business does: names, taglines in each of the brand's languages, a voice, palette moods and font tags. Free, within a daily allowance (see get_usage).","inputSchema":{"type":"object","properties":{"idea":{"type":"string","minLength":3,"maxLength":500},"name":{"type":"string","minLength":1,"maxLength":80},"locales":{"default":["pt-BR"],"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["pt-BR","en","es"]}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["idea"],"additionalProperties":false}},{"name":"generate_symbols","title":"Make AI symbol ideas","description":"Draw up to 4 symbol ideas for the brand with AI: vector, no letters, in its colors. Costs 1 credit per idea, taken when the run starts and given back for each one that fails. Answers with the run; each idea arrives as an event.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"count":{"default":4,"type":"integer","minimum":1,"maximum":4},"hint":{"type":"string","maxLength":200}},"required":["slug"],"additionalProperties":false}},{"name":"generate_art","title":"Make AI art","description":"Draw a picture in the brand's own style with AI, from your prompt and the brand's references. A 1k draft costs 1 credit and a 2k keeper costs 2, taken when the run starts and given back if it fails. Answers with the run.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"prompt":{"type":"string","minLength":3,"maxLength":1000},"size":{"default":"1k","type":"string","enum":["1k","2k"]},"references":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["slug","prompt"],"additionalProperties":false}},{"name":"import_link","title":"Read a brand from a link","description":"Read a site or a social profile and pull out the name, the about text, up to 6 colors and the logo, in about 20 seconds. The logo comes as it was and as a clean vector. Free, within a daily allowance. Answers with the run; its result is what it found, to start a brand from.","inputSchema":{"type":"object","properties":{"url":{"type":"string","minLength":3,"maxLength":2000},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["url"],"additionalProperties":false}},{"name":"import_files","title":"Read a brand from your files","description":"Read uploaded logos and pictures: find their colors and trace a logo into a clean vector, always next to your original. Upload first with create_upload. Free, within a daily allowance. Answers with the run.","inputSchema":{"type":"object","properties":{"assetIds":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"required":["assetIds"],"additionalProperties":false}},{"name":"import_folder","title":"Read a whole brand folder","description":"Sort a brand folder or zip you already uploaded (up to 200 files): logos in every version, fonts, a guide PDF, posts and photos. Code reads each file first, then AI looks at the pictures and reads the guide. Each file comes back with the slot it fits and how sure we are, and nothing changes in a brand until you call apply_import. Free, within the daily import allowance. Answers with the run; read it with get_folder_import.","inputSchema":{"type":"object","properties":{"files":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["assetId"],"additionalProperties":false}},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"},"source":{"type":"string","minLength":1,"maxLength":120}},"required":["files"],"additionalProperties":false}},{"name":"get_folder_import","title":"See a folder import","description":"Where a folder import stands and, once it is read, where each file goes: its slot, how sure we are, the questions to answer, and what the guide said. Each picture has a link that works for an hour. Costs no credits.","inputSchema":{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["runId"],"additionalProperties":false}},{"name":"apply_import","title":"Use a folder import","description":"Write a read folder into the brand: every file goes to its slot, with your moves made (a file moved into a logo slot sends the one there back to your files). For a brand, send its draftRev; without one, a new brand is made with `name`. Fonts ideare's catalog doesn't have stay private and are never published: list the ones you hold a license for in `licensed`. Only the draft changes: approve it to publish. Costs no credits.","inputSchema":{"type":"object","properties":{"runId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"draftRev":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":40},"locale":{"type":"string","enum":["pt-BR","en","es"]},"moves":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slot":{"type":"string","enum":["mark","markSmall","markDark","horizontal","stacked","wordmark","fontDisplay","fontText","fontPrivate","artRefs","guide","library"]}},"required":["assetId","slot"],"additionalProperties":false}},"licensed":{"default":[],"maxItems":200,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["runId"],"additionalProperties":false}},{"name":"list_assets","title":"List your files","description":"The files in your workspace's library, newest first: uploads, imported pictures, AI symbols and art. Each has a link that works for an hour. Costs no credits.","inputSchema":{"type":"object","properties":{"limit":{"default":20,"type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},{"name":"check_names","title":"Check if a name is free","description":"For up to 5 names, see whether the domains (.com.br, .com and .app unless you say) and the social handles look free, with links to search trademarks at INPI, USPTO and EUIPO. `available` means no record was found, not that it is yours; `unknown` means nobody answered. Each name whose handles are checked uses one of the day's handle checks. Costs no credits.","inputSchema":{"type":"object","properties":{"names":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":63}},"tlds":{"default":["com.br","com","app"],"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","pattern":"^[a-z0-9.-]{2,24}$"}},"networks":{"default":["instagram"],"maxItems":4,"type":"array","items":{"type":"string","enum":["instagram","tiktok","x","youtube"]}}},"required":["names"],"additionalProperties":false}},{"name":"get_usage","title":"See your credits","description":"This month's credits: what your plan includes, what you used, the credits you bought, the welcome credits a new account starts with and when they expire, and what is left. Also today's text suggestions and imports against their daily allowance, and when each resets. Costs no credits.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"list_designs","title":"List your designs","description":"Your posts and other designs, the most recently changed first. Pass a brand to see only its designs. Costs no credits.","inputSchema":{"type":"object","properties":{"limit":{"default":20,"type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"brand":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"}},"additionalProperties":false}},{"name":"render_design","title":"Export a design","description":"Draw one page of a design as PNG or JPEG, with the brand's draft, and get a link to it that works for an hour. Costs no credits, within the hourly render allowance.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"default":0,"type":"integer","minimum":0,"maximum":19},"format":{"default":"png","type":"string","enum":["png","jpeg"]}},"required":["id"],"additionalProperties":false}}]}