/plaid/connect/complete
Complete Plaid Link, persist credentials, discover accounts synchronously, and return one screen-ready configuration model without polling or secondary account requests. The response includes every discovered feed, eligible GL bank accounts, allowed categories, server-owned suggestions, action capabilities, and typed duplicate issues. Sandbox sessions ignore shared test masks for GL last-four matching; production sessions reserve masks across active and inactive GL accounts. Create and replace require publicToken; update forbids it and reuses stored credentials. Transaction history is never awaited. Retrying the same connectId resumes after the last durable state. PLAID_CONNECT_REQUIRES_NEW_LINK returns the only valid restart mode and any required tenant-scoped connectionId in context. Plaid Link errors such as INVALID_UPDATED_USERNAME are handled in Link before this operation. See https://docs.vrplatform.app/guides/build/banking.
Required scope: bank-connections:manage
Authorization
apiKey API key provided in dashboard
In: header
Request Body
application/json
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://staging.api.vrplatform.app/plaid/connect/complete" \ -H "Content-Type: application/json" \ -d '{ "connectId": "b5b9696e-e02a-4940-9e42-1bad8e6e0913", "linkSessionId": "string" }'{
"connectId": "b5b9696e-e02a-4940-9e42-1bad8e6e0913",
"connection": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"status": "active"
},
"accounts": [
{
"id": "string",
"name": "string",
"uniqueRef": "string",
"status": "active",
"banking": {
"category": "trust",
"currency": "string",
"last4": "string",
"type": "deposit"
}
}
],
"bankAccountCategories": [
"trust"
],
"bankAccounts": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"type": "deposit",
"category": "trust",
"currency": "string",
"lastDigits": "string",
"persistentRef": "string",
"status": "active",
"startDate": "string",
"account": {
"id": "string",
"name": "string",
"uniqueRef": "string",
"status": "active"
},
"configuration": {
"status": "configured",
"canConnect": true,
"canCreateAccount": true,
"suggestedAccount": {
"id": "string",
"name": "string",
"uniqueRef": "string",
"status": "active"
},
"suggestedCategory": "trust",
"suggestedStartDate": "string"
},
"issues": [
{
"code": "deterministicDuplicate",
"severity": "error",
"context": {
"bankAccounts": [
{
"bankAccountId": "5b26b598-a880-4e32-8c41-126aa0206857",
"name": "string",
"lastDigits": "string",
"connection": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string"
},
"account": {
"id": "string",
"name": "string",
"uniqueRef": "string",
"status": "active"
}
}
]
}
}
]
}
],
"status": "awaitingConfiguration",
"sync": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"status": "queued"
}
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "PLAID_CONNECT_REQUIRES_NEW_LINK",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": {
"restartMode": "create"
}
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "string",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}