Skip to content

API penetration testing (REST & GraphQL)

An API penetration test checks whether your REST or GraphQL API can be abused to read, change or delete data it should protect. Mr Cyber tests object- and function-level authorisation, authentication, mass assignment, rate limiting and business flows against the OWASP API Security Top 10, manually, at a fixed price, with a free retest.

Fixed price from €2,400 · 3 test days · retest included

See my fixed price

Prefer to talk first? Book a call

Request with customer A’s token GET /api/orders/7731 200 OK expected: 403 { "order": 7731, "customer": "B", "name": "K. Berger" } Customer A Customer B
Signed in as customer A, one changed order number returns customer B’s order.
  • 3–8 test days3 test days in the starting price
  • OWASP API Security Top 10+ 4 more standards
  • Report + debriefwithin 5 business days
  • Free retestwithin 60 days

Who it’s for

  • SaaS and platform companies exposing APIs to customers or partners
  • Mobile apps and single-page apps whose backend is an API
  • Fintech, health and B2B integrations handling sensitive data
  • Teams that need evidence for ISO 27001, SOC 2 or customer audits

What we test

Authorisation

  • Broken object-level authorisation (BOLA / IDOR)
  • Broken function-level authorisation (admin endpoints)
  • Object property-level authorisation, mass assignment

Authentication & tokens

  • JWT validation, algorithm confusion, key handling
  • OAuth 2.0 flows, scopes, refresh tokens
  • API keys, service accounts, machine-to-machine auth

GraphQL specifics

  • Introspection and schema exposure
  • Query depth, batching and alias abuse
  • Resolver-level authorisation

Abuse & resources

  • Rate limiting and resource consumption
  • Sensitive business flows (sign-up, checkout, transfers)
  • Pagination and bulk export abuse

Injection & SSRF

  • SQL/NoSQL and command injection
  • Server-side request forgery via URLs and webhooks
  • Unsafe consumption of third-party APIs

Inventory & configuration

  • Old API versions and undocumented endpoints
  • CORS, error messages, verbose debugging
  • Transport security and headers
See my fixed price

Prefer to talk first? Book a call

How we test your API. Five phases, one tester.

The same senior tester from first scope to retest.

test days in the starting price
3
business days to the report
5
days for the free retest
60

Typically 3–8 testing days, depending on the number of endpoints and roles.

  1. Phase 1

    Scope & start date

    Price and start date online, or a call. NDA, signed scope and written authorisation come before any testing.

    You pick the date
  2. Phase 2

    Endpoint mapping

    Every endpoint, role and token documented.

    Test day 1
  3. Phase 3

    Authorisation testing

    Who may call what, checked by hand per role.

    From test day 2
  4. Phase 4

    Report & debrief

    Audit-ready report and ticket file, then a call.

    Within 5 business days
  5. Phase 5

    Free retest

    Your fixes tested again and confirmed in writing.

    Within 60 days

Methodology & standards

  • OWASP API Security Top 10 (2023)
  • OWASP WSTG
  • OWASP ASVS
  • PTES
  • CVSS 3.1

How we test APIs

APIs are where most of today’s critical findings live: they expose data directly, are called by many clients, and their authorisation logic is easy to get wrong. Our API penetration tests follow the OWASP API Security Top 10 (2023) and go deeper wherever your API has its own logic.

We start from your specification (OpenAPI, GraphQL schema or Postman collection) and build a complete map of operations, parameters and roles. Then we test every operation with every role: can a normal user call admin functions? Can tenant A read or modify tenant B’s objects by changing an ID? Can properties that should be read-only be overwritten?

REST and GraphQL

For GraphQL we additionally test schema exposure, query complexity limits, batching and alias attacks, and whether authorisation is enforced in every resolver, not just at the gateway.

Results your developers can reproduce

Every finding includes the exact request and response, so your team can reproduce it in minutes. Scoring uses CVSS 3.1 (4.0 on request) plus a business-risk rating.

What you get

  • Executive summary for management and auditors
  • Findings per endpoint with requests/responses as evidence
  • CVSS 3.1 scoring plus business-risk rating and remediation priorities
  • Debrief call with your backend team
  • Free retest and updated report

Always included

  • Free retest within 60 days
  • Debrief call with your team
  • NDA, DPA and testing authorisation with the offer
  • Critical findings reported the same day
  • Testing stops at any time on your call
  • Audit-ready report (PDF)
  • Ready-to-import tickets for Jira, ServiceNow, GitLab, Azure DevOps and GitHub
  • Email import for helpdesks like OTRS/Znuny, Zammad, TOPdesk and Matrix42
Pentest report · Admin & Söhne GmbH · MC-2026-015
Risk: High CVSS 3.1 · 7.1 Open · retest included

Other customers’ orders visible by changing the order number

api.admin-soehne.example · /v2/orders/{id}

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N

Description

The shop API returns an order to anyone who is logged in, without checking that the order belongs to them. Order numbers count up one by one, so a customer who changes their own number to the next one sees a stranger’s name, address and purchases. The same request also lets them change that stranger’s delivery address.

Steps to reproduce

  1. Log in to the shop as test customer A and open one of your orders.
  2. In the request the app sends, replace your order number with a number that belongs to test customer B.
  3. The API returns customer B’s full order instead of an error.
GET /v2/orders/100482 HTTP/2
Host: api.admin-soehne.example
Authorization: Bearer <token of customer A>

HTTP/2 200
{"id":100482,"customer":"<customer B>","address":"…"}

Business impact

Anyone who creates a free customer account can read every order ever placed, one after another, and redirect parcels to another address. That is a GDPR data breach, reportable within 72 hours, and a direct path to parcel theft.

Remediation

On the server, check on every request that the logged-in customer owns the order they ask for, and answer “not found” otherwise. Use the same check for every object the API returns (invoices, addresses, returns). Add automated tests that try to read another customer’s data with a second test account.

OWASP API Security Top 10 2023: API1 Broken Object Level Authorization · CWE-639 (Authorization Bypass Through User-Controlled Key)

Fixed price from

€2,400

3 test days · report in 5 business days · retest included

Services exclusively for businesses. · What drives the price

See my fixed price

Prefer to talk first? Book a call

Frequently asked questions

How much does an API penetration test cost?
Fixed prices start at €2,400 for an API with up to 50 functions and one or two roles; GraphQL queries and mutations count as functions. More functions, many roles or multi-tenancy add effort. The quote form shows your binding fixed price instantly, and the written offer (PDF) is sent to you by email right after your request.
What do you need to test our API?
An OpenAPI/Swagger file or GraphQL schema (or a Postman collection), test credentials for each role (ideally in two tenants) and the base URL of the environment to test.
Can you test an API without documentation?
Yes, we can reconstruct endpoints from your web or mobile client. With documentation, more of the budget goes into finding vulnerabilities instead of discovering endpoints.
Will the test overload our API?
No. We agree request rates and test windows upfront. Rate-limit tests are controlled and coordinated with you.
Is the API test included in a web or mobile pentest?
The backend API called by your web or mobile app is part of those tests. A dedicated API pentest goes deeper (every endpoint and every role) and makes sense for public or partner APIs.