Skip to main content
See which customers your agents act for, inspect what each one granted, and revoke an agent or a pending invitation whenever you need to.

See who your agents act for

Your customers list holds every customer who has connected an agent to you. Each entry’s id is the party ID you pass as customerPartyId when you act for them, and each entry shows the agents acting for that customer, with the permissions and perTransaction limit in force. Read it with GET /customers.
Filter by status: active for accepted access, pending for unaccepted invitations, or all for both. A pending invitation stays on your invitations list until the customer accepts, you revoke it, it expires, or another invitation connects the same agent and customer.

Inspect one customer

Read a single customer with GET /customers/{customerId} to see exactly which agents, permissions, and limits are in force before you change anything. The customerId is that customer’s party ID.

See pending invitations

Invitations you have sent but nobody has accepted yet live on a separate list. Read it with GET /customers/invitations to confirm what is still open before you revoke.
Each recipient groups its agentInvitations, one adi_* per agent you invited them to. You revoke by that invitationId. You can invite more than one person at a customer before they connect. Once Natural identifies the recipient’s customer, the invitation stays bound to that customer even if the contact later joins another organization. When any one of those invitations connects an agent, Natural cancels the other pending invitations for that agent and customer with cancelReason: CONNECTION_ESTABLISHED. They stay canceled if access is later revoked, so reconnecting requires a fresh invitation. While the connection is active, new invitations for that agent and customer are skipped, no invitation email is sent, and the existing connection is returned in meta.alreadyConnected.

Revoke a pending invitation

Cancel an invitation the recipient has not accepted with DELETE /customers/invitations/{invitationId}, and they can no longer accept it.
The invitation’s status becomes CANCELED with a cancelReason of DEVELOPER_REVOKED. Revoking an already-canceled or already-accepted invitation is a no-op, so retries are safe.

Revoke an agent’s access

Once a customer has accepted, you revoke per agent. DELETE /customers/{customerId}/agents/{agentId} strips one agent’s authority over that customer immediately. customerId is the customer’s party ID, and agentId is the agent you are pulling.
Removing the last agent leaves the customer connection active with no agent grants. This preserves connection-level consent, including subscribed lifecycle webhooks, until either party explicitly disconnects. Revocation is idempotent: pulling an agent that is already gone changes nothing, so it is safe to retry.

Disconnect the customer

Use DELETE /customers/{customerId} to end the whole connection at once from the developer side. Natural’s connection model also permits the customer to disconnect through a customer-facing surface. Natural atomically revokes every active agent grant and the customer relationship, so no agent remains authorized if the request succeeds. A retry returns the already-revoked state and does not emit duplicate revocation events. Disconnect stops new customer activity and new sources: ["connected"] webhook deliveries immediately. Events already delivered under the former connection remain available in event history as audit evidence; events that were never delivered are not exposed through the former connection.