no_connection

No active connection for the provider in this workspace. A reservation write on a listing managed in a PMS you are no longer connected to answers 409 with this code.

HTTP 404The resource was not found.

When it fires

You called a channel-specific endpoint (e.g. GET /v1/channels/airbnb/listings or GET /v1/channels/booking/properties) but the workspace has not connected an account for that channel yet.

Reservation writes on a PMS listing (HTTP 409)

POST /v1/reservations, PATCH /v1/reservations/{id}, POST /v1/reservations/{id}/cancel and POST /v1/reservations/quote answer this code with 409, not 404, when the listing is managed in a PMS that this workspace is no longer connected to. Nothing was sent to the PMS. The envelope names the PMS in provider and carries reconnect — the call that fixes it. The listing's capabilities.reservations on GET /v1/listings/{id} shows every flag false until you reconnect.

{
  "error": {
    "code": "no_connection",
    "message": "Listing 4118 is managed in Hostaway, but there is no Hostaway connection.",
    "fix": "The listing is managed in Hostaway, but this workspace has no connection to it. Reconnect with `POST /v1/connect/hostaway`, then retry. Nothing was sent to the PMS.",
    "docs_url": "https://repull.dev/docs/errors/no_connection",
    "provider": "hostaway",
    "reconnect": { "method": "POST", "path": "/v1/connect/hostaway" }
  }
}

Response shape

Every Repull error follows the same envelope. The code is stable and safe to switch on.

{
  "error": {
    "code": "no_connection",
    "message": "<human-readable explanation of what went wrong>",
    "docs_url": "https://repull.dev/docs/errors/no_connection"
  }
}

How to fix

  1. Confirm the channel is connected at https://repull.dev/dashboard/connections.
  2. If it is not, start a Connect session: `POST /v1/connect/{provider}` with a `redirectUrl` and walk the user through the returned URL. See the Connect docs.
  3. For credential-based channels (Plum Guide and most PMSes), provide the credentials in the Connect call directly.
  4. Once the connection is `active`, retry the original request.
  5. On a reservation write (409), reconnect the PMS named in `provider` — `reconnect.path` is the call — then retry.

Examples

curl

# Bad: no Airbnb connection in this workspace
curl https://api.repull.dev/v1/channels/airbnb/listings \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

# {
#   "error": {
#     "code": "no_connection",
#     "message": "No active Airbnb connection for this workspace."
#   }
# }

# Recovery: start a Connect session
curl -X POST https://api.repull.dev/v1/connect/airbnb \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"redirectUrl": "https://your-app.com/callback"}'

TypeScript

import { Repull, RepullError } from '@repull/sdk'

const repull = new Repull({ apiKey: process.env.REPULL_API_KEY! })

try {
  await repull.channels.airbnb.listings.list()
} catch (err) {
  if (err instanceof RepullError && err.code === 'no_connection') {
    // Trigger the connect flow in your UI
    const session = await repull.connect.airbnb.create({
      redirectUrl: 'https://your-app.com/callback',
    })
    return { needsConnect: true, redirectTo: session.url }
  }
  throw err
}

If you're an AI agent

The user has not connected this channel or PMS (or the PMS managing this listing was disconnected). Stop, do not retry. Tell the user they need to connect the channel first, and offer them the Connect flow URL (POST /v1/connect/{provider}; on reservation writes the envelope's `reconnect` names it).

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI