(913) 713-7794

Errors, limits and retries

Every error is an RFC 9457 problem with a code, whether to retry, and one sentence telling the assistant what to do next.

Problem codes

Errors are returned as application/problem+json. Read fix and tell the homeowner what it says. Retry only when retryable is true, and only with the same idempotency key unless the fix says to use a new one.

CodeStatusRetryableFix
invalid_request400noFix the fields in invalid_fields and call again with a NEW idempotency key.
contact_required400noAsk the homeowner for their full name, service address, mobile phone and email - PolyJacks prices only with all four.
idempotency_key_required400noSend Idempotency-Key (REST) or idempotency_key (MCP): 8-255 letters, digits, _ or -; a UUID v4 is ideal.
idempotency_mismatch409noThis key was used for a different request. Use a new key for a new request.
request_in_progress409yesThe first call with this key is still running. Retry with the same key in 2 seconds.
not_found404noCheck the ref (quotes start q_, bookings b_). Expired refs cannot be revived - start again with get_quote.
quote_expired410noThis price held until valid_until. Call get_quote again for a fresh one.
doors_closed503noPolyJacks is not taking online requests right now. Give the homeowner the phone number in summary_for_user.
scheduling_by_phone409noOnline booking is paused for this area. PolyJacks will call the homeowner; tell them to expect the call.
window_unavailable409yesThat time was just taken or has passed. Call list_windows again.
pending_exists409noA request is already waiting for this homeowner's OK. Ask them to check their texts and email, or wait 30 minutes.
day_cap409yesThat day has too many unconfirmed requests. Offer another day.
confirmation_channel_offline503noPolyJacks cannot reach the homeowner to confirm right now. Give them handoff_url to book it themselves.
confirm_later409yesPolyJacks texts homeowners only from 8 AM to 8 PM Central. Try after 8 AM, or give them handoff_url.
not_signed409noInstall days are offered only after the homeowner signs their own agreement.
otp_invalid400yesThe code did not match or has expired. Ask the homeowner to read it again, or call find_my_booking for a new code.
permission_required403noThis needs the homeowner's code (find_my_booking) or their standing permission.
human_needed409noThis needs a person. Give the homeowner the phone number in summary_for_user.
rate_limited429yesToo many calls. Wait retry_after_s seconds.
lookup_cap429noThis network has used its price lookups. Give the homeowner the phone number in summary_for_user.
busy_retry503yesPolyJacks is busy. Retry with the same idempotency key after Retry-After.
internal500yesSomething went wrong on our side. Retry once with the same key; if it repeats, give the homeowner the phone number.

Limits

Calls are rate-limited per network. Strict limits return 429 with Retry-After. The phone, email and address limits are soft on the homeowner web doors (they only flag us) but strict for assistants - the rows below show them as strict (agents).

BucketWindowLimitType
ip_read600 s120strict
ip_write3600 s40strict
ipnet_write3600 s600strict
ipnet_read600 s2000strict
ip_upload3600 s40strict
ip_geo60 s60strict
ip_area60 s20strict
ip_preview600 s120strict
ip_hold1800 s2strict
ipnet_hold1800 s50strict
ip_web_hold3600 s4strict
phone_ip_quote86400 s10strict
phone_quote86400 s5strict (agents)
email_quote86400 s5strict (agents)
addr_quote86400 s5strict (agents)
phone_ip_otp3600 s5strict
all_intake3600 s60ceiling
all_web_hold3600 s20ceiling
all_self_book86400 s50ceiling
agent_quote3600 s20ceiling
agent_hold3600 s6ceiling
ip_lookup_life1576800000 s4strict

Idempotency

Every mutating call takes an idempotency key: 8-255 letters, digits, underscore or hyphen (a UUID v4 is ideal). Send it as the Idempotency-Key header (REST) or the idempotency_key argument (MCP). After a network error, retry with the SAME key and you get the same result back - nothing is done twice. A key is honoured for 24 hours.

Last updated 2026-10-17 · PolyJacks · PolyJacks for AI assistants · View as Markdown