# ScreenshotAPI > Capture web pages, retrieve reliable results, and integrate ScreenshotAPI into your application. - [ScreenshotAPI documentation](https://docs.screenshotapi.tech/index.md): Turn web pages into images and PDFs, then build captures into your application. - [Make your first capture](https://docs.screenshotapi.tech/quickstart.md): Send a capture request, handle its result, and download the generated file. - [API keys and authentication](https://docs.screenshotapi.tech/authentication.md): Keep credentials on your server and grant the scopes your integration needs. - [Responses and artifact delivery](https://docs.screenshotapi.tech/responses.md): Distinguish HTTP success, capture completion, and downloadable output. - [Viewports and devices](https://docs.screenshotapi.tech/capture/viewport.md): Choose page layout dimensions, pixel density, and mobile emulation. - [Full-page captures](https://docs.screenshotapi.tech/capture/full-page.md): Capture below the fold and understand the limits of long or dynamic pages. - [Images and PDFs](https://docs.screenshotapi.tech/capture/formats.md): Choose the file format and quality settings that fit your workflow. - [Page readiness and quality checks](https://docs.screenshotapi.tech/capture/readiness.md): Wait for meaningful content and reject captures that fail your expectations. - [Content filters and element captures](https://docs.screenshotapi.tech/capture/page-controls.md): Remove distracting content, modify the page, or capture one visible element. - [Language, theme, and region](https://docs.screenshotapi.tech/capture/localization.md): Control browser preferences and understand what changes the target's geographic response. - [Inspect page text](https://docs.screenshotapi.tech/capture/inspection.md): Return a screenshot, readable Markdown, and accessibility text from one hosted render. - [Asynchronous jobs](https://docs.screenshotapi.tech/integration/async-jobs.md): Submit work once, track its state, and handle capture failures independently of HTTP errors. - [Idempotency and request recovery](https://docs.screenshotapi.tech/integration/idempotency.md): Retry an uncertain submission without creating duplicate captures. - [Completion webhooks](https://docs.screenshotapi.tech/integration/webhooks.md): Receive signed capture results, deduplicate delivery, and recover failed notifications. - [Credits, caching, and limits](https://docs.screenshotapi.tech/integration/credits-and-limits.md): Budget capture costs and handle admission limits without duplicating work. - [Capture with Node.js](https://docs.screenshotapi.tech/integration/node.md): A complete fetch-based workflow with job polling and artifact download. - [Capture with Python](https://docs.screenshotapi.tech/integration/python.md): Submit, poll, and download using only the Python standard library. - [Connect your AI agent](https://docs.screenshotapi.tech/agents/mcp.md): Connect an authorized AI agent to hosted captures and job tracking. - [Agent OAuth sign-in](https://docs.screenshotapi.tech/agents/oauth.md): Connect compatible remote MCP clients through user consent without copying an API key. - [Errors and troubleshooting](https://docs.screenshotapi.tech/errors.md): Resolve failures by their structured code and preserve enough context to recover safely. - [Device preset reference](https://docs.screenshotapi.tech/reference/devices.md): Supported device identifiers, layout dimensions, and output scale. - [Error code reference](https://docs.screenshotapi.tech/reference/error-codes.md): Default HTTP mapping and retry behavior for every capture error code. - [Create a capture](https://docs.screenshotapi.tech/api-reference/captures/create-a-capture.md): Requires screenshot:write. Accepts a JSON body of at most 256 KiB. Returns capture data on 200 or a job handle on 202, including when sync is true. A query mode=async overrides the body's sync flag. Successful viewport images cost 1 credit, full-page images 2, and PDFs 3. Use the same key and identi… - [Get a capture job](https://docs.screenshotapi.tech/api-reference/jobs/get-a-capture-job.md): Requires jobs:read and the submitting API key. Inspect data.state and data.result.ok; an outer ok=true means the lookup succeeded. An unknown state can be temporary during recovery. - [Recover a request by key](https://docs.screenshotapi.tech/api-reference/jobs/recover-a-request-by-key.md): Requires jobs:read and the submitting API key. Resolves the original job from its Idempotency-Key. A failed job needs a new key if you intentionally request another render. - [Get webhook delivery status](https://docs.screenshotapi.tech/api-reference/webhook-delivery/get-webhook-delivery-status.md): Requires jobs:read and the submitting API key. Available only for jobs with a webhook delivery record. Save the exact quoted ETag to request redelivery. - [Redeliver a webhook](https://docs.screenshotapi.tech/api-reference/webhook-delivery/redeliver-a-webhook.md): Requires screenshot:write and the submitting API key. Sends the existing result without another render or capture charge. A stale generation, pending delivery, or unavailable record returns 409. - [Receive a capture result](https://docs.screenshotapi.tech/api-reference/webhook-delivery/receive-a-capture-result.md): Outbound POST to the callback specified in your capture request. Verify the exact raw body using HMAC-SHA256(secret, timestamp + '.' + rawBody), enforce timestamp tolerance, and deduplicate delivery. Callback delivery is independent of rendering. - [Check service readiness](https://docs.screenshotapi.tech/api-reference/service/check-service-readiness.md): No API key required. Readiness checks Redis, database connectivity, unpaused queue processing, and available worker heartbeats. A healthy response is not a latency guarantee. ## OpenAPI Specs - [openapi](/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.