Skip to main content
A connection gives Sente delegated access to an account you already own: you supply the credentials, Sente logs in with a browser run, keeps the session re-loginable, and vaults the credentials write-only. It is the owner-authorized counterpart to registering a new account. See the Connect guide. A connection is stored as a registration with kind: "connected", so it shares the registration endpoints: sessions, login, and session export live at /v1/registrations/:id/... using the connection’s id.
Known limits, stated up front:
  • SSO-only accounts cannot be connected. If the account signs in only via Google/Okta/etc. or passkeys, there is no username+password for Sente to use.
  • Authenticator (TOTP) 2FA re-logins autonomously — supply totpSeed and the server computes the 30-second code at login. The seed is vaulted encrypted and never reaches any model; only the server-side controller computes codes from it.
  • Email-code MFA needs a human in the interactive live view — unless you repoint the account’s notification email to the identity’s Sente address and pass verifyToIdentity: true, in which case the code lands in Sente’s inbox and is injected automatically.
  • SMS codes always need a human. The run blocks (MFA_REQUIRED) and pages one.

Create a connection

POST /v1/connections Queues a connect run that logs in with the supplied credentials and marks the connection active on success. Re-posting for the same (identity, app origin) re-connects: rotates the vaulted credentials, clears any revoke, and re-drives — this is also how you rotate a password or re-enable a revoked connection.
Response 201:
Errors: (The mirror-image conflict — register against an existing connection — is 409 ALREADY_CONNECTED on POST /v1/registrations.)

List connections

GET /v1/connections — optional ?identityId=.... Returns only kind: "connected" rows, each with latestRun.
Response 200:

Get a connection

GET /v1/connections/:id Returns the connection object. 404 for unknown ids, other orgs’ resources, and for registrations that aren’t connected.

Credentials are write-only

There is no credential read for connections. GET /v1/registrations/:id/credentials on a connected account returns:
with status 403. You already hold your own password; Sente vaults it encrypted and only the server-side run controller ever decrypts it to log in. To rotate a credential, re-post POST /v1/connections with the new one.

Revoke a connection

POST /v1/connections/:id/revoke Withdraws the delegation: the connection becomes disabled — login and credential updates answer 409 REVOKED, and sessions can no longer open (409 NOT_ACTIVE). The vault is kept, so re-enabling is a single POST /v1/connections away.
Response 200:

Delete a connection

DELETE /v1/connections/:id Revoke and purge: the vaulted password and TOTP seed are erased. This is the offboarding guarantee — after delete, Sente holds no secrets for this account. The row itself remains (audit trail), still disabled.
Response: 204 with no body. Use revoke to pause a delegation you expect to restore; use delete when offboarding and Sente should hold nothing.