Discover supported capabilities
Read the customer’s current options withGET /v3/customers/{customerId}/capabilities/supported:
directions, method, and accountType. Continue only when availability is available or beta and eligibility.eligible is true. If institutions are returned, select only an ID from that response.
Store the selected data[].id as CAPABILITY_ID. Never copy a capability ID from another customer or environment.
Request the capability
Request the selected option withPOST /v3/customers/{customerId}/capabilities/{capabilityId}:
institutions array only when you need to select from IDs returned by the supported-capability response.
Store data.status as CAPABILITY_STATUS, data.openTaskIds as OPEN_TASK_IDS, and each data.applications[].id in APPLICATION_IDS.
Complete current tasks
List tasks withGET /v3/customers/{customerId}/tasks, select IDs from OPEN_TASK_IDS, then read each current task with GET /v3/customers/{customerId}/tasks/{taskId}:
data.revision and data.requirements. Refetch the task immediately before submitting if either may have changed.
Hosted actions
When the task returnsverificationSessions or tosSessions, store each session id and current url. Send the customer to the returned URL, then read the task again. These are task-scoped actions, not a separate customer-verification lifecycle.
Upload documents
When a requirement requests a document, upload it withPOST /v3/customers/{customerId}/documents:
data.id as DOCUMENT_ID before submitting the answer that references it.
API answers
Submit one complete answer set for the current revision withPOST /v3/customers/{customerId}/tasks/{taskId}/submissions:
Continue when the capability is ready
Read the capability again withGET /v3/customers/{customerId}/capabilities/{capabilityId}: