inquiry_no_longer_open
Airbnb says the inquiry or offer already moved on (booked, declined, pre-approved or closed). Re-read the conversation; do not retry.
When it fires
Airbnb refused a pre-approval or special-offer action because the inquiry had already moved on: the guest booked, the inquiry was declined, pre-approved or closed, or the thread is not eligible for an offer. It comes from POST /v1/conversations/{id}/pre-approval, /special-offers, DELETE /v1/conversations/{id}/special-offers/{offerId} and /v1/channels/airbnb/offers.
Withdrawing an offer the guest has already booked also returns this code. At that point there is a booking; cancel it instead if you must.
Response shape
Every Repull error follows the same envelope. The code is stable and safe to switch on.
{
"error": {
"code": "inquiry_no_longer_open",
"message": "This thread is not eligible for a special offer.",
"fix": "The inquiry was already booked, declined, pre-approved or closed. Re-read the conversation — do not retry.",
"docs_url": "https://repull.dev/docs/channels/airbnb/inquiries-and-requests",
"request_id": "req_01J5X7Y8Z9ABCDEF12345678"
}
}How to fix
- Do not retry. Airbnb gives the same answer every time.
- Check where the inquiry stands with `GET /v1/inquiries?conversation_id={id}&status=all`, and read the conversation.
- If the guest booked, you will find the reservation with `GET /v1/reservations`. If not, message the guest.
Examples
curl
curl "https://api.repull.dev/v1/inquiries?conversation_id=164743&status=all" \ -H "Authorization: Bearer sk_live_YOUR_KEY"
TypeScript
if (res.status === 409) {
const { error } = await res.json()
if (error.code === 'inquiry_no_longer_open' || error.code === 'inquiry_expired') {
const inq = await fetch(
'https://api.repull.dev/v1/inquiries?conversation_id=164743&status=all',
{ headers: { Authorization: `Bearer ${process.env.REPULL_API_KEY}` } },
).then((r) => r.json())
console.info('Inquiry is now', inq.data[0]?.status)
}
}If you're an AI agent
Airbnb says the inquiry already moved on (booked, declined, pre-approved or closed). Do not retry. Re-read it with GET /v1/inquiries?conversation_id=…&status=all.
Related
- Error reference — the full table of error codes
- Using Repull from AI agents — patterns for handling errors in agent loops
- Inquiries & booking requests
- inquiry_expired
Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.