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.

HTTP 409The resource is not in a state that allows this operation.

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

  1. Do not retry. Airbnb gives the same answer every time.
  2. Check where the inquiry stands with `GET /v1/inquiries?conversation_id={id}&status=all`, and read the conversation.
  3. 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.

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

AI