Skip to content

API Reference

The Athenty REST API lets you integrate identity verification directly into your applications, workflows, and back-office systems — without a manual operator in the loop.

Create verifications

Trigger Smart IDV or Smart KYC verifications programmatically and receive results via webhook.

Read verification status

Retrieve the full assembled status of any verification, including scores and decisions.

Manage clients

Create and retrieve client records from your CRM, case management, or loan origination platform.

Receive webhooks

Subscribe to real-time events for verification milestones. See Webhook Events below.


https://api.athenty.com/v2/api

All API requests must include your organization’s API key in the X-Api-Key header.

Terminal window
curl https://api.athenty.com/v2/api/verifications \
-H "X-Api-Key: YOUR_API_KEY"
  1. Log in to the Athenty admin portal
  2. Go to Settings → General
  3. Scroll to the API Key section
  4. Click Generate Key

Your key is shown once — copy it immediately. You can rotate or revoke it at any time from the same screen.


MethodPathDescription
POST/verificationsCreate a new verification
GET/verificationsList verifications (paginated)
GET/verifications/:idGet a verification with full assembled detail
MethodPathDescription
POST/clientsCreate a new client record
GET/clientsList clients (paginated)
GET/clients/:idGet a client record

Create a new verification. The subject receives an email invitation to complete their verification (if subjectEmail is provided).

Terminal window
curl -X POST https://api.athenty.com/v2/api/verifications \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "idv",
"requirements": ["document", "person", "biometric_face"],
"subjectName": "Jane Smith",
"subjectEmail": "jane@example.com",
"expiresDays": 7
}'
FieldTypeRequiredDescription
type"idv" | "kyc" | "share"Verification type
requirementsstring[]Ordered list of steps to collect. At least one required.
clientIdstring (UUID)Link to an existing client record
matterIdstring (UUID)Link to a matter
subjectNamestringFull name of the subject being verified
subjectEmailstringEmail address — used to send the verification invitation
subjectPhonestringPhone number
expiresDaysinteger (1–90)Days until the link expires (default: 7)
configobjectStep-specific configuration overrides
thirdPartiesarrayThird parties to auto-share with on approval

Available requirements: document, person, location, contact, biometric_face, business, pep_hio, financial, consent, attestation, estate

{
"id": "req_01j9abc123",
"orgId": "org_01j9abc000",
"type": "idv",
"status": "initiated",
"requirements": ["document", "person", "biometric_face"],
"subjectName": "Jane Smith",
"subjectEmail": "jane@example.com",
"expiresDays": 7,
"expiresAt": "2025-04-12T00:00:00.000Z",
"accessToken": "a1b2c3...",
"createdAt": "2025-04-05T12:00:00.000Z"
}

List verifications for your organization. Results are paginated.

Terminal window
curl "https://api.athenty.com/v2/api/verifications?status=pending_review&limit=25" \
-H "X-Api-Key: YOUR_API_KEY"
ParameterTypeDescription
type"idv" | "kyc" | "share"Filter by verification type
statusstringFilter by status. Accepts comma-separated values: initiated,in_progress
clientIdstring (UUID)Filter by client
matterIdstring (UUID)Filter by matter
searchstringSearch by subject name or email
dateFromstring (ISO 8601)Filter verifications created on or after this date
dateTostring (ISO 8601)Filter verifications created on or before this date
sort"created_at" | "updated_at" | "status"Sort order (default: created_at desc)
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)

Available statuses: initiated, in_progress, submitted, pending_review, approved, rejected, canceled, expired

