Skip to main content

API Reference (Quick Index)

Base URL: https://api.attestid.io (production). All routes below are prefixed /v1.

Auth column: API key = API-Key + Access-Key-Id; SDK token = Authorization: Bearer <sdk_token>; Dashboard session = Authorization: Bearer <access_token> from registration/login.


Account & company management (/v1/account)

MethodPathAuthPurpose
POST/account/registernoneRegister your company. Returns access_key_id, api_key (shown once), dashboard access_token.
GET/account/meAPI key or SDK tokenGet your authenticated company's details.
POST/account/me/keysAPI key or dashboard sessionIssue an additional API key (test or live). Shown once.
GET/account/me/keysAPI key or dashboard sessionList key prefixes/metadata (no secrets).
DELETE/account/me/keys/{key_id}API key or dashboard sessionRevoke a key irreversible.
DELETE/account/me/data?user_id=...API key or dashboard sessionSchedule erasure of a user's PII/photos within 72h (POPIA/data protection).

See Creating a Company & Getting Your Keys for full request/response bodies.


KYC verification (/v1/kyc)

MethodPathAuthPurpose
POST/kyc/sessionAPI keyExchange your API key for a 10-minute sdk_token bound to one user_id. Call only from your backend.
GET/kyc/liveness-credentialsSDK tokenGet the credentials needed by the client-side liveness detector component.
POST/kyc/startSDK tokenUpload the ID photo (multipart/form-data: user_id, id_type, id_photo, consent_given_at, processing_purpose). Returns verification_id + liveness_session_token. Rate-limited.
POST/kyc/completeSDK tokenComplete verification after liveness passes (verification_id form field). Returns the full result: verified, document, checks, failure_reason. Rate-limited.
GET/kyc/{verification_id}SDK tokenRetrieve a verification result.
GET/kyc/{verification_id}/documentsSDK tokenTime-limited download links (15-minute expiry) for the captured ID photo and selfie. Only your company can access these.

See Authentication & SDK Token Generation for the full sdk_token flow. The JavaScript/React SDK and Flutter SDK both wrap all of these calls for you.


Webhooks (/v1/webhooks)

MethodPathAuthPurpose
POST/webhooks/configureAPI key or SDK tokenSet or update your webhook URL and signing secret.
GET/webhooks/configureAPI key or SDK tokenGet your current webhook URL (secret is never returned, only whether one is set).
DELETE/webhooks/configureAPI key or SDK tokenRemove your webhook URL and secret; stops delivery.
GET/company/webhook/deliveriesDashboard sessionList recent webhook delivery attempts and their status.

See Webhooks for event types, payload shapes, delivery/retry behavior, and how to verify the AttestID-Signature header.


Key/token format cheat sheet

ValueFormatWhere it's used
access_key_idak_live_... / ak_test_...Paired with api_key on every API-key-authenticated request
api_keysk_live_... / sk_test_...API-Key header; shown to you only once, at creation
sdk_tokenShort-lived signed token, 10-minute expiryAuthorization: Bearer header on all /kyc/* SDK calls
access_token (dashboard)Signed session token, 8-hour expiryDashboard login sessions, not used by the SDK

Support

For API keys, onboarding, or technical support: support@brimsage.com