Skip to main content
This walkthrough uses synthetic identifiers. Replace every returned ID with the value from your environment. Run requests from your server after receiving an AMLOK environment URL and scoped key.

1. Configure your environment

The base URL excludes /v1. Do not store the key in source control, browser storage, or a mobile application. This flow needs identity:write, documents:write, consent:write, connections:write, connections:read, and banking:read as appropriate.

2. Create the business

Save data.id, illustrated below as biz_example. A created profile is client-asserted; it does not establish registry verification. Request and response schema.

3. Capture real authorization

Obtain the subject’s authorization through your institution’s approved process. Upload the supporting evidence using document upload, then record consent:
Send this body to POST /v1/consents with a new idempotency key for this action. Save data.id as con_example. Recording consent is not a substitute for obtaining it. Consent endpoint.

4. Connect an enabled provider

Use provider capability discovery to select a provider enabled for your institution, country, and resource needs. Then send this body to POST /v1/connections:
Generate and include a cryptographically random state of at least 32 characters in this request, bound to the initiating browser session. Save data.id as cnn_example. Direct the authorized user through the short-lived action.url. The registered redirect_uri is a browser return location, not a webhook destination. Retrieve the connection or consume connection.updated before attempting a sync. Connection endpoint.

5. Synchronize and wait for completion

Send this body to POST /v1/connections/cnn_example/sync:
The response is 202 Accepted with a sync-job ID. Poll GET /v1/sync-jobs/{id} with bounded backoff, or process sync.completed / sync.failed. Treat partial as incomplete coverage and inspect errors and actual date coverage. Sync endpoint.

6. Read the transactions

Follow page.next_cursor until page.has_more is false. Keep the same filters for subsequent pages. Amounts are exact decimal strings; for bank transactions, direction carries the movement direction. Continue with the complete product journeys and connection recovery. Next, implement pagination, safe retries, and webhook verification.