Skip to main content

Chat-based reset

The primary reset endpoint. Handles chat-based password reset requests through the V2 orchestrator with streaming SSE progress.
POST /api/chat/reset
Authentication: Required CSRF: Required Request body:
{
  "message": "Reset my Netflix password",
  "serviceId": "optional-service-id",
  "passwordId": "optional-vault-entry-id"
}
Response: Server-Sent Events stream
data: <!-- section:header -->
data: ## Resetting Netflix password
data: <!-- section:progress -->
data: ### Agent
data: Navigating to Netflix password reset page...
data: <!-- section:progress -->
data: Entering email address...
data: <!-- section:gmail -->
data: Waiting for reset email...
data: <!-- section:result -->
data: Password reset complete! New password saved to vault.
The response streams markdown sections that the chat UI renders into interactive components:
Section typeRendered as
headerBold heading with service name
progressExpandable “Agent” accordion with step details
gmailGmail monitoring status indicator
captchaCAPTCHA escalation prompt
passwordNew password confirmation
resultFinal success/failure message

Task-based reset

Create a password reset task with progress tracking.

Create task

POST /api/tasks/reset
Authentication: Required CSRF: Required Rate limit: 5 requests per 5 minutes Request body:
{
  "serviceUrl": "https://netflix.com",
  "email": "user@example.com",
  "passwordId": "optional-vault-entry-id"
}
Response 201 Created:
{
  "taskId": "uuid",
  "status": "pending"
}

Stream task progress

GET /api/tasks/{id}/stream
Authentication: Required Response: Server-Sent Events stream
event: status
data: {"status": "running", "step": "navigating"}

event: screenshot
data: {"url": "data:image/png;base64,..."}

event: status
data: {"status": "waiting_for_email"}

event: status
data: {"status": "completed", "newPassword": "encrypted-new-password"}

Submit OTP

Provide an OTP code for an in-progress reset that requires manual 2FA input.
POST /api/tasks/{id}/otp
Authentication: Required CSRF: Required Request body:
{
  "code": "123456"
}
Response 200 OK:
{
  "accepted": true
}

Job status

Check the status of a reset job.
GET /api/jobs/{id}
Authentication: Required Response 200 OK:
{
  "id": "uuid",
  "status": "completed",
  "service": "Netflix",
  "startedAt": "2026-03-04T12:00:00Z",
  "completedAt": "2026-03-04T12:02:30Z",
  "steps": [
    { "name": "navigate", "status": "completed", "duration": 1200 },
    { "name": "enter_email", "status": "completed", "duration": 800 },
    { "name": "wait_for_email", "status": "completed", "duration": 45000 },
    { "name": "follow_link", "status": "completed", "duration": 2000 },
    { "name": "set_password", "status": "completed", "duration": 1500 }
  ]
}

Sign-in discovery

Discover available sign-in methods for a given service URL.
POST /api/sign-in-discovery
Authentication: Required CSRF: Required Request body:
{
  "url": "https://example.com"
}
Response 200 OK:
{
  "methods": ["email_password", "google_oauth", "passkey"],
  "resetUrl": "https://example.com/forgot-password",
  "signupUrl": "https://example.com/signup"
}