What we test · APIs
API penetration testing
In one paragraph
API penetration testing is a hands-on attack against the endpoints your apps, partners and integrations call directly, with no user interface in the way. Its main job is to prove whether a caller can reach objects, fields or functions that belong to someone else, because that is where most serious API flaws live. Findings are typically mapped to the OWASP API Security Top 10 (2023 edition, the current one) and proven with real requests and responses.
What the test covers
Object level authorization
Changing an ID in a request to reach another user's order, file or account. OWASP ranks broken object level authorization first in its API list.
Authentication and token handling
How API keys, bearer tokens and OAuth access tokens are issued, scoped, validated and expired, including tokens accepted after logout or across environments.
Property level authorization
Responses that return more fields than the client needs, and update endpoints that accept fields a caller should never set, such as a role or account balance.
Function level authorization
Admin or internal endpoints reachable by ordinary callers simply because they are not linked from the UI.
Sensitive business flows and resource limits
Whether flows like sign-up, coupon redemption or booking can be automated at a scale that hurts the business, and whether expensive calls are rate limited.
Inventory and versions
Old API versions, undocumented endpoints and staging hosts that still answer. These often lack the controls added to the current version.
Outbound calls and third-party data
Endpoints that fetch URLs (SSRF) and code that trusts data returned by partner APIs without validating it.
Why is an API test different from a web app test?
A web interface hides most of what the backend accepts. Buttons only send the fields the designer chose; menus only show the actions a role is meant to have. An API has no such guard rails. Anyone holding a valid token can send any field to any endpoint, in any order, as fast as the server allows. Security that relies on the front end to behave is invisible in a UI test and obvious in an API test.
APIs are also consumed by more than one client. A mobile app, a partner integration and an internal tool might all call the same endpoints with different assumptions. The tester's job is to find the gap between what each client is supposed to do and what the API actually allows.
What does the OWASP API Security Top 10 cover?
The OWASP API Security Top 10 is a community-maintained list of the most critical API risk categories. The current edition was published in 2023. It is a useful map for both testers and buyers, though a good test is not limited to it.
| Category | What a tester checks |
|---|---|
| API1 Broken Object Level Authorization | Can caller A read or change caller B's objects by changing an identifier? |
| API2 Broken Authentication | Can tokens be forged, reused, or obtained without proper credentials? |
| API3 Broken Object Property Level Authorization | Are hidden fields exposed in responses or writable in requests? |
| API4 Unrestricted Resource Consumption | Can expensive calls be made without limits on rate, size or cost? |
| API5 Broken Function Level Authorization | Can a normal caller reach admin or internal functions? |
| API6 Unrestricted Access to Sensitive Business Flows | Can a legitimate flow be automated to cause harm (scalping, spam, abuse)? |
| API7 Server Side Request Forgery | Can the API be made to fetch an internal or attacker-chosen URL? |
| API8 Security Misconfiguration | Are errors, CORS, transport and defaults set safely? |
| API9 Improper Inventory Management | Do old versions or undocumented hosts still answer without current controls? |
| API10 Unsafe Consumption of APIs | Does the API trust data from third-party APIs without validation? |
Notice how many entries are authorization problems at different levels (object, property, function). That pattern is the main reason API testing needs real accounts and a human who understands the data model.
What do you need to provide for an API test?
- A specification. An OpenAPI or Postman collection, GraphQL schema, or at minimum example requests. Testing an undocumented API is possible but slower, and the time goes into discovery rather than attack.
- Credentials at each privilege level. Two accounts per role across two tenants lets the tester prove cross-tenant access rather than infer it.
- Token issuance details. How clients obtain tokens (OAuth flow, API key portal, service accounts) so the tester can examine that path too.
- Rate limit expectations. What limits you intend to enforce, so the tester can confirm them without accidentally overloading production.
- Environment notes. Which base URLs are in scope, and which versions are meant to be retired.
What drives the length of an API test?
Endpoint count matters, but less than people expect. Two hundred simple read endpoints sharing one authorization check can be faster to test than thirty endpoints that each implement their own logic. The real drivers are the number of distinct authorization rules, the number of roles and tenant types, how many API versions are live, whether the API is GraphQL (where one endpoint can expose an entire data graph), and the quality of documentation.
How are API findings proven and fixed?
Every reported issue comes with the exact request a human operator sent, the response that came back, and an explanation of what data or action was reached. API findings are well suited to this kind of evidence because they are easy to replay. In Brexa's Verify stage, the same request is replayed after the fix is deployed, and against sibling endpoints that share the same pattern, before the finding is closed.
Fixes for API authorization flaws tend to be structural: enforce ownership checks in one shared layer instead of in each handler, use allow-lists for writable fields, and retire old versions rather than leaving them running. Teams connected through continuous testing can receive these as reviewed pull requests.
Two ways to engage
Test this surface once with a one-time vulnerability assessment, or keep it under continuous testing with autonomous agents. Either way every finding is reproduced by a person before it reaches you, and closes only after a retest shows the original attack fails.
Frequently asked questions
Is BOLA the same as IDOR?
They describe the same core problem: the server does not check that the caller is allowed to access the specific object requested. IDOR is the older, web-oriented name; BOLA is the term OWASP uses for APIs.
Can you test a GraphQL API?
Yes. GraphQL changes the mechanics (one endpoint, many queries) but not the questions: can a caller read fields or objects they should not, and can a single query cost the server too much.
Do internal or partner-only APIs need testing?
Often yes. Partner keys leak, internal networks get breached, and APIs assumed to be private are frequently reachable from the internet. Inventory checks during the test show which are actually exposed.
References
Guides for this surface
Other surfaces we test
Book a apis assessment.
Book a short scoping call. Nothing is tested until scope and rules of engagement are signed, and every finding comes with proof.