List PMS and channel connections
Connect Widget · GET /v1/connect
List PMS and channel connections
GET
/v1/connectNote
Every connection in the workspace with its status. A connection that needs the host to act carries action ({ required, reason, message }) and fixUrl, a durable link to the hosted fix screen — e.g. a Smoobu connection still on a legacy single API key (reason reauth_required; Smoobu stops accepting those on October 31, 2026). Use id as X-Account-Id to scope requests to one connection. Each connection also carries import: its latest import run (status running, completed or failed, with stages and counts), or null when none was recorded. A newly connected account is ready once its import is completed; the account.import.completed webhook announces the same moment. History: GET /v1/connections/{id}/imports. Guide: /docs/imports
Request
curl https://api.repull.dev/v1/connect \ -H "Authorization: Bearer $REPULL_API_KEY"
Response
{
"data": [
{
"id": "126", "provider": "hostaway", "status": "active", "externalAccountId": "61234", "createdAt": "2026-08-01T10:00:00Z",
"import": {
"id": "7f0c2a9e-3b1d-4c55-9a8e-2d6f1b0c4e71", "status": "completed", "trigger": "connect", "outcome": "complete", "reason": null,
"startedAt": "2026-08-01T10:00:05Z", "lastActivityAt": "2026-08-01T10:06:41Z", "completedAt": "2026-08-01T10:06:41Z",
"stages": [{ "name": "listings", "expected": 1, "done": 1, "failed": 0 }, { "name": "reservations", "expected": 1, "done": 1, "failed": 0 }],
"counts": { "listings": 12, "reservations": 340 }
}
},
{
"id": "131",
"provider": "smoobu",
"status": "active",
"action": { "required": true, "reason": "reauth_required", "message": "Smoobu stops accepting single API keys on October 31, 2026. Reconnect with an API key and secret." },
"fixUrl": "https://connect.repull.dev/..."
}
]
}AI