register— create a new account under the identity’s email (Register)login— re-authenticate an existing registrationconnect— log in to an account you already own with the credentials you supplied (Connect)
POST /v1/registrations or POST /v1/connections), then observe it by polling GET /v1/runs/:id or through webhooks.
Lifecycle
blocked is a stop state, not a failure: the run keeps its browser session alive and waits for a human.
What blocks a run
Sente does not attempt to defeat these gates. Hitting one stops the run and hands it to a person — that is deliberate. The blocking gate is the site’s decision to require a human, and Sente honors it.
Two connected-account MFA cases stay autonomous: if a TOTP seed was supplied at connect time, the server computes the 30-second code and submits it (the seed never reaches any model); and if the account’s notification email has been repointed to the Sente identity, an email code lands in the identity’s own inbox and is applied like any other verification email. Everything else — SMS codes, email codes sent to your inbox — needs a human.
What happens when a run blocks
- The run’s status becomes
blocked, witherror.code, andliveViewUrl— an interactive live browser view. Whoever opens it sees the exact page the agent stopped on and can click and type. - You get paged, three ways:
- The
run.blockedwebhook fires, carryingcode,liveViewUrl,actionUrl(a dashboard deep link), andholdExpiresAt. - The org’s operators get an email with the dashboard link (per-user opt-in in the dashboard).
sente watch, if running, fires a desktop notification.
- The
- A human opens the live view (or the run page at app.sente.run), does the one thing needed — solves the CAPTCHA, enters the MFA code, fills the missing field, clicks submit — then resumes:
- The run picks up from where it stopped — same browser, same page — and continues toward
completed.
sente run abort <runId> / runs.abort(id).
Confirm-before-submit
For registrations, passconfirmBeforeSubmit: true (Python: confirm_before_submit=True) and the agent fills the entire signup form but deliberately stops before the final submit. The run blocks with SUBMIT_CONFIRMATION_REQUIRED; a person reviews the filled form in the live view, clicks submit themselves — so a human, not an agent, forms the agreement with the site — and then resumes the run.
Use this whenever you want a human in the loop at the moment of account creation. Registration runs should only target apps whose terms permit them; see Acceptable use.
Observing runs
run.completed and run.failed webhooks fire on terminal states, so a server can react without polling. Payloads and delivery semantics: Webhooks and the runs API reference.
Runs are also rate-limited per org (429 RUN_LIMIT_EXCEEDED past the cap) — see Limits.
Related
Identities and registrations
The objects a run creates and maintains.
Register
Creating a new account at an app, including confirm-before-submit.
Connect
Owner-authorized access to an account you already have.
Webhooks
run.blocked, run.completed, run.failed payloads.
