{"openapi":"3.1.0","info":{"title":"CaptureKit API Reference","description":"Complete API reference documentation.","version":"1.0.0"},"servers":[{"url":"https://api.capturekit.dev","description":"API Server"}],"paths":{"/v1/stats":{"get":{"summary":"Stats","description":"Infrastructure health for an engine or endpoint over the last hour. Not scoped to your account or tenant. Enabled per account: HTTP 403 means contact support to activate it.","operationId":"stats","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"engine","in":"query","required":false,"description":"API family to check, for example `capture`. Provide at least `engine` or `path`.","schema":{"type":"string","description":"API family to check, for example `capture`. Provide at least `engine` or `path`."}},{"name":"path","in":"query","required":false,"description":"Specific endpoint to check, for example `/v1/capture`. If you also pass `engine`, use an endpoint from that API.","schema":{"type":"string","description":"Specific endpoint to check, for example `/v1/capture`. If you also pass `engine`, use an endpoint from that API."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"path":{"nullable":true},"engine":{"type":"string"},"health":{"type":"string"},"window":{"type":"string"},"success_rate":{"type":"number"},"avg_response_time_ms":{"type":"integer"}}},"examples":{"Engine health snapshot":{"value":{"path":null,"engine":"capture","health":"operational","window":"1h","success_rate":99.412,"avg_response_time_ms":840}},"Path health snapshot":{"value":{"path":"/v1/capture","engine":"capture","health":"operational","window":"1h","success_rate":99.412,"avg_response_time_ms":840}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}},"/v1/usage":{"get":{"summary":"Usage","description":"Retrieve real-time usage statistics and credit balance for your CaptureKit account.","operationId":"usage","security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"packs":{"nullable":true},"period":{"type":"object","properties":{"end":{"type":"string"},"start":{"type":"string"}}},"account":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}}},"api_key":{"type":"object","properties":{"alias":{"type":"string"},"active":{"type":"boolean"},"quotas":{"type":"object","properties":{"daily":{"nullable":true},"total":{"nullable":true},"weekly":{"nullable":true},"monthly":{"nullable":true}}},"expires":{"nullable":true},"category":{"type":"string"}}},"credits":{"type":"object","properties":{"given":{"type":"integer"},"consumed":{"type":"integer"},"remaining":{"type":"integer"},"percent_used":{"type":"integer"}}},"remaining":{"type":"integer"},"rate_limit":{"type":"object","properties":{"per_minute":{"nullable":true},"per_second":{"nullable":true}}},"total_used":{"type":"integer"},"renewal_date":{"type":"string"},"subscription":{"type":"object","properties":{"used":{"type":"integer"},"total":{"type":"integer"},"remaining":{"type":"integer"},"percent_used":{"type":"integer"}}}}},"examples":{"Account usage overview":{"value":{"packs":null,"period":{"end":"2026-04-25","start":"2026-03-25"},"account":{"name":"Microsoft","slug":"microsoft"},"api_key":{"alias":"my-api-key","active":true,"quotas":{"daily":null,"total":null,"weekly":null,"monthly":null},"expires":null,"category":"development"},"credits":{"given":0,"consumed":0,"remaining":0,"percent_used":0},"remaining":0,"rate_limit":{"per_minute":null,"per_second":null},"total_used":15871,"renewal_date":"2026-04-25","subscription":{"used":15871,"total":50,"remaining":0,"percent_used":31742}}},"Account with one-time packs":{"value":{"packs":{"used":15200000,"count":2,"items":[{"id":"cmhtn…","used":12500000,"title":"Ultimate","total":12500000,"exhausted":true,"remaining":0,"percent_used":100,"purchased_at":"2025-11-10"},{"id":"cmlc9…","used":2700000,"title":"Ultimate","total":12500000,"exhausted":false,"remaining":9800000,"percent_used":21.6,"purchased_at":"2026-02-07"}],"total":25000000,"current":{"id":"cmlc9…","used":2700000,"title":"Ultimate","total":12500000,"exhausted":false,"remaining":9800000,"percent_used":21.6,"purchased_at":"2026-02-07"},"remaining":9800000,"percent_used":60.8,"all_exhausted":false,"current_index":2,"exhausted_count":1},"period":{"end":"2026-10-01","start":"2026-09-01"},"account":{"name":"Microsoft","slug":"microsoft"},"api_key":{"alias":"my-api-key","active":true,"quotas":{"daily":null,"total":null,"weekly":null,"monthly":null},"expires":null,"category":"development"},"credits":{"given":0,"consumed":0,"remaining":0,"percent_used":0},"remaining":9800000,"rate_limit":{"per_minute":null,"per_second":null},"total_used":15200000,"renewal_date":"2026-10-01","subscription":{"used":15200000,"total":25000000,"remaining":9800000,"percent_used":60.8}}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}},"/v1/website/crawler":{"get":{"summary":"Website Crawler","description":"Website Crawler API fetches raw HTML from any webpage in request mode (no rendering) for fast scraping, audits, monitoring, and link/metadata extraction.\n\n**Credit cost:** 1 credit per call","operationId":"get-website-crawler","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"query","in":"query","required":true,"description":"A website URL with either the http or https protocol.","schema":{"type":"string","description":"A website URL with either the http or https protocol."}},{"name":" allow_redirects","in":"query","required":false,"description":"If set to `false`, do not follow redirects.","schema":{"type":"boolean","default":"true","description":"If set to `false`, do not follow redirects."}},{"name":"return_page_source","in":"query","required":false,"description":"If set to `true`, the response will be the HTML source of the page.","schema":{"type":"boolean","default":"false","description":"If set to `true`, the response will be the HTML source of the page."}}],"responses":{"200":{"description":"Successful response"},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}},"post":{"summary":"Website Crawler","description":"Website Crawler API fetches raw HTML from any webpage in request mode (no rendering) for fast scraping, audits, monitoring, and link/metadata extraction.\n\n**Credit cost:** 1 credit per call","operationId":"post-website-crawler","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"query","in":"query","required":true,"description":"A website URL with either the http or https protocol.","schema":{"type":"string","description":"A website URL with either the http or https protocol."}},{"name":" allow_redirects","in":"query","required":false,"description":"If set to `false`, do not follow redirects.","schema":{"type":"boolean","default":"true","description":"If set to `false`, do not follow redirects."}},{"name":"return_page_source","in":"query","required":false,"description":"If set to `true`, the response will be the HTML source of the page.","schema":{"type":"boolean","default":"false","description":"If set to `true`, the response will be the HTML source of the page."}}],"responses":{"200":{"description":"Successful response"},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}},"/v1/analyze":{"get":{"summary":"Analyze (AI)","description":"AI Content API analyzes any webpage and returns AI insights summary, value proposition, features, categories, use cases, and optional contact signals.\n\n**Credit cost:** 1 credit per call","operationId":"get-analyze","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture.","schema":{"type":"string","description":"The URL of the webpage to capture."}},{"name":"custom_response","in":"query","required":false,"description":"Pass custom response fields to be included in the AI response. \n\nThis can be provided in two ways: As a JSON object in the request body As a JSON stringified object in the query parameters\n\nExample:\n```\n{\n\t\"sentiment\": \"sentiment\",\n    \"language\": \"language\"\n}\n```","schema":{"type":"string","description":"Pass custom response fields to be included in the AI response. \n\nThis can be provided in two ways: As a JSON object in the request body As a JSON stringified object in the query parameters\n\nExample:\n```\n{\n\t\"sentiment\": \"sentiment\",\n    \"language\": \"language\"\n}\n```"}},{"name":"custom_prompt","in":"query","required":false,"description":"Add your own instructions to guide the AI’s analysis.","schema":{"type":"string","description":"Add your own instructions to guide the AI’s analysis."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"useCases":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"keyFeatures":{"type":"array","items":{"type":"string"}},"phoneNumbers":{"type":"array","items":{"type":"string"}},"targetAudience":{"type":"string"},"valueProposition":{"type":"string"}}},"success":{"type":"boolean"}}},"examples":{"Example":{"value":{"data":{"emails":["admin@company.com"],"summary":"Tailwind CSS is a utility-first CSS framework for modern web design.","useCases":["Building websites","Customizing themes","Managing CSS specificity"],"categories":["Web Development","CSS Frameworks","Frontend Development","Responsive Design"],"keyFeatures":["Responsive design","Dark mode","Animations","Grid layout"],"phoneNumbers":["+13322767084"],"targetAudience":"Web developers and designers.","valueProposition":"A flexible CSS framework packed with utility classes."},"success":true}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}},"post":{"summary":"Analyze (AI)","description":"AI Content API analyzes any webpage and returns AI insights summary, value proposition, features, categories, use cases, and optional contact signals.\n\n**Credit cost:** 1 credit per call","operationId":"post-analyze","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture.","schema":{"type":"string","description":"The URL of the webpage to capture."}},{"name":"custom_response","in":"query","required":false,"description":"Pass custom response fields to be included in the AI response. \n\nThis can be provided in two ways: As a JSON object in the request body As a JSON stringified object in the query parameters\n\nExample:\n```\n{\n\t\"sentiment\": \"sentiment\",\n    \"language\": \"language\"\n}\n```","schema":{"type":"string","description":"Pass custom response fields to be included in the AI response. \n\nThis can be provided in two ways: As a JSON object in the request body As a JSON stringified object in the query parameters\n\nExample:\n```\n{\n\t\"sentiment\": \"sentiment\",\n    \"language\": \"language\"\n}\n```"}},{"name":"custom_prompt","in":"query","required":false,"description":"Add your own instructions to guide the AI’s analysis.","schema":{"type":"string","description":"Add your own instructions to guide the AI’s analysis."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"useCases":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"keyFeatures":{"type":"array","items":{"type":"string"}},"phoneNumbers":{"type":"array","items":{"type":"string"}},"targetAudience":{"type":"string"},"valueProposition":{"type":"string"}}},"success":{"type":"boolean"}}},"examples":{"Example":{"value":{"data":{"emails":["admin@company.com"],"summary":"Tailwind CSS is a utility-first CSS framework for modern web design.","useCases":["Building websites","Customizing themes","Managing CSS specificity"],"categories":["Web Development","CSS Frameworks","Frontend Development","Responsive Design"],"keyFeatures":["Responsive design","Dark mode","Animations","Grid layout"],"phoneNumbers":["+13322767084"],"targetAudience":"Web developers and designers.","valueProposition":"A flexible CSS framework packed with utility classes."},"success":true}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}},"/v1/content":{"get":{"summary":"Content","description":"CaptureKit Content API extracts structured webpage data, metadata, links, HTML/Markdown: in one request for SEO, monitoring, indexing and automation.\n\n**Credit cost:** 1 credit per call","operationId":"get-content","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture.","schema":{"type":"string","description":"The URL of the webpage to capture."}},{"name":"include_html","in":"query","required":false,"description":"Include the raw HTML of the webpage in the response.","schema":{"type":"boolean","default":"false","description":"Include the raw HTML of the webpage in the response."}},{"name":"include_markdown","in":"query","required":false,"description":"Include the Markdown of the webpage in the response.","schema":{"type":"boolean","default":"false","description":"Include the Markdown of the webpage in the response."}},{"name":"include_sitemap","in":"query","required":false,"description":"Include the sitemap of the website in the response.","schema":{"type":"boolean","default":"false","description":"Include the sitemap of the website in the response."}},{"name":"use_defuddle","in":"query","required":false,"description":"Use Defuddle to clean and extract the main content from web pages. \nThis popular library removes unnecessary elements like comments, sidebars, headers, footers, and other non-essential elements, leaving only the primary content. \nWhen enabled, the HTML response will be processed through Defuddle before being returned.","schema":{"type":"boolean","default":"false","description":"Use Defuddle to clean and extract the main content from web pages. \nThis popular library removes unnecessary elements like comments, sidebars, headers, footers, and other non-essential elements, leaving only the primary content. \nWhen enabled, the HTML response will be processed through Defuddle before being returned."}},{"name":"remove_selectors","in":"query","required":false,"description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups).","schema":{"type":"string","description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups)."}},{"name":"remove_cookie_banners","in":"query","required":false,"description":"Automatically remove cookie banners before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove cookie banners before capturing."}},{"name":"remove_ads","in":"query","required":false,"description":"Automatically remove ads before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove ads before capturing."}},{"name":"block_resources","in":"query","required":false,"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots.","schema":{"type":"string","enum":["document","eventsource","fetch","font","image","manifest","media","other","script","stylesheet","texttrack","websocket","xhr"],"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots."}},{"name":"block_urls","in":"query","required":false,"description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”.","schema":{"type":"string","description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”."}},{"name":"delay","in":"query","required":false,"description":"Delay in seconds before capturing the screenshot.","schema":{"type":"number","minimum":0,"maximum":10,"default":"0","description":"Delay in seconds before capturing the screenshot."}},{"name":"wait_until","in":"query","required":false,"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`","schema":{"type":"array","items":{"type":"string"},"enum":["domcontentloaded","load","networkidle0","networkidle2"],"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`"}},{"name":"wait_for_selector","in":"query","required":false,"description":"Wait for a specific element to appear before taking the screenshot.","schema":{"type":"string","description":"Wait for a specific element to appear before taking the screenshot."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"links":{"type":"object","properties":{"social":{"type":"array","items":{"type":"string"}},"external":{"type":"array","items":{"type":"string"}},"internal":{"type":"array","items":{"type":"string"}}}},"metadata":{"type":"object","properties":{"title":{"type":"string"},"favicon":{"type":"string"},"ogImage":{"type":"string"},"description":{"type":"string"}}}}},"success":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"data":{"links":{"social":["https://twitter.com/capturekitdev","https://linkedin.com/company/capturekit-dev"],"external":["https://docs.capturekit.dev","https://www.uneed.best/tool/capture-kit","https://zapier.com/apps/capturekit/integrations","https://zapier.com/apps/capturekit-website-screenshots-p/integrations","https://playground.capturekit.dev","https://status.capturekit.dev"],"internal":["https://capturekit.dev/","https://capturekit.dev/page-content","https://capturekit.dev/ai","https://capturekit.dev/pricing","https://capturekit.dev/login","https://capturekit.dev/sign-up","https://capturekit.dev/dashboard","https://capturekit.dev/blog/automate-website-screenshots-using-make-google-sheets-and-screenshot-api","https://capturekit.dev/blog/automate-website-screenshots-using-n8n-and-capturekit-website-capture-api","https://capturekit.dev/blog/capturekit-becoming-part-webapi","https://capturekit.dev/blog","https://capturekit.dev/use-cases/web-archiving","https://capturekit.dev/use-cases/ui-testing","https://capturekit.dev/use-cases/seo-tracking","https://capturekit.dev/use-cases/data-extraction","https://capturekit.dev/use-cases/ai-page-analysis","https://capturekit.dev/screenshot-api-use-cases","https://capturekit.dev/content-api-use-cases","https://capturekit.dev/ai-content-api-use-cases","https://capturekit.dev/alternatives/urlbox","https://capturekit.dev/alternatives/screenshotone","https://capturekit.dev/alternatives/screenshotapi","https://capturekit.dev/alternatives/apiflash","https://capturekit.dev/alternatives","https://capturekit.dev/screenshot-api-calculator","https://capturekit.dev/free-website-links-extractor","https://capturekit.dev/free-benchmark","https://capturekit.dev/terms","https://capturekit.dev/privacy"]},"metadata":{"title":"Screenshot API to scale your applications","favicon":"","ogImage":"https://capturekit-assets.s3.amazonaws.com/capturekit-og+(1).png","description":"CaptureKit is a Screenshot API for automating website screenshots. Get 100 free credits to test it and see how it fits your use case."}},"success":true}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}},"post":{"summary":"Content","description":"CaptureKit Content API extracts structured webpage data, metadata, links, HTML/Markdown: in one request for SEO, monitoring, indexing and automation.\n\n**Credit cost:** 1 credit per call","operationId":"post-content","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture.","schema":{"type":"string","description":"The URL of the webpage to capture."}},{"name":"include_html","in":"query","required":false,"description":"Include the raw HTML of the webpage in the response.","schema":{"type":"boolean","default":"false","description":"Include the raw HTML of the webpage in the response."}},{"name":"include_markdown","in":"query","required":false,"description":"Include the Markdown of the webpage in the response.","schema":{"type":"boolean","default":"false","description":"Include the Markdown of the webpage in the response."}},{"name":"include_sitemap","in":"query","required":false,"description":"Include the sitemap of the website in the response.","schema":{"type":"boolean","default":"false","description":"Include the sitemap of the website in the response."}},{"name":"use_defuddle","in":"query","required":false,"description":"Use Defuddle to clean and extract the main content from web pages. \nThis popular library removes unnecessary elements like comments, sidebars, headers, footers, and other non-essential elements, leaving only the primary content. \nWhen enabled, the HTML response will be processed through Defuddle before being returned.","schema":{"type":"boolean","default":"false","description":"Use Defuddle to clean and extract the main content from web pages. \nThis popular library removes unnecessary elements like comments, sidebars, headers, footers, and other non-essential elements, leaving only the primary content. \nWhen enabled, the HTML response will be processed through Defuddle before being returned."}},{"name":"remove_selectors","in":"query","required":false,"description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups).","schema":{"type":"string","description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups)."}},{"name":"remove_cookie_banners","in":"query","required":false,"description":"Automatically remove cookie banners before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove cookie banners before capturing."}},{"name":"remove_ads","in":"query","required":false,"description":"Automatically remove ads before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove ads before capturing."}},{"name":"block_resources","in":"query","required":false,"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots.","schema":{"type":"string","enum":["document","eventsource","fetch","font","image","manifest","media","other","script","stylesheet","texttrack","websocket","xhr"],"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots."}},{"name":"block_urls","in":"query","required":false,"description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”.","schema":{"type":"string","description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”."}},{"name":"delay","in":"query","required":false,"description":"Delay in seconds before capturing the screenshot.","schema":{"type":"number","minimum":0,"maximum":10,"default":"0","description":"Delay in seconds before capturing the screenshot."}},{"name":"wait_until","in":"query","required":false,"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`","schema":{"type":"array","items":{"type":"string"},"enum":["domcontentloaded","load","networkidle0","networkidle2"],"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`"}},{"name":"wait_for_selector","in":"query","required":false,"description":"Wait for a specific element to appear before taking the screenshot.","schema":{"type":"string","description":"Wait for a specific element to appear before taking the screenshot."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"links":{"type":"object","properties":{"social":{"type":"array","items":{"type":"string"}},"external":{"type":"array","items":{"type":"string"}},"internal":{"type":"array","items":{"type":"string"}}}},"metadata":{"type":"object","properties":{"title":{"type":"string"},"favicon":{"type":"string"},"ogImage":{"type":"string"},"description":{"type":"string"}}}}},"success":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"data":{"links":{"social":["https://twitter.com/capturekitdev","https://linkedin.com/company/capturekit-dev"],"external":["https://docs.capturekit.dev","https://www.uneed.best/tool/capture-kit","https://zapier.com/apps/capturekit/integrations","https://zapier.com/apps/capturekit-website-screenshots-p/integrations","https://playground.capturekit.dev","https://status.capturekit.dev"],"internal":["https://capturekit.dev/","https://capturekit.dev/page-content","https://capturekit.dev/ai","https://capturekit.dev/pricing","https://capturekit.dev/login","https://capturekit.dev/sign-up","https://capturekit.dev/dashboard","https://capturekit.dev/blog/automate-website-screenshots-using-make-google-sheets-and-screenshot-api","https://capturekit.dev/blog/automate-website-screenshots-using-n8n-and-capturekit-website-capture-api","https://capturekit.dev/blog/capturekit-becoming-part-webapi","https://capturekit.dev/blog","https://capturekit.dev/use-cases/web-archiving","https://capturekit.dev/use-cases/ui-testing","https://capturekit.dev/use-cases/seo-tracking","https://capturekit.dev/use-cases/data-extraction","https://capturekit.dev/use-cases/ai-page-analysis","https://capturekit.dev/screenshot-api-use-cases","https://capturekit.dev/content-api-use-cases","https://capturekit.dev/ai-content-api-use-cases","https://capturekit.dev/alternatives/urlbox","https://capturekit.dev/alternatives/screenshotone","https://capturekit.dev/alternatives/screenshotapi","https://capturekit.dev/alternatives/apiflash","https://capturekit.dev/alternatives","https://capturekit.dev/screenshot-api-calculator","https://capturekit.dev/free-website-links-extractor","https://capturekit.dev/free-benchmark","https://capturekit.dev/terms","https://capturekit.dev/privacy"]},"metadata":{"title":"Screenshot API to scale your applications","favicon":"","ogImage":"https://capturekit-assets.s3.amazonaws.com/capturekit-og+(1).png","description":"CaptureKit is a Screenshot API for automating website screenshots. Get 100 free credits to test it and see how it fits your use case."}},"success":true}}}}}},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}},"/v1/capture":{"get":{"summary":"Capture (Screenshot)","description":"Browser-like Screenshot API that captures webpages as PNG/JPEG/WebP or PDF for previews, QA, reporting, monitoring, and archiving no headless setup.\n\n**Credit cost:** 1 credit per call","operationId":"get-capture","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture. Examples:\n```\nhttps://www.amazon.com/s?k=pokemon\n```\n\n```\nhttps://www.cdiscount.com/sante-mieux-vivre/materiel-medical/soin-domicile/l-1650608.html\n```\n\n```\nhttps://github.com/seaweedfs/seaweedfs\n```","schema":{"type":"string","description":"The URL of the webpage to capture. Examples:\n```\nhttps://www.amazon.com/s?k=pokemon\n```\n\n```\nhttps://www.cdiscount.com/sante-mieux-vivre/materiel-medical/soin-domicile/l-1650608.html\n```\n\n```\nhttps://github.com/seaweedfs/seaweedfs\n```"}},{"name":"format","in":"query","required":false,"description":"The output format of the screenshot.\n\nAvailable formats: \n\n- `webp`\n- `jpeg`\n- `jpg`\n- `png`\n- `pdf`","schema":{"type":"string","enum":["jpeg","jpg","pdf","png","webp"],"default":"png","description":"The output format of the screenshot.\n\nAvailable formats: \n\n- `webp`\n- `jpeg`\n- `jpg`\n- `png`\n- `pdf`"}},{"name":"device","in":"query","required":false,"description":"The device type to emulate for the screenshot.\n\nAvailable devices:\n\n- `iphone_14_pro_max`\n- `iphone_14_pro`\n- `iphone_13_pro_max`\n- `iphone_13_mini`\n- `iphone_12`\n- `iphone_x`\n- `ipad`\n- `galaxy_s23_ultra`\n- `galaxy_s23`\n- `galaxy_s8`\n- `galaxy_fold4`\n- `pixel_7_pro`\n- `pixel_6a`\n- `pixel_5`\n- `redmi_note_12_pro`\n- `redmi_note_11`\n- `huawei_p60_pro`\n- `huawei_mate_50_pro`","schema":{"type":"string","enum":["galaxy_fold4","galaxy_s23","galaxy_s23_ultra","galaxy_s8","huawei_mate_50_pro","huawei_p60_pro","ipad","iphone_12","iphone_13_mini","iphone_13_pro_max","iphone_14_pro","iphone_14_pro_max","iphone_x","pixel_5","pixel_6a","pixel_7_pro","redmi_note_11","redmi_note_12_pro"],"description":"The device type to emulate for the screenshot.\n\nAvailable devices:\n\n- `iphone_14_pro_max`\n- `iphone_14_pro`\n- `iphone_13_pro_max`\n- `iphone_13_mini`\n- `iphone_12`\n- `iphone_x`\n- `ipad`\n- `galaxy_s23_ultra`\n- `galaxy_s23`\n- `galaxy_s8`\n- `galaxy_fold4`\n- `pixel_7_pro`\n- `pixel_6a`\n- `pixel_5`\n- `redmi_note_12_pro`\n- `redmi_note_11`\n- `huawei_p60_pro`\n- `huawei_mate_50_pro`"}},{"name":"full_page","in":"query","required":false,"description":"Capture the entire page instead of just the visible viewport.","schema":{"type":"boolean","default":"false","description":"Capture the entire page instead of just the visible viewport."}},{"name":"full_page_scroll","in":"query","required":false,"description":"Scroll the page to fully load lazy-loaded elements before capturing a full-page screenshot.","schema":{"type":"boolean","default":"false","description":"Scroll the page to fully load lazy-loaded elements before capturing a full-page screenshot."}},{"name":"full_page_scroll_duration","in":"query","required":false,"description":"Time in milliseconds for scrolling before capturing the full page.","schema":{"type":"number","default":"400","description":"Time in milliseconds for scrolling before capturing the full page."}},{"name":"viewport_width","in":"query","required":false,"description":"The width of the browser viewport in pixels.","schema":{"type":"number","default":"1280","description":"The width of the browser viewport in pixels."}},{"name":"viewport_height","in":"query","required":false,"description":"The height of the browser viewport in pixels.","schema":{"type":"number","default":"1024","description":"The height of the browser viewport in pixels."}},{"name":"scale_factor","in":"query","required":false,"description":"The scale factor for high-resolution screenshots.","schema":{"type":"number","default":"1","description":"The scale factor for high-resolution screenshots."}},{"name":"image_quality","in":"query","required":false,"description":"Generate images with custom quality settings.\n\nSupported formats include:\n\n```\njpeg\n```\n\n```\nwebp\n```","schema":{"type":"string","default":"80","description":"Generate images with custom quality settings.\n\nSupported formats include:\n\n```\njpeg\n```\n\n```\nwebp\n```"}},{"name":"selector","in":"query","required":false,"description":"Capture a specific element on the page instead of the full viewport.","schema":{"type":"string","description":"Capture a specific element on the page instead of the full viewport."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}},{"name":"remove_selectors","in":"query","required":false,"description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups).","schema":{"type":"string","description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups)."}},{"name":"remove_cookie_banners","in":"query","required":false,"description":"Automatically remove cookie banners before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove cookie banners before capturing."}},{"name":"remove_ads","in":"query","required":false,"description":"Automatically remove ads before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove ads before capturing."}},{"name":"block_resources","in":"query","required":false,"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots.","schema":{"type":"string","enum":["document","eventsource","fetch","font","image","manifest","media","other","script","stylesheet","texttrack","websocket","xhr"],"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots."}},{"name":"block_urls","in":"query","required":false,"description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”.","schema":{"type":"string","description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”."}},{"name":"delay","in":"query","required":false,"description":"Delay in seconds before capturing the screenshot.","schema":{"type":"number","minimum":0,"maximum":10,"default":"0","description":"Delay in seconds before capturing the screenshot."}},{"name":"wait_until","in":"query","required":false,"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`","schema":{"type":"array","items":{"type":"string"},"enum":["domcontentloaded","load","networkidle0","networkidle2"],"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`"}},{"name":"wait_for_selector","in":"query","required":false,"description":"Wait for a specific element to appear before taking the screenshot.","schema":{"type":"string","description":"Wait for a specific element to appear before taking the screenshot."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"s3_secret_key","in":"query","required":false,"description":"AWS S3 secret access key.","schema":{"type":"string","description":"AWS S3 secret access key."}},{"name":"s3_access_key_id","in":"query","required":false,"description":"AWS S3 access key ID.","schema":{"type":"string","description":"AWS S3 access key ID."}},{"name":"s3_bucket","in":"query","required":false,"description":"The S3 bucket name where the screenshot will be uploaded.","schema":{"type":"string","description":"The S3 bucket name where the screenshot will be uploaded."}},{"name":"s3_object_key","in":"query","required":false,"description":"The filename for the S3 object (auto-generated if not provided).","schema":{"type":"string","description":"The filename for the S3 object (auto-generated if not provided)."}},{"name":"s3_region","in":"query","required":false,"description":"AWS S3 region for storage.\n\n","schema":{"type":"string","description":"AWS S3 region for storage.\n\n"}},{"name":"storage_endpoint","in":"query","required":false,"description":"Leave this field empty for AWS S3. Only specify a value if required. S3-compatible storage services are supported, for example, use https://<accountId>.r2.cloudflarestorage.com for Cloudflare R2.","schema":{"type":"string","description":"Leave this field empty for AWS S3. Only specify a value if required. S3-compatible storage services are supported, for example, use https://<accountId>.r2.cloudflarestorage.com for Cloudflare R2."}},{"name":"s3_url","in":"query","required":false,"description":"Use S3 storage for screenshots. The S3 URL will be returned in the response.","schema":{"type":"boolean","default":"false","description":"Use S3 storage for screenshots. The S3 URL will be returned in the response."}}],"responses":{"200":{"description":"Successful response"},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}},"post":{"summary":"Capture (Screenshot)","description":"Browser-like Screenshot API that captures webpages as PNG/JPEG/WebP or PDF for previews, QA, reporting, monitoring, and archiving no headless setup.\n\n**Credit cost:** 1 credit per call","operationId":"post-capture","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"url","in":"query","required":true,"description":"The URL of the webpage to capture. Examples:\n```\nhttps://www.amazon.com/s?k=pokemon\n```\n\n```\nhttps://www.cdiscount.com/sante-mieux-vivre/materiel-medical/soin-domicile/l-1650608.html\n```\n\n```\nhttps://github.com/seaweedfs/seaweedfs\n```","schema":{"type":"string","description":"The URL of the webpage to capture. Examples:\n```\nhttps://www.amazon.com/s?k=pokemon\n```\n\n```\nhttps://www.cdiscount.com/sante-mieux-vivre/materiel-medical/soin-domicile/l-1650608.html\n```\n\n```\nhttps://github.com/seaweedfs/seaweedfs\n```"}},{"name":"format","in":"query","required":false,"description":"The output format of the screenshot.\n\nAvailable formats: \n\n- `webp`\n- `jpeg`\n- `jpg`\n- `png`\n- `pdf`","schema":{"type":"string","enum":["jpeg","jpg","pdf","png","webp"],"default":"png","description":"The output format of the screenshot.\n\nAvailable formats: \n\n- `webp`\n- `jpeg`\n- `jpg`\n- `png`\n- `pdf`"}},{"name":"device","in":"query","required":false,"description":"The device type to emulate for the screenshot.\n\nAvailable devices:\n\n- `iphone_14_pro_max`\n- `iphone_14_pro`\n- `iphone_13_pro_max`\n- `iphone_13_mini`\n- `iphone_12`\n- `iphone_x`\n- `ipad`\n- `galaxy_s23_ultra`\n- `galaxy_s23`\n- `galaxy_s8`\n- `galaxy_fold4`\n- `pixel_7_pro`\n- `pixel_6a`\n- `pixel_5`\n- `redmi_note_12_pro`\n- `redmi_note_11`\n- `huawei_p60_pro`\n- `huawei_mate_50_pro`","schema":{"type":"string","enum":["galaxy_fold4","galaxy_s23","galaxy_s23_ultra","galaxy_s8","huawei_mate_50_pro","huawei_p60_pro","ipad","iphone_12","iphone_13_mini","iphone_13_pro_max","iphone_14_pro","iphone_14_pro_max","iphone_x","pixel_5","pixel_6a","pixel_7_pro","redmi_note_11","redmi_note_12_pro"],"description":"The device type to emulate for the screenshot.\n\nAvailable devices:\n\n- `iphone_14_pro_max`\n- `iphone_14_pro`\n- `iphone_13_pro_max`\n- `iphone_13_mini`\n- `iphone_12`\n- `iphone_x`\n- `ipad`\n- `galaxy_s23_ultra`\n- `galaxy_s23`\n- `galaxy_s8`\n- `galaxy_fold4`\n- `pixel_7_pro`\n- `pixel_6a`\n- `pixel_5`\n- `redmi_note_12_pro`\n- `redmi_note_11`\n- `huawei_p60_pro`\n- `huawei_mate_50_pro`"}},{"name":"full_page","in":"query","required":false,"description":"Capture the entire page instead of just the visible viewport.","schema":{"type":"boolean","default":"false","description":"Capture the entire page instead of just the visible viewport."}},{"name":"full_page_scroll","in":"query","required":false,"description":"Scroll the page to fully load lazy-loaded elements before capturing a full-page screenshot.","schema":{"type":"boolean","default":"false","description":"Scroll the page to fully load lazy-loaded elements before capturing a full-page screenshot."}},{"name":"full_page_scroll_duration","in":"query","required":false,"description":"Time in milliseconds for scrolling before capturing the full page.","schema":{"type":"number","default":"400","description":"Time in milliseconds for scrolling before capturing the full page."}},{"name":"viewport_width","in":"query","required":false,"description":"The width of the browser viewport in pixels.","schema":{"type":"number","default":"1280","description":"The width of the browser viewport in pixels."}},{"name":"viewport_height","in":"query","required":false,"description":"The height of the browser viewport in pixels.","schema":{"type":"number","default":"1024","description":"The height of the browser viewport in pixels."}},{"name":"scale_factor","in":"query","required":false,"description":"The scale factor for high-resolution screenshots.","schema":{"type":"number","default":"1","description":"The scale factor for high-resolution screenshots."}},{"name":"image_quality","in":"query","required":false,"description":"Generate images with custom quality settings.\n\nSupported formats include:\n\n```\njpeg\n```\n\n```\nwebp\n```","schema":{"type":"string","default":"80","description":"Generate images with custom quality settings.\n\nSupported formats include:\n\n```\njpeg\n```\n\n```\nwebp\n```"}},{"name":"selector","in":"query","required":false,"description":"Capture a specific element on the page instead of the full viewport.","schema":{"type":"string","description":"Capture a specific element on the page instead of the full viewport."}},{"name":"cache","in":"query","required":false,"description":"Cache the response.","schema":{"type":"boolean","default":"false","description":"Cache the response."}},{"name":"cache_ttl","in":"query","required":false,"description":"Cache the response for a custom TTL (in seconds).","schema":{"type":"number","minimum":3600,"maximum":2592000,"default":"2592000","description":"Cache the response for a custom TTL (in seconds)."}},{"name":"remove_selectors","in":"query","required":false,"description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups).","schema":{"type":"string","description":"A comma-separated list of elements to hide before capturing (e.g., ads, popups)."}},{"name":"remove_cookie_banners","in":"query","required":false,"description":"Automatically remove cookie banners before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove cookie banners before capturing."}},{"name":"remove_ads","in":"query","required":false,"description":"Automatically remove ads before capturing.","schema":{"type":"boolean","default":"false","description":"Automatically remove ads before capturing."}},{"name":"block_resources","in":"query","required":false,"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots.","schema":{"type":"string","enum":["document","eventsource","fetch","font","image","manifest","media","other","script","stylesheet","texttrack","websocket","xhr"],"description":"Comma-separated list of resource types to block (e.g., “image,stylesheet,font”). \n\nAvailable resource types: \n\n- `document`\n- `stylesheet`\n- `image`\n- `media`\n- `font`\n- `script`\n- `texttrack`\n- `xhr`\n- `fetch`\n- `eventsource`\n- `websocket`\n- `manifest`\n- `other`\n\nUseful for optimizing page loading speed before capturing screenshots."}},{"name":"block_urls","in":"query","required":false,"description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”.","schema":{"type":"string","description":"Comma-separated list of URL patterns to block (e.g., “analytics,tracking,advertisement”). \n\nYou can specify URLs, domains, or simple patterns like “.example.com/”."}},{"name":"delay","in":"query","required":false,"description":"Delay in seconds before capturing the screenshot.","schema":{"type":"number","minimum":0,"maximum":10,"default":"0","description":"Delay in seconds before capturing the screenshot."}},{"name":"wait_until","in":"query","required":false,"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`","schema":{"type":"array","items":{"type":"string"},"enum":["domcontentloaded","load","networkidle0","networkidle2"],"description":"Define when to capture.\n\nAvailable formats:  \n\n- `networkidle2`\n- `load`\n- `domcontentloaded`\n- `networkidle0`"}},{"name":"wait_for_selector","in":"query","required":false,"description":"Wait for a specific element to appear before taking the screenshot.","schema":{"type":"string","description":"Wait for a specific element to appear before taking the screenshot."}},{"name":"proxy","in":"query","required":false,"description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs.","schema":{"type":"string","description":"Specify a proxy server to route your request through. \n\nSupports `HTTP`, `HTTPS`, and `SOCKS5` proxies. \n\nFormat: http://username:password@proxy.com:PORT. \n\nUseful for bypassing geo-restrictions and rotating IPs."}},{"name":"s3_secret_key","in":"query","required":false,"description":"AWS S3 secret access key.","schema":{"type":"string","description":"AWS S3 secret access key."}},{"name":"s3_access_key_id","in":"query","required":false,"description":"AWS S3 access key ID.","schema":{"type":"string","description":"AWS S3 access key ID."}},{"name":"s3_bucket","in":"query","required":false,"description":"The S3 bucket name where the screenshot will be uploaded.","schema":{"type":"string","description":"The S3 bucket name where the screenshot will be uploaded."}},{"name":"s3_object_key","in":"query","required":false,"description":"The filename for the S3 object (auto-generated if not provided).","schema":{"type":"string","description":"The filename for the S3 object (auto-generated if not provided)."}},{"name":"s3_region","in":"query","required":false,"description":"AWS S3 region for storage.\n\n","schema":{"type":"string","description":"AWS S3 region for storage.\n\n"}},{"name":"storage_endpoint","in":"query","required":false,"description":"Leave this field empty for AWS S3. Only specify a value if required. S3-compatible storage services are supported, for example, use https://<accountId>.r2.cloudflarestorage.com for Cloudflare R2.","schema":{"type":"string","description":"Leave this field empty for AWS S3. Only specify a value if required. S3-compatible storage services are supported, for example, use https://<accountId>.r2.cloudflarestorage.com for Cloudflare R2."}},{"name":"s3_url","in":"query","required":false,"description":"Use S3 storage for screenshots. The S3 URL will be returned in the response.","schema":{"type":"boolean","default":"false","description":"Use S3 storage for screenshots. The S3 URL will be returned in the response."}}],"responses":{"200":{"description":"Successful response"},"400":{"description":"Bad Request — missing or invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Bad Request"}}}},"401":{"description":"Unauthorized — the API key is missing, invalid, inactive, or expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Invalid API Key"}}}},"402":{"description":"Payment Required — your subscription or credit balance is insufficient.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Payment required"}}}},"429":{"description":"Too Many Requests — you exceeded your rate limit quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded for the API key: quota monthly"}}}},"500":{"description":"Internal Server Error — something went wrong on our side.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Internal Error"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message."}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your API key. Include it in the x-api-key header for every request."}}}}