Back
DOCS
OverviewQuick StartEmbed WidgetEventsAPI ReferenceStatus PollingDocumentsRetentionBYOSExamples
OverviewQuick StartEmbed WidgetEventsAPI ReferenceStatus PollingDocumentsRetentionBYOSExamples
OverviewQuick StartEmbed WidgetEventsAPI ReferenceStatus PollingDocumentsRetentionBYOSExamples
  1. Home
  2. Docs
  3. API Reference

API Reference

The AgeEvidence API uses REST conventions with JSON request and response bodies. All endpoints require authentication via the X-API-Key header.

Authentication

AgeEvidence issues two types of API keys per client. Each key type has different permissions:

Key TypePrefixUse InPermissions
Publishablepk_verify_Browser / iframeSubmit verifications only
Secretsk_verify_Server-side onlyFull API access (status, records, management)

Pass the key in the X-API-Key header:

X-API-Key: sk_verify_YOUR_SECRET_KEY

Never expose your secret key in browser code. The publishable key is designed for client-side use in the iframe embed. The secret key must only be used in server-side code.

Base URL

https://ageevidence.com

Endpoints

MethodEndpointKeyDescription
POST/v1/verify/submitpk_verify_Submit a verification. Used by the embed widget.
GET/v1/verify/:externalId/statussk_verify_Full verification status with DOB, estimated age, and country.
GET/v1/verify/:externalId/verifiedsk_verify_Quick boolean check. Supports ?level= filter.
GET/v1/verify/:externalId/can-submitsk_verify_Check if the user is eligible to submit a new verification.
GET/v1/records/:externalCreatorIdsk_verify_Get performer record for 2257 compliance.

Status Endpoint Response

GET /v1/verify/:externalId/status returns detailed verification information:

{
  "data": {
    "externalId": "user_abc123",
    "status": "approved",
    "level": "full_age",
    "isVerified": true,
    "verifiedDob": "1995-03-15",
    "estimatedAge": null,
    "documentCountry": "DE",
    "expiresAt": "2027-02-06T00:00:00Z",
    "createdAt": "2026-02-06T10:30:00Z",
    "updatedAt": "2026-02-06T11:15:00Z"
  }
}

Quick Verified Check Response

GET /v1/verify/:externalId/verified returns a minimal boolean result:

{
  "data": {
    "verified": true,
    "level": "full_age",
    "expiresAt": "2027-02-06T00:00:00Z"
  }
}

You can filter by verification level using the ?level= query parameter. For example, /v1/verify/user_123/verified?level=full_kyc checks only for a full KYC verification.

Error Responses

All error responses follow a consistent format:

{
  "error": "Unauthorized",
  "correlationId": "req_abc123"
}

Common HTTP status codes: 400 (bad request), 401 (unauthorized), 403 (forbidden), 404 (not found), 429 (rate limited), 500 (internal error). Error messages are intentionally generic to avoid leaking internal details.

Rate Limits

API requests are rate-limited per IP address:

  • External API -- 100 requests per minute
  • Auth endpoints -- 10 requests per minute

When rate-limited, the API returns 429 Too Many Requests. Implement exponential backoff in your polling logic.

OpenAPI Specification

A full OpenAPI specification is available upon request. Contact us through the contact form to receive the specification document.

© 2026 AgeEvidence. All rights reserved.
DocsPricingPrivacyTermsContact