---
title: "Connect Vxt With Password"
method: POST
path: "/vxt/connect-password"
tags: ["VXT"]
---

# Connect Vxt With Password

`POST /vxt/connect-password`

Connect VXT by signing in with a VXT email/password.

Hits Firebase's signInWithPassword (same endpoint the VXT web app uses),
stores the refresh token on SettingsVXT, and stores the creds themselves
on UserPassCredential so we can silently re-auth if the token dies.

## Request body

- VXTConnectPasswordRequest — Request to connect VXT with the user's VXT-specific email/password. VXT email/password is independent of the user's Google password. We store it so we can silently re-authenticate if the refresh token ever dies, and so future backend-driven UI automation has creds to use.
  - `email` string, required — VXT account email
  - `password` string, required — VXT account password

## Response `200`

Successful Response

- VXTStatus — VXT connection status for the current customer.
  - `connected` boolean, required
  - `status` string, nullable — connected | disconnected | error
  - `connected_at` string, nullable
  - `vxt_email` string, nullable — Email of the VXT user whose refresh token is stored
  - `last_successful_call_at` string, nullable
  - `last_error_msg` string, nullable
  - `webhook_url` string, nullable — Stable webhook URL to paste into VXT Settings → Webhooks (same for all customers)
  - `webhook_token` string, nullable — Per-customer bearer token. Customer pastes this into VXT as 'Bearer <token>' in the Authorization header of the webhook.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/openintake/apis/fastapi.md) · [All operations](https://skmtc.dev/openintake/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openintake/fastapi/revisions/b642b91e0a5c/schema)
