Highlights
There are two good ways for a check page to end: you get the page behind it, or you don't pay for it. This week Reddit, eBay and sites behind Imperva joined that rule. Top-ups can also buy themselves now, before a long job runs dry. And an "Invalid API key" answer always means the key really is wrong. Most of this is on the changelog already; here's the week in one place.
What's New
Reddit, eBay and Imperva check pages
Reddit answers requests from many addresses with a short JavaScript check, a small page titled just "Reddit", before it shows anything. Proxy Finder and Auto now complete that check on the same exit and hand you the page you asked for. It's billed at the normal page price, like any other page.
eBay sometimes meets a cold request for a listing with its own interruption page, which runs a check in the browser and then moves on to the listing. Browser now waits while it does and returns the listing. But if eBay refuses anyway, you get the check page back, unbilled.
Imperva's challenge page, its incident page and its interruption page are now on our list of known check pages. Single, Browser and Proxy Finder name them in the X-FourA-Check-Page header and don't bill them. Auto treats them as a miss: when a saved session lands on one, it keeps looking for the real page instead of handing you the check.
The site checks reference lists every system we recognise and what each endpoint does with it. If a check page has ever ended up in your data looking like a real answer (we wrote about how that happens), that's three fewer sites where it can.
Top-ups that buy themselves
If your plan sells top-ups, Billing in the Dashboard can now buy them for you. You pick when it kicks in, at 80, 85, 90 or 95% of an allowance used. You also pick how much each one adds and how many times it may run in one billing period. Each purchase goes on your saved card, gets its own invoice and sends you an email.
A charge that fails isn't tried again. The rule pauses, and the dialog shows the date and the reason: a declined card, say, or a bank that wanted you to confirm the payment. Fix the cause and save the rule to switch it back on.
Keep the per-period cap low. It's there so a runaway job can't keep buying overnight, and it isn't meant as a budget. The automatic top-up guide walks through every setting.
"Invalid API key" means the key
A 401 with "Invalid API key" now always means we checked your key and refused it. So your client can stop right there. If we can't confirm a key for a moment, one we've confirmed in the last 10 minutes keeps working. Otherwise you get a 503 that says API key check temporarily unavailable, with Retry-After: 5, and nothing is billed.
That split is easy to act on:
import time
import requests
for attempt in range(3):
r = requests.post(
"https://api.foura.ai/api/single",
headers={"X-API-Key": "pk_live_..."},
json={"url": "https://example.com/data"},
)
if r.status_code == 401:
raise SystemExit(r.json()["error"]) # the key is wrong: fix it, don't retry
if r.status_code == 503 and "Retry-After" in r.headers:
time.sleep(int(r.headers["Retry-After"]))
continue
break
The error reference covers all four kinds of 503 and what each one wants from you.
Docs and blog in Markdown
Add .md to any docs page or blog post, or ask with Accept: text/markdown, and you get clean Markdown an AI assistant can read without the page around it. The home, pricing, API, proxy port and MCP pages have Markdown versions too, and llms.txt links every page by its Markdown address. Each docs page and post also carries a Copy as Markdown button, with Open in ChatGPT and Open in Claude beside it.
(This digest is no exception. Put .md on the end of its URL.)
Smaller fixes
- Leave the signup page open on its "check your email" step and you'll get the one verification email you asked for, with no repeats while the tab waits. Resend email on that step sends another copy when you need it.
- Dashboard Overview lays out its panels for your screen, so every row is full at any width. Traffic and time figures are rounded to fit their cell, with the exact value on hover. Auto's number wears its green on the Requests and Credits cards, and a new account's sample Overview includes Auto.
- Translated docs pages use the same section anchors as the English ones, so a section link and the table of contents land on the right heading in all 13 languages. Headings in translated docs and posts are translated now as well.
- The blog header links to Comparisons, where each post sets FourA next to one named provider on price. The header fits every screen, from a small phone to a wide monitor.
Under the Hood
New proxy port connections now spread across all our servers, the way API calls already do. A server whose proxy port or API stops answering steps out of rotation on its own and rejoins once it's healthy. There's nothing to change in your client or in your proxy username.
Every check page we learn to name is one less 200 your parser has to doubt.