# ProofAge > Age and identity verification API, widget and MCP server. - [ProofAge Documentation](https://docs.proofage.net/index.md): Age and identity verification for the web: one API, a hosted widget, signed webhooks and an MCP server. - [Quick start](https://docs.proofage.net/getting-started/quick-start.md): Create a verification on your backend, open it in the browser, and receive the decision by webhook. - [API authentication](https://docs.proofage.net/getting-started/api-authentication.md): The public key identifies your workspace; an HMAC signature made with the secret key proves the request is yours. - [Concepts](https://docs.proofage.net/getting-started/concepts.md): Workspaces, verifications, attempts, external IDs and the difference between test and live. - [What the person sees](https://docs.proofage.net/getting-started/user-verification-journey.md): Every screen of the verification, from consent to the final screen, on desktop and phone. - [Supported documents](https://docs.proofage.net/getting-started/supported-documents.md): Identity documents from 190+ countries and territories: passports, ID cards, driver's licences and residence permits. - [Browser and device support](https://docs.proofage.net/getting-started/browser-device-support.md): Browsers, in-app browsers and WebViews the verification runs in, and how camera access is recovered. - [Pricing](https://docs.proofage.net/getting-started/pricing.md): What a verification costs, what is billed, the monthly minimum and the free trial. - [Security and data protection](https://docs.proofage.net/getting-started/security.md): How requests and webhooks are signed, how personal data is kept and erased, and our DPA. - [SDKs and integrations](https://docs.proofage.net/integration/sdks.md): The browser SDK, server SDKs for Node.js, Python, PHP and Laravel, and the WordPress and Shopify plugins. - [Webhooks](https://docs.proofage.net/integration/webhooks.md): Receive signed decision and data events, verify them, and handle retries and duplicates. - [Verification statuses](https://docs.proofage.net/integration/verification-statuses.md): Every status a verification can be in, how it moves between them, and which are final. - [Reading results](https://docs.proofage.net/integration/retrieving-results.md): Fetch the decision, the document data, the age estimate and the media of a verification, or find one by your own ID. - [Errors](https://docs.proofage.net/integration/error-handling.md): Error codes, the shapes of error responses, and how to handle each on your side. - [Rate limiting](https://docs.proofage.net/integration/rate-limiting.md): Request limits of the public API, the 429 response, and how to retry. - [Sandbox and test data](https://docs.proofage.net/integration/sandbox-testing.md): Test workspaces are free and never analysed: finish a verification, set its outcome, replay the webhook. - [Go-live checklist](https://docs.proofage.net/integration/go-live.md): Everything to switch from a test workspace to a live one without surprises. - [Integration prompt](https://docs.proofage.net/integration/integration-prompt.md): One prompt that has an AI coding agent integrate ProofAge into your app end to end. - [Age-gate a checkout](https://docs.proofage.net/recipes/age-gate-checkout.md): Require an age check before an order of age-restricted goods goes through. - [Verify marketplace sellers](https://docs.proofage.net/recipes/marketplace-sellers.md): Verify the identity of sellers before they can list or get paid. - [Handle a resubmission](https://docs.proofage.net/recipes/handle-resubmission.md): What to show a person asked to try again, and how to follow the second attempt. - [ProofAge MCP server](https://docs.proofage.net/integration/mcp/overview.md): Connect Claude, Cursor, VS Code or any MCP client to your ProofAge account. - [MCP tools reference](https://docs.proofage.net/integration/mcp/tools.md): Every tool the ProofAge MCP server offers, what it does, and which roles see it. - [MCP examples](https://docs.proofage.net/integration/mcp/examples.md): Prompts that work well with the ProofAge MCP server, from integration to support. - [Browser SDK](https://docs.proofage.net/integration/web/browser-sdk.md): Open the verification over your page with a few lines of JavaScript and get the result back. - [Redirect to the hosted page](https://docs.proofage.net/integration/web/redirect.md): Send the person to the verification URL and bring them back to your site afterwards. - [Capture in your own UI](https://docs.proofage.net/integration/web/custom-ui.md): Build the capture screens yourself and drive the verification through the API, step by step. - [Consent](https://docs.proofage.net/integration/web/consent.md): Show the consent text and record the person's acceptance through the API. - [Uploading media](https://docs.proofage.net/integration/web/uploading-media.md): Upload the selfie and document images of a verification and submit it. - [Node.js SDK](https://docs.proofage.net/integration/server-sdks/node.md): Create verifications and verify webhooks from Node.js with @proofage/node. - [Python SDK](https://docs.proofage.net/integration/server-sdks/python.md): Create verifications and verify webhooks from Python with the proofage package. - [PHP SDK](https://docs.proofage.net/integration/server-sdks/php.md): Create verifications and verify webhooks from PHP with proofage/php-sdk. - [Laravel SDK](https://docs.proofage.net/integration/server-sdks/laravel.md): The proofage/laravel-client package: configuration, facade, and a ready webhook route. - [WordPress and WooCommerce](https://docs.proofage.net/integration/plugins/wordpress.md): Add age verification to a WordPress site or WooCommerce store with the ProofAge plugin. - [Shopify](https://docs.proofage.net/integration/plugins/shopify.md): Add age verification to a Shopify store with the ProofAge app. - [PrestaShop](https://docs.proofage.net/integration/plugins/prestashop.md): Add age verification to a PrestaShop store with the ProofAge module. - [Zapier](https://docs.proofage.net/integration/zapier.md): Send verification links from any Zap and act on the decision, with the ProofAge app for Zapier. - [API reference](https://docs.proofage.net/api-reference/overview.md): Base URL, authentication, error shapes and conventions of the ProofAge REST API. - [Data models](https://docs.proofage.net/api-reference/data-models.md): The verification object and the other objects the API and webhooks return, field by field. - [Postman collection](https://docs.proofage.net/api-reference/postman.md): Import the ProofAge API into Postman. The collection signs every request itself. - [Create a verification session](https://docs.proofage.net/api-reference/verification/create-a-verification-session.md): Creates a new verification session and returns a URL for the end-user to complete verification. - [List verifications](https://docs.proofage.net/api-reference/verification/list-verifications.md): Lists the workspace's verifications, newest first, each in the shape Get verification status returns. Filter by `status` and `external_id`; page with `limit` and the `next_cursor` of the previous page, which is null on the last page. - [Get verification status](https://docs.proofage.net/api-reference/verification/get-verification-status.md): Retrieves the current state of a verification session including its status and decision reason. - [Submit verification for processing](https://docs.proofage.net/api-reference/verification/submit-verification-for-processing.md): Submits the verification for automated processing once the current attempt's media is uploaded. An upload moves the verification to `started`. A facial age estimation that asked for a document is submitted the same way, after the document is uploaded. - [Set a test outcome](https://docs.proofage.net/api-reference/verification/set-a-test-outcome.md): Test workspaces only: finishes a verification with the given status without a person going through the widget, so an integration's handling of each outcome can be tested end to end. A verification nobody has opened is moved through `started` and `submitted` first, as a person's submission would move… - [Get active consent](https://docs.proofage.net/api-reference/workspace/get-active-consent.md): Returns the currently active consent version that must be presented to and accepted by the end-user. - [Accept consent](https://docs.proofage.net/api-reference/verification/accept-consent.md): Records the end-user's acceptance of the data processing consent. Must be called before uploading media or submitting the verification. - [Upload media](https://docs.proofage.net/api-reference/media/upload-media.md): Uploads a selfie or document image to the verification session. Consent must be accepted before uploading. The file is validated for quality (face detection, blur, brightness for selfies; document detection, readability for documents). - [Download media](https://docs.proofage.net/api-reference/media/download-media.md): Streams the bytes of a selfie or document image belonging to the verification, served by ProofAge under the same API key and HMAC signature as every other endpoint. - [Get verification document result](https://docs.proofage.net/api-reference/verification/get-verification-document-result.md): Returns what was read from the identity document of the most relevant attempt, normalised: dates as YYYY-MM-DD, countries as ISO 3166-1 alpha-2 (XK for Kosovo), and null for anything the document did not yield or does not print. On identity (KYC) workspaces `fields` carries eleven keys; on age verif… - [Get verification age estimation result](https://docs.proofage.net/api-reference/verification/get-verification-age-estimation-result.md): Retrieves sanitized age-threshold and gender estimates for age estimation workspaces. The gender value uses 0 for female and 1 for male. - [Block a verification face](https://docs.proofage.net/api-reference/verification/block-a-verification-face.md): Adds the face from this verification's selfie to your blocklist, shared by all your workspaces. Later verifications with a matching face are declined. Optional `reason` text is stored with the block and truncated to 1000 characters. - [Get workspace configuration](https://docs.proofage.net/api-reference/workspace/get-workspace-configuration.md): Returns the workspace settings including flow type, verification mode, and age thresholds. - [Create a webhook subscription](https://docs.proofage.net/api-reference/webhooksubscription/create-a-webhook-subscription.md): Subscribes a URL to decision webhooks, in addition to the workspace webhook URL set in the console. Built for REST hooks such as Zapier: subscribe when an automation is turned on, delete the subscription when it is turned off. A workspace can have up to 50. - [List webhook subscriptions](https://docs.proofage.net/api-reference/webhooksubscription/list-webhook-subscriptions.md): Lists the workspace's webhook subscriptions, newest first. - [Delete a webhook subscription](https://docs.proofage.net/api-reference/webhooksubscription/delete-a-webhook-subscription.md): Stops the deliveries to the subscription. Deliveries already queued are not sent. - [Decision webhook](https://docs.proofage.net/api-reference/webhook-decision.md): The event ProofAge sends to your webhook URL when a verification changes status. - [Liveness and anti-spoofing](https://docs.proofage.net/core-technology/liveness.md): Checks that a live person is in front of the camera, not a photo, a screen or a print. - [Face match](https://docs.proofage.net/core-technology/face-match.md): Compares the selfie with the portrait on the identity document. - [Facial age estimation](https://docs.proofage.net/core-technology/age-estimation.md): Confirms from a selfie alone that a person is 18 or older, and asks for an ID when the selfie can't. - [Identity (KYC)](https://docs.proofage.net/core-technology/id-verification.md): Confirms a person is who their identity document says: the document is read and checked, the person is live, and the selfie matches the portrait. - [Age verification by ID document](https://docs.proofage.net/core-technology/age-by-document.md): Reads the date of birth from the identity document and compares the age with your minimum age. - [Duplicate detection](https://docs.proofage.net/core-technology/duplicate-detection.md): Finds the same face behind a different account in your workspace. - [Face blocklist and device linking](https://docs.proofage.net/core-technology/face-blocklist.md): Decline people whose face you blocked, and the devices they used. - [Decision reasons](https://docs.proofage.net/core-technology/decision-reasons.md): Every reason code a declined or resubmitted verification can carry, and what it means. - [Workspaces and keys](https://docs.proofage.net/console/workspaces-and-keys.md): Create test and live workspaces, choose the check, and manage and rotate secret keys. - [Verification links](https://docs.proofage.net/console/verification-links.md): Send a person a verification link from the console, without writing code. - [Verifications and manual review](https://docs.proofage.net/console/verifications-and-review.md): Find a verification, read its result, and decide the ones waiting for review. - [Blocklist](https://docs.proofage.net/console/blocklist.md): Block a person's face from the console so they cannot pass again, and lift a block. - [Team and roles](https://docs.proofage.net/console/team-and-roles.md): Invite teammates as administrators, developers or support specialists, and what each role can do. - [Data retention and erasure](https://docs.proofage.net/console/data-retention.md): How long ProofAge keeps verification data, and how to erase a person's data on request. - [October 2026](https://docs.proofage.net/changelog/2026-10.md): What changed in ProofAge in October 2026. - [September 2026](https://docs.proofage.net/changelog/2026-09.md): What changed in ProofAge in September 2026. - [August 2026](https://docs.proofage.net/changelog/2026-08.md): What changed in ProofAge in August 2026. - [July 2026](https://docs.proofage.net/changelog/2026-07.md): What changed in ProofAge in July 2026. - [June 2026](https://docs.proofage.net/changelog/2026-06.md): What changed in ProofAge in June 2026. ## OpenAPI Specs - [openapi](/openapi.json) ## Optional - [OpenAPI Spec](https://docs.proofage.xyz/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.