Highlights
One Auto call is now one request on your Dashboard. The Single, Proxy Finder and Browser attempts behind it are still there, listed by name under the call, but your success rate and latency are measured on what you asked for. A refusal by your own plan stopped counting as traffic, Auto labels one as a rate limit, and the Billing page gives every top-up its own line.
What's New
Auto calls count as one request
An Auto call used to appear on your Dashboard as the attempts it made, so one link could look like several requests, some of them failed. Now Overview, Usage & Limits and Activity carry Auto as its own product. Each call is one row with one verdict, and it carries the credits and bytes of its attempts, which sit under it by name. Your rate limit keeps counting attempts, since those are the requests the engines actually run.
Open Activity right after a call and the row says its attempts are still settling. A few seconds later it fills in the attempt list, credits and bytes in place, without a reload, so the row you're watching doesn't jump away.
That matches how Auto is meant to be used. It's a path finder: let it find the rung that works, then replay the session it returns on /api/single or /api/browser and point your volume there. Activity now shows you what each call tried before you commit to a route.
Plan refusals: not traffic, and named on Auto too
A request refused because it hits a limit on your own plan no longer adds to your traffic total. Nothing was fetched, so nothing's counted. A 403 or a 500 from the site still counts, because we carried that answer to you.
When an Auto call runs into one of those limits, Activity shows it as Rate Limited rather than as a failure, and the response carries the same X-FourA-Limit header a direct call returns:
import requests
r = requests.post(
"https://api.foura.ai/api/auto",
headers={"X-API-Key": "pk_live_..."},
json={"url": "https://example.com/data"},
)
limit = r.headers.get("X-FourA-Limit")
if limit:
print("stopped by my plan:", limit)
else:
session = r.json().get("session") # replay on /api/single or /api/browser
One more answer now says what actually happened. A target whose hostname doesn't resolve comes back from Single, Browser, Proxy Finder and Auto the way any unreachable site does: status 0, an error naming the host, and a target outcome (application_fail, see outcomes). Private-network targets still get the 400 refusal.
Traffic, in one unit
We now say what a gigabyte is: 1,073,741,824 bytes, on every allowance and counter. API traffic is counted on the decoded page, because that page is what we produce for you, whether it took a real browser or an extra step the page asked for. Proxy port traffic is counted as it crosses the tunnel, where we carry your connection and touch nothing inside it. Your Dashboard shows the definition next to your traffic figures, and How Your Plan Is Metered has the whole method.
Traffic figures read in gigabytes wherever a gigabyte limit sits beside them, so a number and its ceiling compare directly. The Limits page gained a Traffic panel (total, API, proxy port and premium, each with a bar where your plan sets a ceiling), the API keys table added Traffic and Premium columns, and each product panel on the Overview shows its own traffic.
And a limit you've reached now shows a red At limit, since the next request is refused. A count limit at its ceiling, such as API keys, shows amber: it only stops the next addition.
Billing: four cards and a line per top-up
The Billing page shows the same four cards on every plan: credits or standard traffic first (whichever your plan is sold by), then the other figure, Premium and the Proxy port. Every card has a Buy button. Where your plan doesn't sell that item, the button says so and offers a way to contact us.
On a paid plan sold by credits, the proxy port has its own included gigabytes, and you can buy more from its card. Each top-up gets its own line with what you bought, what's been used and what's left. Usage draws from the top-up that expires first.
The usage emails say more, too. At 95% you get a notice with the day your allowance runs out at this period's pace, set against your reset date, plus the one action that raises it. The 100% email says how many days remain until the reset and, on plans with overage, what the rest is billed at.
MCP 0.7.3
FourA MCP 0.7.3 publishes tool schemas that validate under both JSON Schema draft-07 and 2020-12, so a client with a strict 2020-12 validator can list and call all four tools. What a call accepts hasn't changed. Update @fouradata/mcp, or use the hosted server, which already runs 0.7.3.
Docs and the site
- Pick a result in docs search and the page scrolls to the first place your word appears and highlights it. The top result is selected as soon as results show up, so Enter opens it.
- On phones and tablets, the main site's menu opens the moment your finger lifts and fills the screen in two columns, and every page paints fully styled on its first frame.
Under the Hood
New Proxy Finder capacity now starts with what the existing capacity has already learned about each host. So response times hold steady while it joins, rather than settling in over its first minutes on your traffic.
A number on your Dashboard should lead you to something your job did. If working out whose it was takes a calculator and our docs, it's our job to fix the number, not yours to decode it.