curl --request DELETE \
--url https://api.entendre.finance/v1/connections/{connection_id} \
--header 'X-API-Key: <api-key>'const options = {method: 'DELETE', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/connections/{connection_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/connections/{connection_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text){
"id": "con_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"provider": "quickbooks",
"auth_method": "oauth",
"name": "Operating bank connection",
"status": "disconnected",
"external_account_id": null,
"legal_entity_ids": [
"le_507f1f77bcf86cd799439011"
],
"source_ids": [],
"capabilities": [
"import_transactions"
],
"created_at": "2026-08-31T12:00:00Z",
"guidance": {
"allowed_actions": [],
"warnings": [],
"version": "v_example"
},
"revocation_error": null,
"retained_resources": [
"transactions"
],
"authorization_attempt": {
"id": "auth_507f1f77bcf86cd799439011",
"status": "succeeded",
"setup_url": null,
"expires_at": null,
"error": null
},
"etag": "\"v_example\""
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "PRECONDITION_FAILED",
"message": "The resource changed. Read it again before you update it.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Disconnect connection
Disconnects a provider account.
curl --request DELETE \
--url https://api.entendre.finance/v1/connections/{connection_id} \
--header 'X-API-Key: <api-key>'const options = {method: 'DELETE', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/connections/{connection_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/connections/{connection_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text){
"id": "con_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"provider": "quickbooks",
"auth_method": "oauth",
"name": "Operating bank connection",
"status": "disconnected",
"external_account_id": null,
"legal_entity_ids": [
"le_507f1f77bcf86cd799439011"
],
"source_ids": [],
"capabilities": [
"import_transactions"
],
"created_at": "2026-08-31T12:00:00Z",
"guidance": {
"allowed_actions": [],
"warnings": [],
"version": "v_example"
},
"revocation_error": null,
"retained_resources": [
"transactions"
],
"authorization_attempt": {
"id": "auth_507f1f77bcf86cd799439011",
"status": "succeeded",
"setup_url": null,
"expires_at": null,
"error": null
},
"etag": "\"v_example\""
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "PRECONDITION_FAILED",
"message": "The resource changed. Read it again before you update it.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}write:gl for a general-ledger connection or write:connections for other connections.
Cleanup and retained data depend on the provider. Imported accounting data is cleaned up in the same way as a disconnect in the Entendre app. If remote revocation fails after the local cleanup, the response shows the state and the revocation error. NetSuite rejects an ambiguous credential configuration with HTTP 409.
Exchange, bank and card connections accept the optional If-Match check that Update connection describes.Authorizations
Your organization API key. See Authentication.
Headers
Optional. The etag from List connections. A stale value returns HTTP 412.
Optional retry key. Check X-Idempotency-Applied before relying on replay protection.
1 - 255Path Parameters
ID of the connection.
1Response
The connection is disconnected. The response shows its state, the cleanup and any revocation error.
Connection ID (con_…).
"con_507f1f77bcf86cd799439011"
Organization ID (org_…).
"org_507f1f77bcf86cd799439011"
Provider identifier.
"quickbooks"
Setup method.
oauth, api_key Connection display name.
Connection status.
pending_setup, active, expired, disconnecting, disconnected, failed Account ID at the provider.
Legal entities of the connection (le_…).
Legal entity ID (le_…).
Sources created from the connection.
Source ID (src_…).
Actions that the connection supports.
Supported action.
ISO 8601 UTC timestamp.
"2026-08-31T12:00:00Z"
Show child attributes
Show child attributes
Strong version of this resource. Send this value, including its quotes, in If-Match when updating it.
^"[^"\r\n]+"$"\"v_example\""
The latest setup attempt.
Show child attributes
Show child attributes
Why the provider did not revoke access. A disabled connection in Entendre does not prove that the provider revoked access.
Resource types that stay after a disconnect.
Resource types retained after disconnect.
Present after bank disconnect. Counts rows removed by this call. Zero is valid for empty or already-cleaned connections.
Show child attributes
Show child attributes
General-ledger connections only: the resource types that the connection can import.