{"openapi":"3.1.0","info":{"title":"Createya Public API","version":"0.2.0","description":"Pass-through universal API for AI generation. Send `{ model, input }` where `input` matches the model's `parameters_schema` (see /v1/models)."},"servers":[{"url":"http://kong:8000/functions/v1/api-gateway","description":"Createya Public API"}],"security":[{"BearerAuth":[]}],"paths":{"/healthz":{"get":{"summary":"Liveness","security":[],"responses":{"200":{"description":"OK"}}}},"/v1/balance":{"get":{"summary":"Credits balance","responses":{"200":{"description":"{ object:\"balance\", credits_balance:N }"}}}},"/v1/models":{"get":{"summary":"List public model families (each with endpoints, parameters_schema, pricing)","description":"Returns family-grouped catalog. Each `data[]` item is a `model_family` containing one or more `endpoints` (text-to-image / image-to-image / etc.). Pass the family `id` to POST /v1/run — server picks the matching endpoint by input shape (image_url present → image-to-* mode, prompt only → text-to-* mode). Same shape as MCP tool `list_models`.","responses":{"200":{"description":"Family-grouped catalog","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Family slug — pass as `model` to /v1/run."},"object":{"type":"string","enum":["model_family"]},"name":{"type":"string"},"output_type":{"type":"string","enum":["image","video","audio","text"]},"status":{"type":"string","enum":["public","test","mixed"]},"credits_range":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}}},"endpoints":{"type":"array","items":{"type":"object"}}}}}}}}}}}}},"/v1/run":{"post":{"summary":"Run a model (pass-through)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","input"],"properties":{"model":{"type":"string","enum":["higgsfield-soul-i2i","grok-imagine-t2i","seedance-2-fast","grok-imagine-i2i","ideogram-v3-t2i","flux-2-pro-i2i","gpt-image-2-i2i","flux-kontext-pro-t2i","flux-kontext-pro-i2i","imagen-4-ultra-t2i","midjourney-t2i","kling-video-v3-pro-i2v","nano-banana-pro-t2i","seedream-v5-lite-t2i","recraft-v3-t2i","recraft-v3-i2i","happy-horse-t2v","nano-banana-pro-i2i","kling-video-o3-pro-i2v","seedance-2","hailuo-2.3-pro-i2v","veo-3.1-fast-t2v","flux-2-pro-t2i","kling-video-v3-pro-t2v","kling-video-o3-pro-t2v","kling-image-o3-t2i","gpt-image-2-t2i","veo-3.1-t2v","kling-image-o3-i2i","sora-2-t2v","sora-2-i2v","runway-gen4-t2i"]},"input":{"type":"object","description":"Model-specific input. See /v1/models for per-model parameters_schema."},"webhook_url":{"type":"string","format":"uri","description":"Optional push URL for async completion."},"metadata":{"type":"object"}}}}}},"responses":{"200":{"description":"Completed sync run"},"202":{"description":"Queued async run"},"400":{"description":"Invalid request"},"402":{"description":"Insufficient credits"},"404":{"description":"Model not found or not public"}}}},"/v1/runs/{id}":{"get":{"summary":"Get run status","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Run status + output"},"404":{"description":"Not found"}}}},"/v1/uploads":{"post":{"summary":"Inline multipart upload (≤25 MB)","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Binary content. Use Content-Type from the part."},"folder_path":{"type":"string","description":"Optional logical folder hint, e.g. 'session/abc'."}}}}}},"responses":{"200":{"description":"{ object:\"upload\", url, size_bytes, mime_type, filename, will_delete_at }"},"400":{"description":"Invalid multipart / unsupported mime"},"413":{"description":"File exceeds 25 MB. Use /v1/uploads/presigned."}}}},"/v1/uploads/presigned":{"post":{"summary":"Get a presigned PUT URL for direct upload to Yandex S3 (≤50 MB)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["filename","mime_type"],"properties":{"filename":{"type":"string"},"mime_type":{"type":"string"},"size_bytes":{"type":"integer"},"folder_path":{"type":"string"}}}}}},"responses":{"200":{"description":"{ presigned_url, cdn_url, method:\"PUT\", expires_at, will_delete_at, max_size_bytes }"}}}},"/mcp":{"post":{"summary":"MCP JSON-RPC 2.0 endpoint"}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key: crya_sk_<hex>"}}}}