{"openapi":"3.1.0","info":{"title":"ForgeKit API","version":"1.0.0","description":"Developer utility APIs for screenshots, PDFs, OG images, QR codes, link previews, and JSON validation."},"servers":[{"url":"https://useforgekit.dev/api/v1"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key (fk_live_... or pk_live_... for embeds)"}},"schemas":{"QuotaExceeded":{"type":"object","properties":{"code":{"type":"string","example":"QUOTA_EXCEEDED"},"usagePercent":{"type":"integer"},"upgradeUrl":{"type":"string"}}},"JobCreated":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["pending","processing"]},"poll":{"type":"string"}}},"QrRequest":{"type":"object","required":["data"],"properties":{"data":{"type":"string"},"size":{"type":"integer","default":256},"format":{"type":"string","enum":["png","svg"]}}},"OgRequest":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"template":{"type":"string","enum":["default","gradient","minimal"]}}}}},"paths":{"/screenshot":{"post":{"summary":"Capture screenshot (async)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"}}}}}},"responses":{"202":{"description":"Job created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreated"}}}},"429":{"description":"Quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaExceeded"}}}}}}},"/pdf":{"post":{"summary":"Generate PDF (async)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"html":{"type":"string"}}}}}},"responses":{"202":{"description":"Job created"},"429":{"description":"Quota exceeded"}}}},"/og":{"get":{"summary":"Generate OG image","parameters":[{"name":"title","in":"query","schema":{"type":"string"}},{"name":"description","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"PNG image"}}},"post":{"summary":"Generate OG image","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OgRequest"}}}},"responses":{"200":{"description":"PNG image"}}}},"/qr":{"get":{"summary":"Generate QR code","parameters":[{"name":"data","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PNG or SVG"}}},"post":{"summary":"Generate QR code","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrRequest"}}}},"responses":{"200":{"description":"PNG or SVG"}}}},"/link-preview":{"get":{"summary":"Extract link metadata"},"post":{"summary":"Extract link metadata"}},"/json/validate":{"post":{"summary":"Validate JSON against schema"}},"/jobs/{id}":{"get":{"summary":"Poll async job status"}},"/results":{"post":{"summary":"Create shareable playground result URL"}}}}