{"openapi":"3.1.0","info":{"title":"ShaderWeave API","version":"0.4.0","description":"Deterministic graphics, durable exports, customer workspaces and Stripe billing. Direct API access uses a bearer key; browser accounts use HTTP-only sessions. All hosted renders reserve credits. Auth endpoints under /v1/auth are provided by Better Auth."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"__Secure-shaderweave.session_token","description":"Secure HTTP-only customer session. Mutations also require the matching Origin header."},"stripeSignature":{"type":"apiKey","in":"header","name":"Stripe-Signature","description":"Stripe signature over the unmodified request body."}},"schemas":{},"parameters":{}},"paths":{"/v1/health":{"get":{"tags":["system"],"summary":"Liveness and versions","security":[],"responses":{"200":{"description":"Liveness and versions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"engineVersion":{"type":"string"},"rendererVersion":{"type":"string"},"generators":{"type":"integer"},"revision":{"type":"string"}},"required":["ok","engineVersion","rendererVersion","generators","revision"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/ready":{"get":{"tags":["system"],"summary":"Database and FFmpeg readiness","security":[],"responses":{"200":{"description":"Database and FFmpeg readiness","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"database":{"type":"boolean"},"ffmpeg":{"type":"boolean"},"engineVersion":{"type":"string"},"rendererVersion":{"type":"string"}},"required":["ok","database","ffmpeg","engineVersion","rendererVersion"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/generators":{"get":{"tags":["generators"],"summary":"All generators, defaults and parameter schemas","security":[],"responses":{"200":{"description":"All generators, defaults and parameter schemas","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"},"animated":{"type":"boolean"},"formats":{"type":"array","items":{"type":"string"}},"defaults":{"nullable":true},"paramSchema":{"nullable":true}},"required":["slug","name","version","animated","formats"]}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/generate/{slug}":{"post":{"tags":["render"],"summary":"Synchronous render, including animation","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"nullable":true}},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"webhookUrl":{"type":"string","format":"uri"}}}}}},"responses":{"200":{"description":"Synchronous render, including animation","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/render/{recipeHash}":{"get":{"tags":["render"],"summary":"Render an encoded recipe with optional w, h, pr and format","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"recipeHash","in":"path"},{"schema":{"type":"string"},"required":true,"name":"r","in":"query"},{"schema":{"type":"string"},"required":false,"name":"format","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"w","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"h","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"pr","in":"query"}],"responses":{"200":{"description":"Render an encoded recipe with optional w, h, pr and format","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/batch":{"post":{"tags":["render"],"summary":"Render up to 50 items with per-item results","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"nullable":true},"minItems":1,"maxItems":50}},"required":["items"]}}}},"responses":{"200":{"description":"Render up to 50 items with per-item results","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"ok":{"type":"boolean"},"hash":{"type":"string"},"bytes":{"type":"integer"},"error":{"type":"string"}},"required":["index","ok"]}}},"required":["count","results"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/jobs":{"post":{"tags":["jobs"],"summary":"Queue a durable export","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"nullable":true}},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"webhookUrl":{"type":"string","format":"uri"},"slug":{"type":"string"},"generator":{"type":"string"}}}}}},"responses":{"202":{"description":"Queue a durable export","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"progress":{"type":"number","minimum":0,"maximum":1},"attempts":{"type":"integer"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"cancelled":{"type":"boolean"},"resultReady":{"type":"boolean"},"error":{"type":"string"},"contentType":{"type":"string"},"resultUrl":{"type":"string"}},"required":["id","slug","status","progress","attempts","createdAt","updatedAt","cancelled","resultReady"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}},"get":{"tags":["jobs"],"summary":"List export history with progress","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"List export history with progress","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"progress":{"type":"number","minimum":0,"maximum":1},"attempts":{"type":"integer"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"cancelled":{"type":"boolean"},"resultReady":{"type":"boolean"},"error":{"type":"string"},"contentType":{"type":"string"},"resultUrl":{"type":"string"}},"required":["id","slug","status","progress","attempts","createdAt","updatedAt","cancelled","resultReady"]}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/jobs/{id}":{"get":{"tags":["jobs"],"summary":"Get export progress and result availability","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get export progress and result availability","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"progress":{"type":"number","minimum":0,"maximum":1},"attempts":{"type":"integer"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"cancelled":{"type":"boolean"},"resultReady":{"type":"boolean"},"error":{"type":"string"},"contentType":{"type":"string"},"resultUrl":{"type":"string"}},"required":["id","slug","status","progress","attempts","createdAt","updatedAt","cancelled","resultReady"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/jobs/{id}/cancel":{"post":{"tags":["jobs"],"summary":"Cancel a queued or running export","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Cancel a queued or running export","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"progress":{"type":"number","minimum":0,"maximum":1},"attempts":{"type":"integer"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"cancelled":{"type":"boolean"},"resultReady":{"type":"boolean"},"error":{"type":"string"},"contentType":{"type":"string"},"resultUrl":{"type":"string"}},"required":["id","slug","status","progress","attempts","createdAt","updatedAt","cancelled","resultReady"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/jobs/{id}/result":{"get":{"tags":["jobs"],"summary":"Download completed export; 410 if file is missing","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Download completed export; 410 if file is missing","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/jobs/{id}/preview":{"get":{"tags":["jobs"],"summary":"Owned raster preview as WebP, up to 768px; GIF first frame; 415 for other formats","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Owned raster preview as WebP, up to 768px; GIF first frame; 415 for other formats","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/presets":{"get":{"tags":["presets"],"summary":"List saved presets and export settings","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"List saved presets and export settings","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]},"id":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","generator","id","userId","createdAt"]}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}},"post":{"tags":["presets"],"summary":"Save a validated preset","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]}},"required":["name","generator"]}}}},"responses":{"201":{"description":"Save a validated preset","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]},"id":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","generator","id","userId","createdAt"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/presets/{id}":{"get":{"tags":["presets"],"summary":"Get a preset","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get a preset","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]},"id":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","generator","id","userId","createdAt"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}},"patch":{"tags":["presets"],"summary":"Update a preset or export settings","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]}}}}}},"responses":{"200":{"description":"Update a preset or export settings","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"generator":{"type":"string","minLength":1},"params":{"type":"object","additionalProperties":{"nullable":true},"default":{}},"seed":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"mode":{"type":"string","enum":["image","video"]},"id":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","generator","id","userId","createdAt"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}},"delete":{"tags":["presets"],"summary":"Delete a preset","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete a preset"},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/keys":{"get":{"tags":["keys"],"summary":"List key metadata, never plaintext","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"List key metadata, never plaintext","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"prefix":{"type":"string"},"createdAt":{"type":"string"},"revokedAt":{"type":"string"}},"required":["id","label","prefix","createdAt"]}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}},"post":{"tags":["keys"],"summary":"Create an API key, returned once","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100}},"required":["label"]}}}},"responses":{"201":{"description":"Create an API key, returned once","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"prefix":{"type":"string"},"createdAt":{"type":"string"},"revokedAt":{"type":"string"},"key":{"type":"string"},"note":{"type":"string"}},"required":["id","label","prefix","createdAt","key","note"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/keys/{id}":{"delete":{"tags":["keys"],"summary":"Revoke an API key immediately","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Revoke an API key immediately"},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/usage":{"get":{"tags":["account"],"summary":"Daily usage across your keys","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Daily usage across your keys","content":{"application/json":{"schema":{"type":"object","properties":{"keyId":{"type":"string"},"usage":{"type":"array","items":{"type":"object","properties":{"keyId":{"type":"string"},"day":{"type":"string"},"stills":{"type":"integer"},"animations":{"type":"integer"}},"required":["keyId","day","stills","animations"]}}},"required":["keyId","usage"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/auth-config":{"get":{"tags":["account"],"summary":"Available Google/GitHub sign-in providers and current session","security":[],"responses":{"200":{"description":"Available Google/GitHub sign-in providers and current session","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"nullable":true}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/me":{"get":{"tags":["account"],"summary":"Current workspace owner","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Current workspace owner","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"nullable":true}}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/billing":{"get":{"tags":["billing"],"summary":"Credit balance, subscription and recent ledger activity","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"responses":{"200":{"description":"Credit balance, subscription and recent ledger activity","content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["free","maker","pro"]},"status":{"type":"string"},"periodEnd":{"type":"string","nullable":true},"cancelAtPeriodEnd":{"type":"boolean"},"available":{"type":"integer"},"reserved":{"type":"integer"},"consumed":{"type":"integer"},"localPreview":{"type":"boolean"},"checkoutReady":{"type":"boolean"},"portalReady":{"type":"boolean"},"mode":{"type":"string","enum":["test","live"]},"grants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"amount":{"type":"integer"},"remaining":{"type":"integer"},"expiresAt":{"type":"string","nullable":true},"kind":{"type":"string"}},"required":["id","amount","remaining","expiresAt","kind"]}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"delta":{"type":"integer"},"kind":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","delta","kind","createdAt"]}}},"required":["plan","status","periodEnd","cancelAtPeriodEnd","available","reserved","consumed","localPreview","checkoutReady","portalReady","mode","grants","activity"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/billing/estimate":{"post":{"tags":["billing"],"summary":"Validate an export and calculate its credit cost without rendering","security":[{"bearerAuth":[]},{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"nullable":true}},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":4096},"height":{"type":"integer","minimum":16,"maximum":4096},"pixelRatio":{"type":"number","minimum":0.5,"maximum":3,"default":1}},"required":["width","height"]},"format":{"type":"string","enum":["png","webp","gif","mp4","svg","css"]},"webhookUrl":{"type":"string","format":"uri"},"slug":{"type":"string"},"generator":{"type":"string"}}}}}},"responses":{"200":{"description":"Validate an export and calculate its credit cost without rendering","content":{"application/json":{"schema":{"type":"object","properties":{"credits":{"type":"integer"},"width":{"type":"integer"},"height":{"type":"integer"},"seconds":{"type":"number"},"pricingVersion":{"type":"string"}},"required":["credits","width","height","seconds","pricingVersion"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/billing/checkout":{"post":{"tags":["billing"],"summary":"Create or resume hosted checkout; customer session required","security":[{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"product":{"type":"string","enum":["maker","pro","credits"]}},"required":["product"]}}}},"responses":{"200":{"description":"Create or resume hosted checkout; customer session required","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/billing/portal":{"post":{"tags":["billing"],"summary":"Open the current customer’s Stripe portal; session required","security":[{"sessionCookie":[]}],"responses":{"200":{"description":"Open the current customer’s Stripe portal; session required","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}},"/v1/billing/webhook":{"post":{"tags":["billing"],"summary":"Receive a Stripe event signed against the raw JSON body","security":[{"stripeSignature":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"livemode":{"type":"boolean"},"data":{"type":"object","properties":{"object":{"type":"object","additionalProperties":{"nullable":true}}},"required":["object"]}},"required":["id","type","livemode","data"]}}}},"responses":{"200":{"description":"Receive a Stripe event signed against the raw JSON body","content":{"application/json":{"schema":{"type":"object","properties":{"received":{"type":"boolean"}},"required":["received"]}}}},"400":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"401":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"402":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"403":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"404":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"409":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"410":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"413":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"429":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"499":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"500":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"502":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"503":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}},"504":{"description":"Structured API error; inspect code and title.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"issues":{"type":"array","items":{"nullable":true}}},"required":["type","status","code","title"]}}}}}}}}}