{"openapi":"3.1.0","info":{"title":"Reelora Public API","description":"Image and video generation API.","version":"1.0.0"},"paths":{"/v1/models":{"get":{"tags":["v1"],"summary":"V1 Models","description":"Публічний довідник моделей. Без ключа (але з лімітом по IP).","operationId":"v1_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/account":{"get":{"tags":["v1"],"summary":"V1 Account","operationId":"v1_account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/images/generations":{"post":{"tags":["v1"],"summary":"V1 Images","description":"Текст→фото, або генерація по референсах (до 3 зображень).","operationId":"v1_images_v1_images_generations_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/videos/generations":{"post":{"tags":["v1"],"summary":"V1 Videos","description":"Текст→відео, фото→відео (стартовий кадр) або ланцюг переходів між кадрами.","operationId":"v1_videos_v1_videos_generations_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generations":{"get":{"tags":["v1"],"summary":"V1 List","operationId":"v1_list_v1_generations_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"type":"string","default":"","title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generations/{gen_id}":{"get":{"tags":["v1"],"summary":"V1 Get","operationId":"v1_get_v1_generations__gen_id__get","parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["v1"],"summary":"V1 Delete","description":"Видалити одну генерацію разом із файлом. Незворотно.","operationId":"v1_delete_v1_generations__gen_id__delete","parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generations/{gen_id}/cancel":{"post":{"tags":["v1"],"summary":"V1 Cancel","description":"Скасовує лише те, що ще стоїть у черзі: подане в провайдера скасувати\nнеможливо (там уже витрачені гроші).","operationId":"v1_cancel_v1_generations__gen_id__cancel_post","parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/generations/delete":{"post":{"tags":["v1"],"summary":"V1 Delete Batch","description":"Пакетне прибирання. Два способи, взаємовиключні:\n\n    {\"ids\": [\"gen_...\", \"gen_...\"]}   — прибрати саме ці;\n    {\"older_than_days\": 7}            — прибрати все, старше за N днів.\n\nДругий — те, чим інтеграція чистить за собою за розкладом: забрав файли,\nраз на добу знявся хвіст. Повертає, скільки насправді видалено.","operationId":"v1_delete_batch_v1_generations_delete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files":{"post":{"tags":["v1"],"summary":"V1 Upload","description":"Завантаження референсного файлу сирим тілом.\n\nЗа замовчуванням це зображення; `?kind=video` або `?kind=audio` заливають\nвідео-джерело (для відео→відео) чи аудіо-референс — їх приймають не всі\nмоделі, перелік у GET /v1/models. Сам тип файлу однаково перевіряється\nmagic-bytes: заголовку Content-Type не віримо.","operationId":"v1_upload_v1_files_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/files/{file_id}/content":{"get":{"tags":["v1"],"summary":"V1 File Content","description":"Віддача файлу: або підписаним посиланням (u+exp+sig), або Bearer-ключем.\nПідписані посилання дають змогу віддати результат прямо в браузер/CDN.","operationId":"v1_file_content_v1_files__file_id__content_get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"u","in":"query","required":false,"schema":{"type":"string","default":"","title":"U"}},{"name":"exp","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Exp"}},{"name":"sig","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sig"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"file","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}