API Pentest

API Penetration Testing

REST and GraphQL APIs against the OWASP API Security Top 10 — BOLA, excess data exposure, mass assignment, rate limiting and injection flaws.

API penetration testing is a manual assessment of REST and GraphQL APIs against the OWASP API Security Top 10. Passeca finds and exploits the flaws unique to APIs — broken object-level authorisation (BOLA), excess data exposure, mass assignment, missing rate limiting and injection — that web-application scanners cannot see, and reports each with evidence, reproduction steps and developer-ready remediation.

What we test

What concrete vulnerabilities do we test for?

Mapped to the OWASP API Security Top 10. Authorisation at the object and property level is where the highest-impact API flaws live.

Broken object-level authorization (BOLA)

The #1 API risk — endpoints that fail to check the caller owns the object in the request, allowing reading or modifying other users' records by ID manipulation.

Broken object-property-level authorization

Endpoints that expose more fields than intended (excess data exposure, such as sensitive fields a client never renders but an attacker reads straight from the response), or permit writes to fields the user should not control (mass assignment of role, account, admin-flag or price fields through auto-binding without allow-lists).

Rate limiting & resource exhaustion

Missing or weak throttling enabling credential stuffing, brute force, enumeration and denial-of-wallet through expensive endpoints.

Injection (SQLi / command / GraphQL)

Untrusted input reaching query, command or GraphQL resolvers — including batch-query abuse and introspection left enabled in production.

Methodology

Methodology for APIs

OWASP API Security Top 10 drives the test classes; PTES provides the engagement framework. Authorisation is tested across every role and object type.

We begin from the API contract — OpenAPI/Swagger when provided, else enumerated — and authenticate as each defined role. For every object-level endpoint we test whether the caller can access, modify or delete objects they do not own (BOLA), and whether the response exposes fields beyond what the role should see.

For GraphQL we additionally test introspection exposure, query depth and complexity limits, alias-based batching attacks, and field-level authorisation. Rate limiting, authentication, session handling and injection are exercised throughout, and business-logic abuse is assessed manually per endpoint.

Example findings

Example findings from real (anonymised) API tests

APIs are where authorisation flaws concentrate. These are representative of what Passeca finds in production.

Critical

BOLA on /accounts/{id} returned any account by enumeration

An authenticated caller could read every account record in the system by incrementing the ID — full customer-data exposure.

Critical

Mass assignment accepted an isAdmin field on profile update

A JSON property in the update body was auto-bound to the user object, granting administrator privileges to any authenticated user.

High

GraphQL introspection enabled in production exposed full schema

An attacker enumerated every type, field and mutation — including administrative mutations not present in the public UI.

High

No rate limiting on /login enabled credential stuffing at scale

The authentication endpoint had no throttling or lockout, allowing high-speed password spraying against the whole user base.

Findings are anonymised and paraphrased. Specific reproduction steps are reserved for the engagement report.

Timeline & cost

How long does an API pentest take, and what does it cost?

Driven by endpoint count, object types, number of roles, and whether the API contract (OpenAPI) is provided.

Engagement sizeTypical durationPrice band
Focused — single REST service3–5 daysPrice on request
Standard — multi-service + GraphQL1–2 weeksPrice on request
Complex — multi-tenant API estate2+ weeksPrice on request

Use the free pentest scoping tool for a precise estimate.

The report

What's in the report?

Documented for developers, API owners, leadership and auditors.

  • Executive summary — API risk in business terms.
  • Graded findings — CVSS and business impact, with the vulnerable endpoint and method.
  • Reproduction requests — exact HTTP requests and responses as evidence.
  • Remediation guidance — authorisation patterns, allow-lists, schema hardening.
  • Compliance mapping — PCI DSS, ISO 27001, SOC 2, DORA, NIS2.
  • Remediation retest — fixes retested within the engagement window.
Compliance

Which compliance requirements does this satisfy?

FrameworkRelevant requirementHow the pentest maps
PCI DSSReq. 11.4Penetration testing of payment APIs in scope
ISO 27001:2022A.8.25 / A.8.29Secure development lifecycle & security testing
SOC 2CC4.1Monitoring of system performance & security
DORAArt. 24–25Digital operational resilience testing
NIS2Art. 21Risk-based security measures, evidenced
FAQ

API pentest, answered

Scoping, methodology, REST vs GraphQL and compliance for API testing.

What is API penetration testing?
API penetration testing is an authorised, manual assessment of REST, GraphQL or other web APIs against the OWASP API Security Top 10. It targets API-specific flaws — broken object-level authorisation (BOLA), excess data exposure, mass assignment, rate-limiting gaps and injection — that web-application scanners routinely miss.
How is API testing different from web application testing?
Web testing focuses on the browser UI and user workflows; API testing targets the programmatic interface directly. APIs concentrate on authorisation at the object and property level (BOLA is unique to APIs), on data exposure in responses, and on the contract between client and server. Many of the highest-impact API flaws are invisible to a UI-only test.
Which APIs do you test — REST and GraphQL?
Both, plus gRPC and other HTTP-based APIs where relevant. For GraphQL we test introspection exposure, query-depth and complexity abuse, batch-query attacks, and field-level authorisation in addition to standard authorisation and injection testing.
Do you need API documentation to test?
It accelerates the engagement but is not required. OpenAPI / Swagger specs let us test comprehensively and faster (grey-box). Without documentation we enumerate endpoints and reverse the contract. Providing at least a token and an endpoint list is the most efficient starting point.
Which compliance requirements does API pentest satisfy?
API penetration testing maps to PCI DSS Requirement 11.4, ISO 27001:2022 A.8.25 and A.8.29, SOC 2 CC4.1, DORA digital operational resilience testing and NIS2 risk-based measures. For APIs that process personal data it also supports GDPR Article 32 (security of processing) evidence.
Can you test APIs in production without disrupting users?
Yes. We test read-heavy endpoints in production under agreed rules of engagement, isolate write and destructive operations to staging mirrors, and coordinate timing. BOLA and authorisation testing is largely read-based and safe; rate-limiting validation uses controlled, low-volume bursts.
How long does an API pentest take?
Duration scales with the number of endpoints and object types. A focused single-service API typically takes 3–5 days; a large multi-service estate with GraphQL takes one to two weeks. The free scoping tool gives an indicative day estimate from your endpoint count.
Scope your API

List your endpoints and roles — get a day estimate

The free pentest scoping tool converts your API surface into a day estimate and price band, then hands to Passeca's offensive-security team for a precise quote.