Libretto's stealth browsers help hosted runs avoid bot detection.
residential_proxy when you create a job, browser session, or schedule.country is required and must be a two-letter ISO country code. You can refine US locations with state or zip, target a city with city, or target an ISP/network with asn.12345678910111213141516curl -X POST "https://api.libretto.sh/v1/jobs/create" \ -H "x-api-key: $LIBRETTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "json": { "workflow": "check-eligibility", "params": { "memberId": "12345" }, "residential_proxy": { "country": "US", "state": "CA", "city": "san-francisco" } } }'
country: two-letter country code, such as US.state: two-letter US state code. Only supported with country: "US".city: city slug without spaces.zip: five-digit US ZIP code. Only supported with country: "US"; cannot be combined with city or state.asn: network identifier such as AS7922; cannot be combined with city or state.residential_proxy on /v1/schedules/create or /v1/schedules/update. To clear a schedule's configured proxy location, set residential_proxy to null on /v1/schedules/update.ERR_TUNNEL_CONNECTION_FAILED. For those targets, pass disable_default_proxy: true when you create a job, browser session, or schedule. Libretto Cloud flips the Kernel session to direct egress before any start_url navigation.disable_default_proxy is Kernel-only and mutually exclusive with residential_proxy.123npx libretto cloud jobs create check-eligibility \ --start-url 'https://example.com/dashboard' \ --disable-default-proxy
123// Wait for hosted CAPTCHA solving; see https://libretto.sh/docs/libretto-cloud-hosting/stealth. await page.waitForTimeout(120_000); await page.getByRole("heading", { name: "Dashboard" }).waitFor();