{"openapi":"3.1.0","info":{"title":"Restory Agent API","version":"1.0.0","description":"Agent-friendly API for Restory photo restoration, image generation, video generation, credits, gallery, uploads, and job polling. Use /api/agent/capabilities for current model settings and credit costs."},"servers":[{"url":"https://www.restory.pics","description":"Restory production"}],"security":[{"BearerAuth":[]}],"paths":{"/api/agent/capabilities":{"get":{"summary":"Discover current Restory capabilities","description":"Public discovery endpoint with restoration methods, image models, video models, endpoint paths, settings, feature IDs, and credit costs.","security":[],"responses":{"200":{"description":"Current capabilities","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}},"/api/agent/openapi":{"get":{"summary":"Fetch this OpenAPI document","security":[],"responses":{"200":{"description":"OpenAPI JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent/credits":{"get":{"summary":"Check account credits and API access","responses":{"200":{"description":"Credit balance and plan access","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Plan does not include AI Agent API Access"}}}},"/api/agent/jobs/{id}":{"get":{"summary":"Poll a generated image or video job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["image","video"]}}],"responses":{"200":{"description":"Job status, result URL when completed, and error details when failed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key"},"404":{"description":"Job not found"}}}},"/api/agent/gallery":{"get":{"summary":"List recent image or video records","parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["image","video"]}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Recent media records","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key"}}}},"/api/restore-photo":{"post":{"summary":"Fast photo restoration","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/repair-damage":{"post":{"summary":"Repair damaged photos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/premium-ultra":{"post":{"summary":"Premium 2K or 4K restoration","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/colorize-photo":{"post":{"summary":"Colorize black-and-white photos","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/restore-likeness":{"post":{"summary":"Restore likeness using damaged and reference images","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/upscale-image":{"post":{"summary":"Upscale an image","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Data URL for small images"},"imageUrl":{"type":"string","format":"uri"},"damagedImage":{"type":"string","description":"Data URL for restore-likeness damaged image"},"damagedImageUrl":{"type":"string","format":"uri"},"referenceImage":{"type":"string","description":"Data URL for restore-likeness reference image"},"referenceImageUrl":{"type":"string","format":"uri"},"prompt":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"seed":{"type":"integer","minimum":0},"originalFileName":{"type":"string"}}}}}},"responses":{"200":{"description":"Queued image job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/generate-image":{"post":{"summary":"Generate or edit an image","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"additionalProperties":true,"properties":{"prompt":{"type":"string"},"modelSlug":{"type":"string"},"resolution":{"type":"string"},"aspectRatio":{"type":"string"},"quality":{"type":"string"},"imageSize":{"type":"string"},"imageUrls":{"type":"array","items":{"type":"string","format":"uri"}}}}}}},"responses":{"200":{"description":"Queued image generation job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/generate-video":{"post":{"summary":"Generate a video","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"additionalProperties":true,"properties":{"prompt":{"type":"string"},"modelSlug":{"type":"string"},"variantId":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"duration":{"type":"string"},"resolution":{"type":"string"},"aspectRatio":{"type":"string"},"generateAudio":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Queued video generation job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"400":{"description":"Invalid request body or unsupported settings"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Insufficient credits"},"403":{"description":"Plan does not include the required feature"}}}},"/api/upload-reference-media":{"post":{"summary":"Upload reference media for generation","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","type"],"properties":{"file":{"type":"string","format":"binary"},"type":{"type":"string","enum":["image","video","audio"]}}}}}},"responses":{"200":{"description":"Uploaded media URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key"}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Restory API key","description":"Use `Authorization: Bearer rst_...`. API keys are created at /agent and require Pro or Ultra."}}},"x-restory":{"capabilitiesUrl":"https://www.restory.pics/api/agent/capabilities","docsUrl":"https://www.restory.pics/agent/docs","manageKeysUrl":"https://www.restory.pics/agent"}}