NoneCap solves hCaptcha through any proxy you pass with the solve request, so the reliable way to use it is to give it a sticky residential line and then submit the token from that same line. NoneCap's documentation says that on enterprise sitekeys the token must reach the site from the address the solve used, and that the page load, the solve and the submit should all leave from one exit. The token itself lives about 120 seconds and works once. This guide sets that up with an HProxy Residential Premium line, shows the requests in Python, and explains which NoneCap error codes ask you to change the exit.
NoneCap is a partner of HProxy. Every link to NoneCap on this page goes to its own site and documentation.
What NoneCap does
NoneCap is a hosted hCaptcha solver API. You send the sitekey and the page URL, and it returns a P1_ token, the same string hCaptcha issues after a person passes a challenge. It charges per challenge round, from 1 credit per round, and a failed solve is never charged. A new account gets 1,300 free credits with no card, which is enough to wire up everything in this guide before you spend anything.
Two details of its answer matter later. The solve returns the browser user agent it presented while earning the token, and you send the token with that user agent. Without a proxy in the request, the solve leaves from NoneCap's own pool of addresses.
Why the IP decides whether the token works
hCaptcha scores a visitor before it decides whether to show a puzzle, and NoneCap's explainer on why hCaptcha appears names IP reputation as the heaviest input. Datacenter ranges are challenged almost by default, and the same page warns that heavily resold proxy pools get flagged as well, so the word "residential" on a pool proves little until you test it.
The address counts a second time when the site checks the token. hCaptcha's developer documentation tells site owners to verify every token on their server and recommends sending the visitor's IP with that check, because it improves accuracy. A token expires about 120 seconds after it is issued, and a second use of the same token returns already-seen-response, as NoneCap's token explainer sets out.
Enterprise sitekeys tighten the rule. NoneCap's page on enterprise hCaptcha and rqdata lists the IP binding on enterprise as tight, with the solve IP required to match the submit IP, and reports that in its own testing a token submitted from a different address was refused as invalid-response.
Load the page
through your sticky line
Solve
NoneCap uses the same line
Submit
same line, solve's user agent
Report
refused tokens to /v1/feedback
Set it up in four steps
1. Create a sticky residential line
In the HProxy dashboard, create a Residential Premium line. Set the country the target site serves, and the state or city when the site cares, then choose a sticky session and HTTP or SOCKS5. Premium sticky sessions run from 3 minutes to 24 hours with no limit on how many you open, so pick a length that covers the page load, the solve and the submit with room to spare. The line looks like this, with your own login and password in place of the placeholders:
premium.hproxy.com:10000:YOUR-LOGIN:YOUR-PASSWORD
The login carries the country and the session, so every request you send through this line leaves from the same residential IP until the session ends. NoneCap needs a proxy on a public host, and premium.hproxy.com is one.
2. Load the page through that line
Open the target page through the line and read the sitekey from the hCaptcha widget. Keep the User-Agent of the client that loaded the page. On an enterprise sitekey, also capture the rqdata value from that render: it is single-use and belongs to that one challenge.
import os
import requests
PROXY = "http://YOUR-LOGIN:YOUR-PASSWORD@premium.hproxy.com:10000"
TARGET = "https://target.example/login"
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
site = requests.Session()
site.proxies = {"http": PROXY, "https": PROXY}
site.headers["User-Agent"] = UA
page = site.get(TARGET, timeout=30)
# Read the sitekey (and rqdata on enterprise) from page.text here.
SITEKEY = "SITEKEY-FROM-THE-PAGE"
3. Send the solve with the same proxy
Post the solve to NoneCap with the line from step 1. NoneCap accepts the proxy as a URL with the scheme http, https, socks5, socks5h or socks4. The query ?wait=90 makes the call block until the solve finishes, up to 90 seconds.
solve = requests.post(
"https://api.nonecap.com/v1/solves?wait=90",
headers={"Authorization": f"Bearer {os.environ['NONECAP_KEY']}"},
json={
"type": "hcaptcha", # "hcaptcha_enterprise" on enterprise sitekeys
"sitekey": SITEKEY,
"url": TARGET,
"proxy": PROXY,
"user_agent": UA,
# "rqdata": RQDATA, # enterprise only, fresh for each challenge
},
timeout=100,
).json()
On an enterprise sitekey, set the type to hcaptcha_enterprise and send the rqdata you captured in step 2.
4. Submit from the same line inside two minutes
Put the token into the form's h-captcha-response field and into g-recaptcha-response, which the widget fills with the same value, then submit through the same session. Send it with the user agent that NoneCap returned as your User-Agent header, because some sites refuse a token sent from a different browser version.
site.headers["User-Agent"] = solve["user_agent"] or UA
result = site.post(TARGET, data={
# your form's own fields go here
"h-captcha-response": solve["token"],
"g-recaptcha-response": solve["token"],
}, timeout=30)
if not form_accepted(result): # your own check of the site's answer
requests.post(
"https://api.nonecap.com/v1/feedback",
headers={"Authorization": f"Bearer {os.environ['NONECAP_KEY']}"},
json={"feedback": [{"solve_id": solve["id"], "outcome": "rejected"}]},
timeout=30,
)
The feedback call matters more than it looks. NoneCap describes it as the only signal it gets when a token passes hCaptcha and still fails your target, and it uses those reports to tell you when a proxy session has gone bad.
When NoneCap asks you to change the exit
NoneCap's API reference words several errors in terms of your proxy. Read the code, then change the right thing:
- challenge_not_loaded: hCaptcha served no challenge through your proxy, which NoneCap says usually means the IP has poor reputation. Open a new sticky session to get a new exit. The solve is not charged.
- token_not_granted: the challenge was answered and no token came back. If it repeats, use an exit with better reputation. The solve is not charged.
- proxy_rejected: your proxy refused the connection over the credentials or the source IP. Check the login and the password of the line.
- proxy_tls: the proxy intercepts or rewrites TLS, so hCaptcha cannot be reached through it.
- proxy_stalled: the proxy accepted the connection and did not answer before the solve's deadline. Start a new session.
- proxy_session_refused, an advisory on a solve: the last tokens you reported from that session were rejected. NoneCap says a new session, meaning a new exit, is more likely to pass.
One more case catches people who target local sites. When hCaptcha refuses to serve a challenge before the solve starts, NoneCap names three causes, and one of them is a site that serves only visitors from its own country. The fix there is a proxy located in that country, which is the country setting of your Residential Premium line.
What a solve costs
NoneCap sells prepaid credit packs, and its credits never expire. One challenge round costs at least 1 credit, and one solve is often several rounds, so measure your own rounds per solve on your target before you budget. On the proxy side, every solve reports proxy_bytes, the traffic that left through your line, so you can price both halves from your own numbers. Residential Premium starts at $1.00 per GB.
Why we recommend HProxy for this
We sell the line this guide uses, so judge us by what you get and by the numbers below.
Residential Premium targets country, state, city, ISP and ASN. Its sticky sessions run from 3 minutes to 24 hours, it speaks HTTP, HTTPS and SOCKS5, and it relays UDP over SOCKS5 when you turn that on for a line. You pay per GB, from $1.00 per GB, and the GB balance has no expiry date; our Terms cover the pool behind a product for 30 days from purchase and explain what happens after.
Our free proxy list is checked around the clock, and every row shows its type, latency and a reliability label, so you can see what you are getting before you use it. On October 20, 2026 at 23:53 UTC it held 7,721 live proxies in 117 countries, and every one of them had been re-verified within the previous 30 minutes, 1,489 of them within 5. It is a good place to try the NoneCap API without spending a cent. It is the wrong place for production solving: 42.8 percent of those proxies sat in datacenter ranges, only 438 carried the label stable, and the median latency was 5.9 seconds per request, slow for a loop that has to load the page, solve and submit inside a token's 120 seconds.
Use it where you are allowed
Run this only on sites and accounts you are authorized to automate. NoneCap draws the same line on its homepage: its tokens are for the testing, monitoring and automation you are authorized to run.
Sources
- NoneCap: the product, the free credits and the authorized-use statement.
- NoneCap API reference: the proxy parameter, the request flow, the user agent rule, the feedback call and every error code quoted above.
- NoneCap pricing: the packs in the chart.
- What an hCaptcha token is, enterprise hCaptcha and rqdata and why you get hCaptcha: NoneCap's explainers on the token, the enterprise IP rule and IP reputation.
- hCaptcha developer documentation: server-side verification and the recommended remoteip field.
- HProxy free proxy list API: our own measurement, read on October 20, 2026.
- For hCaptcha in general, our guide How to Solve hCaptcha When Scraping.



