Skip to main content
API
  • GET /v1/verifications/{id}/document returns more. type (passport, id, driver_license, residence_permit, other; an open enum, other is declared and not yet produced) and issuing_country (ISO 3166-1 alpha-2, XK for Kosovo) are added to document on every workspace. Identity (KYC) workspaces also get middle_name, gender (F, M, X; X is declared and not yet produced), nationality, place_of_birth, issue_date and expiry_date in fields, so the object carries ten fields.
  • Age workspaces keep the four fields (first_name, last_name, date_of_birth, document_number) and add only type and issuing_country. The six KYC-only keys are absent, not null.
  • Dates are YYYY-MM-DD or null. A document that prints only the month or year of expiry reports the last day of that period. A permanent document (for example PERMANENTE) reads as a null expiry_date.
  • Fix: a partially printed birth date is now null instead of a string such as 1968-04.
  • Fix: an empty text field is now null instead of "".
  • Fix: the sex letter of a Mexican voter card or driving licence created before 20 August 2026 17:00 UTC is now null. The document service read it inverted for most women until then.
  • The tenant MCP server returns the same document object from list-verifications with select: ["document"].
  • SDK releases to match: @proofage/node 0.9.0, proofage (Python) 0.4.0, proofage/php-sdk 0.4.0 and proofage/laravel-client 0.9.4. The new keys are optional in their types and type and gender are open, so a value added later does not break them. See Reading results and Data models.
Decisions
  • Two new decline reasons, selfie.liveness.failed and selfie.liveness.unavailable. They appear on workspaces that use the AWS liveness check (beta). See Decision reasons.
API
  • Errors are always JSON. Every error from api.proofage.xyz is JSON, with or without Accept: application/json. Before, a 404 or 403 came back as an HTML page and a validation error as a redirect. A missing verification answers 404 {"message": "Resource not found"}. See Errors.
  • Consent checks the workspace. POST /v1/verifications/{id}/consent answers 403 for a verification of another workspace, like the other verification endpoints.
  • An external_id sent as an array is a 422 validation error, not a 500.
  • The OpenAPI spec lists only the fields integrations send and receive; the browser SDK’s own fields are gone from it.
  • Switching an age workspace from ID documents to facial age estimation needs a minimum age of 18 in the same request, unless the workspace already has 18.
  • SDK releases to match: @proofage/node 0.8.1, proofage (Python) 0.3.1, proofage/php-sdk 0.3.2 and proofage/laravel-client 0.9.2. The fields only the ProofAge widget sends are deprecated in all of them: they still work, and will be removed in the next minor release. The Postman collection now signs every request itself; see Postman collection.
SDKs and API
  • New SDK releases: @proofage/node 0.7 and 0.8, proofage (Python) 0.3, proofage/php-sdk 0.3.0 and 0.3.1, and proofage/laravel-client 0.9.0 and 0.9.1. Every request now names the SDK and its version, so support can see which client sent it.
  • Signed creates only tie a verification to your user. POST /v1/verifications without an HMAC signature now ignores external_id and callback_url. Sign create requests on your backend; see API authentication.
MCP server
  • The MCP server serves the developer documentation and the OpenAPI spec as resources, and a new integration guide tool gives an agent everything it needs to integrate a workspace end to end.
  • get-verification-stats returns the dashboard’s figures.
  • Support specialists can use the MCP server, with the tools their role allows, and can erase a person’s personal data on request.
Console and widget
  • Workspace checks renamed. Creating a workspace is one question, “What should this workspace check?”: Identity (KYC), or Age verification by ID document or Facial age estimation. The age setting is now called Minimum age. API fields are unchanged.
  • Verification links: create a verification by hand from the Verifications page, with a QR code. See Verification links.
  • Dashboard: verification volume and resubmission insights, filterable by workspace.
  • The widget shows your workspace’s branding from the first frame, and takes its language from the link, then the session, then the browser.