Fallback semantics
When the primary runner fails or is blocked, Banana Peel recovers with the next runners in the plan. With smart routing, recovery allows up to five additional runners after the first pick (set max_fallbacks to change that; 0 pins to the first choice only). Staggered race starts the primary first. You can also pass an explicit array for a fixed ordered chain.
{
"model": "banana-peel",
"input": "Extract the title from https://example.com",
"routing": ["steel", "browserbase", "playwright"]
}Rules
failedandblocked(captcha / bot detection) advance recovery. CAPTCHA and other bot-detection gates (reCAPTCHA, hCaptcha, Turnstile, DataDome, Cloudflare challenge, “prove you are human”) are solved, re-routed, or end blocked with reason bot_challenge. They never become a human text prompt. When a target site asks for MFA, 2FA, or an OTP, the run pauses immediately and asks the user for the code. It does not keep trying other runners. See MFA / OTP.- Smart routing may try up to
max_fallbacksadditional runners after a primary failure (default 5) — not just the next runner in line. - Parallel recovery bills every runner attempt that executes — including losers in the race — at each attempt's usage plus your plan's fee rules.
- An explicit
routingarray still walks runners in order (sequential). - Winner is reported in
banana_peel.runner; non-winners infallback_from. - Every attempt uses the same canonical response schema.
See Smart routing.