{"openapi":"3.1.0","info":{"title":"AgentRender API","description":"Agent-native URL → screenshot/PDF/extract render API.\n\n**Auth:** `Authorization: Bearer <key>` or `X-API-Key: <key>`.\n\n**Idempotency:** pass `Idempotency-Key` on mutating renders (echoed in receipt; full replay cache is post-MVP).\n\n**Errors:** always JSON `{ ok: false, error: { code, message, details? } }`.","version":"0.1.0"},"paths":{"/v1/account":{"get":{"tags":["account"],"summary":"Get Account","operationId":"get_account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/stripe/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","operationId":"stripe_webhook_v1_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/screenshot":{"post":{"tags":["render"],"summary":"Capture a URL as PNG/JPEG/WebP","operationId":"screenshot_v1_screenshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotRequest"}}},"required":true},"responses":{"200":{"description":"Image binary (default) or JSON envelope if Accept: application/json","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid / private URL"},"401":{"description":"Missing/invalid API key"},"429":{"description":"Rate limited"},"502":{"description":"Render failed"},"504":{"description":"Timeout"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pdf":{"post":{"tags":["render"],"summary":"Capture a URL as PDF","operationId":"pdf_v1_pdf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfRequest"}}},"required":true},"responses":{"200":{"description":"PDF binary (default) or JSON envelope if Accept: application/json","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid / private URL"},"401":{"description":"Missing/invalid API key"},"429":{"description":"Rate limited"},"502":{"description":"Render failed"},"504":{"description":"Timeout"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/extract":{"post":{"tags":["extract"],"summary":"Extract title, meta, main text, and links from a URL (non-LLM)","operationId":"extract_v1_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractRequest"}}},"required":true},"responses":{"200":{"description":"Structured extract JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractResponse"}}}},"400":{"description":"Invalid / private URL"},"401":{"description":"Missing/invalid API key"},"429":{"description":"Rate limited"},"502":{"description":"Extract failed"},"504":{"description":"Timeout"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/waitlist":{"post":{"tags":["waitlist"],"summary":"Join the waitlist (public; stores email locally as JSONL)","operationId":"waitlist_join_v1_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistRequest"}}},"required":true},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistResponse"}}}},"422":{"description":"Validation error (e.g. invalid email)"}}}},"/v1/waitlist/count":{"get":{"tags":["waitlist"],"summary":"Waitlist signup count (no emails leaked)","operationId":"waitlist_count_v1_waitlist_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistCountResponse"}}}}}}}},"components":{"schemas":{"AccountResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"plan":{"type":"string","title":"Plan"},"monthly_quota":{"type":"integer","title":"Monthly Quota"},"rpm_limit":{"type":"integer","title":"Rpm Limit"},"quota_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Remaining"},"status":{"type":"string","title":"Status","default":"active"}},"type":"object","required":["plan","monthly_quota","rpm_limit"],"title":"AccountResponse"},"ExtractLink":{"properties":{"href":{"type":"string","title":"Href"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"}},"type":"object","required":["href"],"title":"ExtractLink"},"ExtractRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Public http(s) URL to extract"},"include_links":{"type":"boolean","title":"Include Links","default":true},"max_text_chars":{"type":"integer","maximum":200000.0,"minimum":50.0,"title":"Max Text Chars","default":20000},"timeout_ms":{"type":"integer","maximum":120000.0,"minimum":1000.0,"title":"Timeout Ms","default":30000}},"type":"object","required":["url"],"title":"ExtractRequest"},"ExtractResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"text":{"type":"string","title":"Text","default":""},"links":{"items":{"$ref":"#/components/schemas/ExtractLink"},"type":"array","title":"Links"},"receipt":{"$ref":"#/components/schemas/Receipt"}},"type":"object","required":["receipt"],"title":"ExtractResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"version":{"type":"string","title":"Version"},"render_backend":{"type":"string","enum":["playwright","stub"],"title":"Render Backend"}},"type":"object","required":["version","render_backend"],"title":"HealthResponse"},"ImageFormat":{"type":"string","enum":["png","jpeg","webp"],"title":"ImageFormat"},"PdfRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Public http(s) URL to print as PDF"},"print_background":{"type":"boolean","title":"Print Background","default":true},"landscape":{"type":"boolean","title":"Landscape","default":false},"timeout_ms":{"type":"integer","maximum":120000.0,"minimum":1000.0,"title":"Timeout Ms","default":45000}},"type":"object","required":["url"],"title":"PdfRequest"},"Receipt":{"properties":{"render_id":{"type":"string","title":"Render Id"},"url":{"type":"string","title":"Url"},"final_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Final Url"},"captured_at":{"type":"string","format":"date-time","title":"Captured At"},"viewport":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Viewport"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"},"bytes":{"type":"integer","title":"Bytes"},"sha256":{"type":"string","title":"Sha256"},"mode":{"type":"string","enum":["playwright","stub"],"title":"Mode","default":"playwright"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"}},"type":"object","required":["render_id","url","captured_at","bytes","sha256"],"title":"Receipt"},"ScreenshotRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Public http(s) URL to capture"},"format":{"$ref":"#/components/schemas/ImageFormat","default":"png"},"full_page":{"type":"boolean","title":"Full Page","default":false},"viewport":{"$ref":"#/components/schemas/Viewport"},"wait_until":{"$ref":"#/components/schemas/WaitUntil","default":"load"},"timeout_ms":{"type":"integer","maximum":120000.0,"minimum":1000.0,"title":"Timeout Ms","default":30000},"block_cookie_banners":{"type":"boolean","title":"Block Cookie Banners","default":false}},"type":"object","required":["url"],"title":"ScreenshotRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Viewport":{"properties":{"width":{"type":"integer","maximum":3840.0,"minimum":320.0,"title":"Width","default":1280},"height":{"type":"integer","maximum":2160.0,"minimum":240.0,"title":"Height","default":720},"device_scale_factor":{"type":"number","maximum":3.0,"minimum":0.5,"title":"Device Scale Factor","default":1.0}},"type":"object","title":"Viewport"},"WaitUntil":{"type":"string","enum":["load","domcontentloaded","networkidle"],"title":"WaitUntil"},"WaitlistCountResponse":{"properties":{"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"WaitlistCountResponse"},"WaitlistRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Waitlist email address"},"use_case":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Case","description":"agents | saas | automation | other"},"plan_interest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Interest","description":"free | starter | growth | scale"},"expected_renders":{"anyOf":[{"type":"integer","maximum":10000000.0,"minimum":0.0},{"type":"null"}],"title":"Expected Renders"},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Notes"},"mcp_notify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mcp Notify"}},"type":"object","required":["email"],"title":"WaitlistRequest"},"WaitlistResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"WaitlistResponse"}}}}