GET /api/v1/pricesBlockedReplayed token from a scripted client
- Token already used on another call
- No app session behind the request
- Rotating residential proxy exits
Solution
API abuse is the use of your public or private API endpoints in ways they were never meant for, usually by scripts that bypass your web or mobile app to test credentials, pull prices and stock, create accounts or flood servers. Kavra ties each call to a real, assessed session with signed single-use tokens.
GET /api/v1/pricesBlockedReplayed token from a scripted client
Every modern website and mobile app is a thin screen on top of an API. The login button calls POST /login. The product page calls a pricing endpoint. The checkout calls an inventory hold. Those endpoints are public in practice, because anyone can open the browser developer tools or inspect the mobile app and see exactly what is called and with which parameters.
API abuse starts when someone calls those endpoints without your app in the middle. A script can send the same requests your app sends, thousands of times per minute, with none of the friction your interface adds. Nothing about the calls is technically broken: the parameters are valid and the responses are what the endpoint is supposed to return. The abuse is in who is calling, how often, and why.
This makes API abuse different from classic security flaws. Patching code does not fix it. Authentication does not fix it either, because many abused endpoints are meant to be used before login, and attackers happily create accounts to reach the ones behind it.
The same technique, calling your API directly, feeds many different attacks.
| Attack | Endpoints targeted | What the attacker gets |
|---|---|---|
| Credential stuffing | Login, token refresh, password reset | Working username and password pairs, then account takeover |
| Scraping | Search, product, pricing, availability | Your catalog, prices and stock levels, at machine speed |
| Inventory hoarding | Cart, reservation, seat hold | Limited stock held or bought before real customers can reach it |
| Fake account creation | Signup, email and phone verification | Accounts in bulk for spam, bonuses or later abuse |
| Account and data checks | "Email exists", gift card balance, coupon validation | Lists of valid users, cards or codes to exploit |
| Layer-7 floods | Search, login, any expensive query | Slow or unavailable service, often as cover for another attack |
The playbook is the same whether the target is a sportsbook, a retailer or a bank.
The attacker opens your site with developer tools, or unpacks your mobile app, and records every call, header and parameter it makes.
Static API keys, client secrets and signing logic shipped inside a web bundle or app binary are extracted and reused.
An HTTP client replays the requests, tuned to look like a real browser or phone app. For endpoints guarded by client-side checks, a headless browser runs just enough of the page to get a valid token.
Requests are distributed across residential and mobile proxies so that no single IP address stands out, and the pace is tuned just under your rate limits.
Results are collected, and when you change something, the script is updated within hours. The cost of a new version is low, and the payoff repeats every day.
Any business whose app depends on its own API is exposed, which today is almost every business. The cost depends on what the endpoint gives access to. For e-commerce and travel, it is scraped prices and held inventory. For fintech and iGaming, it is login endpoints turned into credential testing machines. For SaaS and AI products, it is expensive compute consumed by scripts.
Look at the requests your API receives, and ask whether your own app could have sent them.
Requests arrive without the page load, app launch or navigation that your real clients always perform first.
Product IDs, dates or usernames walked in order, or the full catalog requested in a pattern no shopper follows.
A request claims to be your iOS app or a desktop browser, but its connection and headers belong to a scripting library.
Even timing, night and day, and sudden jumps in volume right after you release a new price, drop or promotion.
The same API key or session token used from many networks at once, or tokens replayed after they were already spent.
Many searches with no clicks, many carts with no purchases, many login attempts with a high failure rate.
Traditional API controls were built to stop broken or unauthorized requests. Abusive requests are neither.
| Defense | What it checks | Why abuse gets through |
|---|---|---|
| API keys in the client | That the caller has the key | Anyone can extract a key shipped in a web bundle or app |
| Rate limiting per IP | Volume from one address | Proxy pools spread traffic across thousands of IPs |
| Rate limiting per account | Volume from one user | Attackers create or take over many accounts |
| Web application firewall rules | Known attack payloads | Abusive requests are well formed and use valid parameters |
| Schema validation | That the request is well formed | The script sends exactly the format your app sends |
| CAPTCHA | A human at the screen | APIs have no screen, and scripts call the endpoint after the puzzle |
The endpoints behind your web and mobile apps should answer only to your apps, used by real people. The way to enforce that is to make each sensitive call carry proof that a real, assessed session produced it, and to check that proof on the server before doing any work.
How Kavra helps
Kavra assesses the client with 3,000+ data points, binds the result to the action in a signed token, and lets your server check it before the endpoint does any work.
Each token is short-lived and bound to one action. Replays are refused and reported, so scraped or reused tokens are worthless.
Assess API and backend traffic directly from your server, including calls that never pass through a browser.
Your mobile app proves it is your real app on a real device, so emulators and scripted copies of the app stand out.
HTTP clients imitating browsers, headless Chrome and stealth plugins are caught by contradictions between network, device and behavior.
Search crawlers and AI agents that sign their requests are recognized, so you can allow them while blocking impostors using their names.
Layer-7 floods, surges of new devices and shared infrastructure across your endpoints are grouped into one campaign you can act on.
FAQ
Something else? Talk to our team.
An API attack usually exploits a flaw, such as broken authorization or an injection bug, and is fixed in code. API abuse uses endpoints exactly as designed, with valid requests, but at machine scale or for a harmful purpose. Fixing bugs does not stop it; recognizing who is calling does.
Check whether a real, assessed session stands behind each call. Bots that skip your app have no page load, no app launch and no valid single-use token, and their connection often contradicts the browser or app they claim to be. Server-side checks on those signals catch them without any user-facing puzzle.
No. Rate limits per IP or per key only cap volume from one source. Attackers spread requests across proxy pools and many accounts, staying under every limit. Rate limiting is still useful for floods, but it works far better when it counts per actor and device rather than per address.
Not reliably. Anything shipped inside an app binary or web bundle can be extracted with free tools. Treat embedded keys as identifiers, not secrets. Real protection comes from short-lived tokens that prove a genuine app on a genuine device made the request, checked on your server.
Separate the traffic. Partners and documented integrations get their own credentials and server-side checks. Endpoints used by your own web and mobile apps require signed session tokens. Verified good bots and AI agents can be allowed by policy, while unverified clients claiming to be them are flagged.
Partly. A firewall blocks known malicious payloads and some floods, but abusive requests look like normal traffic: valid parameters, correct format, ordinary volume per IP. Stopping them needs evidence about the client and the actor behind it, which a firewall rule does not see.
Run Kavra on your own traffic in observe-only mode. No risk to your customers, and a clear report of the fraud it finds.