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

# Connect Vxt With Password

`POST /vxt/connect-password`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/vxt/connect-password`
- Auth: none declared

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/openintake-api.md) - [All operations](https://skmtc.dev/openintake/apis/openintake-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openintake/apis/openintake-api/revisions/de90a8dcbc07?raw)
