What is API penetration testing?
API penetration testing is an authorized test of the interface itself: the routes, queries, and messages your applications and partners send. The question is what a caller can do with a token, a key, or no credential at all, beyond what the design allows. The answer is a set of confirmed requests, not a list of headers a scanner disliked. It applies to REST, GraphQL, and the older HTTP APIs that are still in production because a customer still calls them.
What we test
Authorization is the center of the work. We look at object-level access, function-level access, and the places where one tenant’s identifier is accepted in another tenant’s session. Authentication, token lifetime, and the difference between a user token and a partner credential are in scope. So are mass assignment, injection into queries the API builds, server-side request forgery through a URL the API fetches, and rate limits that exist on the documentation and not on the route. For GraphQL we look at introspection, field authorization, and mutations that bypass a check the interface claims to enforce.
The OWASP API Security Top 10 is the map we use so a reader can see what was covered. It is a map, not a promise that every numbered item will produce a finding. Where the API sits behind a web client, we still test the calls the client makes, and we will tell you if a web application penetration test is the engagement that matches the way the product is actually used.
You provide credentials for each role, a non-production environment when you have one, and any allow-list our source addresses need. We do not ask for a production database. If a request returns personal data, we keep the smallest excerpt that proves the issue and we stop.
Approach and standards
Grey-box is the usual shape. A specification, a gateway collection, or a few recorded calls is enough to start, together with the accounts that represent real callers. Black-box, with only the public documentation, answers a narrower question and we will say so if that is all we were given. White-box review of the handlers is available when you want the fix pointed at a function.
We follow the same methodology as every other engagement: scope, rules, testing, report, retest. Destructive calls and denial of service are out unless the rules allow them in writing. Unauthenticated scanning of a host you did not name is out even if the API gateway answers on it.
Clients sometimes ask for the results beside PCI DSS, ISO 27001, or a SOC 2 control. We will map a finding to a control you name. The map is not an attestation. If the real question is coverage across many hosts rather than depth on one API, a vulnerability assessment is the better tool.
How long it takes and what affects the price
One API with a handful of roles is often four to eight testing days after the rules are signed, then reporting. A platform with several products, a partner tier, and an admin API is longer. GraphQL with a wide schema takes more time than a small REST surface with the same number of roles, because the authorization question repeats on fields. The contract names the window. We do not publish a rate card.
What moves the price is the number of roles and tenants, whether partner credentials are in scope, how much of the surface is documented, and whether the environment is shared with production traffic. A test that has to be careful of live customers is a different piece of work from a test against an empty staging tenant.
What you receive
The report includes the request that worked, the role it was sent as, what it returned, and what to change. Leadership gets a short account of which trust boundaries failed and which held. You also receive the scope you signed and a retest note after the fixes. The documents are described on the methodology page. We do not invent a sample that pretends to be someone else’s engagement.
When to choose this
Choose this when callers talk to you through an API and the user interface is thin or absent. Choose web application penetration testing when the screens and the session are the product and the API is an implementation detail of those screens. Choose mobile app penetration testing when the client stores data and the question includes the device, not only the server. If the API and the mobile client both matter, we will scope them together rather than pretend one report covers the other. Start with the contact page and say which interface holds the data.
