airbnb_rate_limited
Airbnb is rate-limiting writes for this host. Back off and batch dates.
HTTP 429You have hit a rate limit.
When it fires
Airbnb is rate-limiting writes for this host. It comes from PUT /v1/channels/airbnb/listings/{id}/pricing and /availability, typically when many small writes are sent in a short time. It is Airbnb's limit, separate from your Repull plan limits.
Response shape
Every Repull error follows the same envelope. The code is stable and safe to switch on.
{
"error": {
"code": "airbnb_rate_limited",
"message": "Too many requests",
"retry_after": 30,
"docs_url": "https://repull.dev/docs/errors/airbnb_rate_limited",
"request_id": "req_01J5X7Y8Z9ABCDEF12345678"
}
}How to fix
- Wait `retry_after` seconds when it is present; otherwise back off exponentially with jitter.
- Retry the same request — nothing about it needs to change.
- Send fewer, larger writes: put many dates into one `operations` array (dates and ranges like `2026-07-01:2026-07-14`) instead of one call per date.
Common gotchas
- The
@repull/sdkclient retries 429 responses on its own calls; a plainfetchdoes not. - Parallel writes for listings on the same host share Airbnb's limit. Serialize them per host.
Examples
curl
# One write covering a whole range instead of fourteen single-date calls
curl -X PUT https://api.repull.dev/v1/channels/airbnb/listings/4118/availability \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "calendar", "operations": [{"dates": ["2026-07-01:2026-07-14"], "min_nights": 3}]}'TypeScript
async function putWithBackoff(url: string, body: unknown, maxAttempts = 5) {
for (let attempt = 0; attempt < maxAttempts; attempt++) {
const res = await fetch(url, {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.REPULL_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
})
if (res.status !== 429) return res
const { error } = await res.json()
const waitSeconds = error.retry_after ?? Math.min(60, 2 ** attempt + Math.random())
await new Promise(r => setTimeout(r, waitSeconds * 1000))
}
throw new Error('Airbnb kept rate-limiting this host')
}If you're an AI agent
Airbnb is rate-limiting writes for this host. Wait retry_after seconds (or back off exponentially), then retry the same request. Batch dates into one operations array rather than sending one call per date.
Related
- Error reference — the full table of error codes
- Using Repull from AI agents — patterns for handling errors in agent loops
- Push Availability to Airbnb
- rate_limited
Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.
AI