{"openapi":"3.1.0","info":{"title":"Zenora Render","version":"1.0.0","description":"Authenticated access to your generation queue and private library. Existing /api paths, payloads and app credentials remain compatible. Advanced reference recipes retain their current versioned contract."},"servers":[{"url":"https://api.zenora.dev"}],"security":[{"AppID":[],"AppHash":[]}],"components":{"securitySchemes":{"AppID":{"type":"apiKey","in":"header","name":"X-App-ID"},"AppHash":{"type":"apiKey","in":"header","name":"X-App-Hash"}},"schemas":{"GenerationRequest":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"prompt":{"type":"string","maxLength":65536},"seed":{"type":["integer","null"],"minimum":0,"maximum":4294967295,"default":null},"width":{"type":"integer","multipleOf":16,"default":1024},"height":{"type":"integer","multipleOf":16,"default":1536},"preset":{"type":"string","enum":["quality","fast"],"default":"quality"},"previews":{"type":"boolean","default":true},"repeatable":{"type":"boolean","default":false},"replay_of":{"type":"string","format":"uuid"},"reference_recipe":{"type":"object","description":"Existing versioned reference recipe. Use Studio to prepare and inspect reference assignments."},"library_context":{"type":"object","description":"Optional existing album, stack and lineage context."}}}}},"paths":{"/api/generations":{"post":{"summary":"Create one image","description":"Quality uses 10 steps, CFG 1, ER-SDE/Beta and shift 5. Fast uses 8 steps. Dimensions must fit the configured pixel limit. A retry with the same key and body recovers the original submission.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"},"example":{"prompt":"A sunlit garden, photographed on a quiet morning","seed":42,"width":1024,"height":1536,"preset":"quality","previews":true}}}},"responses":{"202":{"description":"Accepted durable submission."},"409":{"description":"Idempotency conflict."},"422":{"description":"Invalid input."},"503":{"description":"Busy or temporarily unavailable. Retry with the same key."}}}},"/api/generations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Read this generation and its current job","responses":{"200":{"description":"Saved request, resolved seed, progress and result links."},"404":{"description":"Not found in your account."}}}},"/api/generations/{id}/events":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Stream progress and preview events","parameters":[{"name":"Last-Event-ID","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"SSE stream. Reconnect with Last-Event-ID; closing the stream does not cancel generation.","content":{"text/event-stream":{"schema":{"type":"string"}}}}}}},"/api/generations/{id}/cancel":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"summary":"Request cancellation","responses":{"200":{"description":"Cancellation requested; inspect the job for its terminal state."}}}},"/api/generations/{id}/result":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Download the original completed PNG","responses":{"200":{"description":"PNG image","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"409":{"description":"Image is not complete."}}}},"/api/library":{"get":{"summary":"Browse your private generations","parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"shape","in":"query","schema":{"type":"string","enum":["portrait","landscape","square"]}}],"responses":{"200":{"description":"Paginated items, active jobs and page count."}}}}}}