{
"data": [
{
"id": "req_01j9abc123",
"type": "idv",
"status": "pending_review",
"subjectName": "Jane Smith",
"createdAt": "2025-04-05T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"totalPages": 3,
"hasNext": true,
"hasPrev": false
}
}

Get a verification with full assembled detail including step data, scores, and decisions.

Terminal window
curl https://api.athenty.com/v2/api/verifications/req_01j9abc123 \
-H "X-Api-Key: YOUR_API_KEY"

Returns the fully assembled verification object including identity, documents, biometrics, location, score, and review decisions.


Create a new client record in your organization.

Terminal window
curl -X POST https://api.athenty.com/v2/api/clients \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nameFirst": "Jane",
"nameLast": "Smith",
"email": "jane@example.com",
"memberType": "individual",
"country": "CA"
}'
FieldTypeRequiredDescription
nameFirststringFirst name
nameLaststringLast name
businessNamestringBusiness name (for memberType: "business")
emailstringEmail address
phonestringPhone number
externalIdstringYour internal system ID for this client
memberType"individual" | "business"Default: individual
addressLine1string
addressLine2string
citystring
regionstringProvince / state
postalCodestring
countrystring (ISO 3166-1 alpha-2)Default: CA
metadataobjectArbitrary key-value pairs for your own reference
{
"id": "clt_01j9abc456",
"orgId": "org_01j9abc000",
"nameFirst": "Jane",
"nameLast": "Smith",
"email": "jane@example.com",
"memberType": "individual",
"country": "CA",
"active": true,
"requestCount": 0,
"createdAt": "2025-04-05T12:00:00.000Z"
}

List client records for your organization.

Terminal window
curl "https://api.athenty.com/v2/api/clients?search=jane&limit=25" \
-H "X-Api-Key: YOUR_API_KEY"
ParameterTypeDescription
searchstringSearch by name, email, or externalId
memberType"individual" | "business"Filter by member type
active"true" | "false"Filter by active status
sort"name" | "created_at" | "request_count"Sort order
pageintegerPage number
limitintegerResults per page

Get a single client record.

Terminal window
curl https://api.athenty.com/v2/api/clients/clt_01j9abc456 \
-H "X-Api-Key: YOUR_API_KEY"

All list endpoints return a consistent pagination envelope:

{
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"totalPages": 3,
"hasNext": true,
"hasPrev": false
}
}

Use page and limit query parameters to navigate pages.


PlanRate limit
Professional200 requests / minute
Business200 requests / minute
EnterpriseCustom — contact us

Exceeded requests return 429 Too Many Requests with a Retry-After header (seconds until the next window resets).


All errors return a JSON body with code, message, and statusCode:

{
"code": "UNAUTHORIZED",
"message": "Invalid API key.",
"statusCode": 401
}
StatusCodeMeaning
400BAD_REQUESTMalformed request
401UNAUTHORIZEDMissing or invalid API key
402PAYMENT_REQUIREDSubscription inactive
403FORBIDDENPlan does not include API access
404NOT_FOUNDResource not found or does not belong to your organization
422VALIDATION_ERRORRequest body failed validation — errors array included
429RATE_LIMITEDToo many requests
{
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"statusCode": 422,
"errors": [
{ "field": "type", "message": "Required" },
{ "field": "requirements", "message": "Array must contain at least 1 element(s)" }
]
}

Subscribe to real-time events to avoid polling the API. See the Webhooks settings page for full webhook setup, payload structure, and signature verification.

EventTriggered when
verification.createdA new verification is created
verification.submittedThe subject completes all verification steps
verification.approvedAn operator approves the verification
verification.rejectedAn operator rejects the verification
verification.canceledA verification is canceled
verification.expiredA verification reaches its expiry date
client.createdA new client is created
client.updatedA client record is updated
client.deletedA client record is soft-deleted

All webhook payloads are signed with X-Athenty-Signature (HMAC-SHA256). Always verify the signature before processing.


The following legacy URL paths remain active and return identical responses to their canonical counterparts. They are retained so that existing integrations continue to work during the transition window.

Deprecated pathCanonical path
POST /requestsPOST /verifications
GET /requestsGET /verifications
GET /requests/:idGET /verifications/:id

The aliases will be removed no sooner than api@2.19.0. Please update your integrations to use /v2/verifications/* at your next release cycle. You may need to recreate webhook subscriptions that still filter on request.* event names — the verification.* names are the canonical replacements.


Download the machine-readable OpenAPI 3.1 spec for use with Postman, Insomnia, or SDK generation tools:

openapi.yaml


Need help integrating? Contact us or book a demo and our team will walk you through your specific use case.