insufficient_access
The Airbnb account is connected with read-only or messaging access, and this action needs full access. Reconnect with full access.
When it fires
You tried to act on an Airbnb inquiry or booking request — accept or decline a request, pre-approve an inquiry, or send, read or withdraw a special offer — for an Airbnb account connected with read-only or messaging access.
These actions change reservations on Airbnb, which Airbnb allows only under its property_management permission. Only a full-access connection asks for it. The request was refused before anything was sent to Airbnb.
accessType on the error names the access the account is connected with.
Response shape
Every Repull error follows the same envelope. The code is stable and safe to switch on.
{
"error": {
"code": "insufficient_access",
"message": "This Airbnb account is connected with messaging access, which cannot accept or decline booking requests. It needs full access.",
"fix": "Reconnect this Airbnb account with full access — `POST /v1/connect/airbnb` with `\"accessType\": \"full_access\"` — then retry.",
"docs_url": "https://repull.dev/docs/errors/insufficient_access",
"accessType": "messaging",
"request_id": "req_01J5X7Y8Z9ABCDEF12345678"
}
}How to fix
- Stop retrying. The same request is refused until the account is reconnected with full access.
- Start a new Connect session with `POST /v1/connect/airbnb` and `"accessType": "full_access"`, and send the host through the returned `url`.
- Retry the original request once the connection is active. The same `Idempotency-Key` is fine — this refusal is not stored.
Common gotchas
- Only one app per Airbnb account can hold full access. If the host's listings are managed on Airbnb by another PMS, connecting Repull with full access takes that over. Hosts who keep their PMS should keep a messaging connection and answer requests in the PMS.
- Reading still works.
GET /v1/inquiriesandGET /v1/reservations?status=pendinglist inquiries and requests on any connection. - Not the same as connection_reauth_required, which means Airbnb no longer accepts a connection at all (expired or revoked).
Examples
curl
# Accepting a request on a messaging connection
curl -X POST https://api.repull.dev/v1/reservations/236354/accept \
-H "Authorization: Bearer sk_live_YOUR_KEY"
# → 403 insufficient_access
# Recovery: reconnect the Airbnb account with full access
curl -X POST https://api.repull.dev/v1/connect/airbnb \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"accessType": "full_access", "redirectUrl": "https://your-app.com/callback"}'TypeScript
const res = await fetch('https://api.repull.dev/v1/reservations/236354/accept', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.REPULL_API_KEY}` },
})
if (res.status === 403) {
const { error } = await res.json()
if (error.code === 'insufficient_access') {
// The account is connected with error.accessType — ask the host to reconnect with full access
return { needsFullAccess: true, currentAccess: error.accessType }
}
}If you're an AI agent
The Airbnb account is connected with read-only or messaging access, and accepting, declining, pre-approving or special offers need full access. Nothing was sent. Do not retry; tell the user to reconnect Airbnb with POST /v1/connect/airbnb and accessType full_access, then retry.
Related
- Error reference — the full table of error codes
- Using Repull from AI agents — patterns for handling errors in agent loops
- Inquiries & booking requests
- OAuth Connect
- connection_reauth_required
Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.