AllNewImprovedFixed
New

Arabic comes online (with RTL)

The main site now renders in Arabic with full right-to-left layout, bringing the locale list to seven. If your browser language doesn't match the page you landed on, a thin banner offers to switch you over.

Improved

Sortable columns and a collapsible sidebar

Click a column header in the Dashboard to sort it. Works on Activity, API Keys, and sessions, survives the auto-refresh, and Ctrl-click (Cmd on Mac) clears the choice. The sidebar also collapses to an icon rail when you want the table to breathe.

New

Browser solves interactive Turnstile end-to-end

Sites that wall requests behind an interactive challenge widget (the managed Turnstile pattern is the common one) now come back with rendered HTML when you call Browser with unblocker: true. Verified end-to-end against known-protected sites that were returning the challenge page before.

New

Site and Playground in six languages

Pick your language from the globe in the header. The site and Playground now read in Bulgarian, Chinese, German, Polish, Vietnamese, and English, with locale-aware URLs you can bookmark or share.

Fixed

Locked down cross-origin access on the API

We've tightened cross-origin access so only foura.ai can call the API with credentials. We also hardened an input filter on the metrics endpoint and dropped a development-only fallback secret. Existing integrations don't change.

Fixed

Custom validate rules count toward success

If you've set validate.status.accept on a request, the engine treats an accepted non-200 as a clean success. Activity was still labeling those as failures, which threw off your usage stats. Outcomes now follow your validate verdict, so a 403 you accepted shows up as success, not App Fail.

Improved

Activity labels match the Overview

Activity used to show raw outcome strings like Application_fail while Overview used friendly labels (App Fail) with proper colors. Activity now uses the same labels and colors, so the two views read the same.

Fixed

Non-UTF-8 pages now decode cleanly

If you were scraping Cyrillic, Chinese, Japanese, or other non-UTF-8 pages through Single, the body used to come back as mojibake. We were force-decoding every response as UTF-8 before you saw the raw bytes. Now we read the charset from the response (Content-Type, then <meta charset>, then UTF-8 fallback) and decode it correctly. Thanks, Alexandar Kanchev (Sensika), for reporting this.

Fixed

Caught fake proxies that echo your request back

Some proxies in the wild don't actually forward your request. They echo it back as a plaintext server dump and try to harvest what's inside. We now spot that pattern before the response hits your code, so Single, Browser, and Proxy Finder all return an honest failure (or retry) instead of the garbage.

New

Replay any Activity row in the Playground

Every Activity row with a stored payload is now clickable: the dialog shows the full request and response (pretty-printed, with copy buttons and clear messages for requests that errored before producing a body). Hit 'Open in Playground' to load that exact call back into the form with its archived response already rendered, so you can tweak parameters and rerun without rebuilding it. Stored payloads stick around 24 hours, last 200 per key.

Improved

Every API response carries a request ID

Authenticated calls now come back with an X-Foura-Request-Id header. Stash it in your own logs and you can match any request to its row in Activity, or hand it to support so we can look up exactly what happened on our side.

Improved

Cancel in-flight playground requests

Hit the new Cancel button while a playground request is loading and we abort it cleanly. The panel snaps back to idle with a 'Request canceled' note instead of a scary network error.

New

Reveal API keys after creation

Keys you create from today can be revealed any time, both on the API Keys page and inside the playground's curl reproducer. Click the eye, confirm, and the full key shows for 15 seconds before clearing itself (every reveal is audit-logged). Older keys remain one-time-view; regenerate any old key to make it revealable.

Improved

Proxy Finder rechecks the pool faster

The recheck queue now drains in days instead of weeks. We cut the time to pick each proxy to test from about 2 seconds to about 10 ms, so the pool stays fresher under load. Fewer dead IPs in rotation, and every Single and Proxy Finder call works against a healthier set.

Improved

Proxy pool refreshes faster

After lifting yesterday's per-run cap, the refresh kept stalling whenever one big block of proxies took over the queue. We now spread every batch across distinct subnets, so each run uses the full concurrency budget. The Proxy Finder pool turns over 5-10x faster and stale entries clear within hours.