airbnb_rejected

Airbnb refused the change as sent. `message` carries Airbnb's reason.

HTTP 422The request was understood but refused as sent. Change it before retrying.

When it fires

A write to Airbnb passed Repull's own validation, was sent to Airbnb, and Airbnb refused it as sent. It comes from PUT /v1/channels/airbnb/listings/{id}/pricing and /availability.

messageis Airbnb's own reason, passed through unchanged — for example a price below the listing minimum, or a setting that conflicts with the listing's pricing model. It is usually specific enough to fix the request directly.

Response shape

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

{
  "error": {
    "code": "airbnb_rejected",
    "message": "daily_price is below the listing minimum",
    "fix": "Airbnb refused this change as sent; `message` carries Airbnb's reason. Correct the request and send it again — resending the same body will be refused again.",
    "docs_url": "https://repull.dev/docs/errors/airbnb_rejected",
    "request_id": "req_01J5X7Y8Z9ABCDEF12345678"
  }
}

How to fix

  1. Read `message` — it is Airbnb's reason for refusing the change.
  2. Change the request to satisfy it (a different value, a different pricing `type`, or fewer dates).
  3. Send the corrected request. Resending the same body is refused again, so do not retry it unchanged.

Common gotchas

  • Different from invalid_params. Both are 422. invalid_params means the body failed validation before anything reached Airbnb, and field names the field. airbnb_rejected means Airbnb itself said no.
  • Settings types (standard, rate-plan, fees) replace the whole object. GET the current pricing first and send it back with your change.

Examples

curl

curl -X PUT https://api.repull.dev/v1/channels/airbnb/listings/4118/pricing \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "calendar", "operations": [{"dates": ["2026-07-01"], "daily_price": 1}]}'
# → 422 airbnb_rejected, message carries Airbnb's reason

TypeScript

const res = await fetch('https://api.repull.dev/v1/channels/airbnb/listings/4118/pricing', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.REPULL_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ type: 'calendar', operations: [{ dates: ['2026-07-01'], daily_price: 1 }] }),
})

if (!res.ok) {
  const { error } = await res.json()
  if (error.code === 'airbnb_rejected') {
    // Surface Airbnb's reason; do not retry the same body
    throw new Error(`Airbnb refused the change: ${error.message}`)
  }
}

If you're an AI agent

Airbnb refused the change as sent. Read error.message (Airbnb's reason), change the request accordingly, then send it again. Never resend the same body unchanged.

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

AI