v1Resources/Connections/postExchange a connect handoff code
Exchange a connect handoff code
Redeems the single-use code delivered to your successUrl. Returns the connection id and the email that authorised the connect. Exchange it server-side within 10 minutes; the code is single use.
post
connections:read/api/v1/connections/handoff/exchangeRequest body
codestringrequired
The one-time code from the successUrl redirect. Single use, expires 10 minutes after it is issued.
Response
dataobjectoptional
statusstring (connected | connected_no_listing | error)optional
How the connect settled: connected, connected_no_listing, or error.
platformstring (google | facebook | apple)optional
Which publisher was connected: google, facebook, or apple.
connectionIdstringoptional
The connection id. The same id GET /api/v1/connections lists and POST /api/v1/connections/fetch-listings accepts.
connectedAccountIdstringoptional
Identical to connectionId, under the name some integrations expect. The two are the same value.
boundConnectionIdstringoptional
The location-level connection when a listing was bound, or null.
locationIdstringoptional
The location this connect was for, or null.
clientIdstringoptional
The client this connect was scoped to, or null.
emailstringoptional
The email address that authorised the connect, or null.
errorstringoptional
The error code when status is error, or null.
connectedAtstringoptional
When the connect settled, as an ISO 8601 timestamp.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
404The resource wasn't found, or doesn't belong to your agency.
410The code was already used or has expired. The response body carries the reason, "used" or "expired".
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/connections/handoff/exchange
Your API key
Request body*
{
"data": {
"status": "connected",
"platform": "google",
"connectionId": "conn_789",
"connectedAccountId": "conn_789",
"boundConnectionId": "conn_456",
"locationId": "loc_456",
"clientId": null,
"email": "owner@grovestreetdental.com",
"error": null,
"connectedAt": "2026-09-17T10:00:00.000Z"
}
}