Object authorization
Check access to individual records, files, messages, and invoices. A valid account should not grant access to another user's private objects.
API penetration testing checks who can call each endpoint, what they can read or change, and where data flows, including object and function-level authorization. Balhence tests REST and GraphQL APIs by hand, maps relevant findings to the OWASP API Security Top 10, and provides evidence and practical fixes.
We map normal access first, then test the rules across users, roles, organizations, and workflows. A tester checks each finding before it reaches your report.
Check access to individual records, files, messages, and invoices. A valid account should not grant access to another user's private objects.
Check restricted and administrative actions on the server, including older API versions and operations the interface doesn't show.
A caller may be allowed to edit a record without being allowed to change every field. We check writable properties and sensitive response fields.
Follow access through organization switches, invitations, shared resources, and ownership changes. Legitimate sharing belongs in the test model too.
Look at responses, errors, caches, exports, and metadata for information the caller shouldn't receive.
Include gateways and shared caches in the boundary when they handle private API responses. The private response caching field note shows why response reuse needs its own access checks.
Check the rules around approvals, credits, inventory, and other multi-step actions, including repeated or overlapping requests within agreed limits.
Users aren't the only callers. We account for service accounts, webhooks, background jobs, and identity providers when agreeing on what to test.
Check routes, methods, versions, and content types, including filtering, pagination, batch operations, and errors. Equivalent endpoints should enforce the same rules.
Include form-validation and lookup helpers in the inventory, even when their replies are only yes or no. Our server-side validation and data exposure story explains why the server must control the rule behind that answer.
Review schema exposure, resolver permissions, field access, mutations, and subscriptions. Batching and complexity checks stay within agreed resource limits.
Check signatures, event secrets, retries, destinations, and how incoming events change product state. Repeated events should not quietly repeat a sensitive action.
Review redirects, consent, scopes, claims, PKCE, and token handling. Check that each login and authorization flow stays tied to the intended client and session.
Check what keys can access, how they expire or get revoked, and whether credentials stay separate between environments. Review token validation and fallback behavior.
Review machine permissions, client credentials, delegated access, and secrets. A service account still needs a defined purpose and the right tenant context.
We use low-volume, bounded checks for weak rate and resource controls. Volumetric denial-of-service testing needs a separate agreement and a safe method.
Low-volume checks for identity, endpoint, tenant, IP, and token limits, including alternate methods, batch features, and distributed control inconsistencies.
Bounded tests of expensive filters, search, uploads, exports, GraphQL complexity, pagination, asynchronous jobs, and fan-out behavior.
Account, object, invitation, reset, and identifier discovery where response differences or missing friction enable targeted abuse.
Unsafe consumption of user-controlled URLs, files, templates, event fields, and service responses that can shift risk beyond the public API boundary.
The OWASP API Security Top 10 (2023) provides the risk taxonomy. Relevant coverage includes:
Injection is assessed where relevant to the implementation; it is not a separately named category in the 2023 API list. Web and API coverage can be scoped together through web application testing or SaaS testing.
The number of endpoints is only part of the picture. Roles, integrations, workflows, and access details help us plan the test. India-based API teams can use the India VAPT brief to settle remote access, IST coordination and data rules.
| Input | What to provide | Why it changes coverage |
|---|---|---|
| Interfaces | Base URLs, REST versions, GraphQL endpoints, gateways, webhooks, and callback receivers | Equivalent operations may enforce different controls across routes and protocols |
| Documentation | OpenAPI or Swagger files, GraphQL schema access, collections, integration guides, and known inventories | Reliable inventories preserve time for deeper manual scenarios |
| Identities | User roles, tenant types, administrators, partners, service accounts, API keys, and OAuth clients | Authorization testing grows with meaningful identity and tenant combinations |
| Workflows | Approvals, payments, credits, invitations, exports, uploads, provisioning, and irreversible actions | Business impact depends on state, sequence, and ownership rules |
| Integrations | Identity providers, payment systems, storage, queues, third-party APIs, and event consumers | Trust changes when data crosses system and ownership boundaries |
| Environment | Staging or production, test data, monitoring, rate guidance, deployment freeze, and support contacts | Environment readiness affects both safety and productive test time |
A useful inventory connects each interface to its callers and intended data access. This synthetic billing example helps engineers describe the scope without sharing production credentials. List active versions and any shared identity controls alongside these rows.
| Interface and caller | Expected access | Scope input |
|---|---|---|
| REST / customer member | Read that customer's permitted invoice records | OpenAPI inventory, member account, and synthetic invoices |
| GraphQL / customer administrator | View billing fields assigned to the administrative role | Schema, role policy, and representative billing queries |
| Webhook / payment sandbox | Update only the agreed payment workflow | Controlled event source and documented event states |
| Worker / service account | Process assigned jobs within its environment and tenant permissions | Credential lifecycle policy and synthetic queued jobs |
Mark missing documentation, unavailable callers, and excluded providers before estimating effort. The web and API scoping guide helps turn this inventory into an agreed boundary. Use the pentest report checklist to agree how assessed and unavailable areas will be recorded.
Documentation and a conversation with your engineers help establish the expected behavior. We test against that and keep you informed as findings are confirmed.
Confirm the APIs, accounts, sensitive data, workflows, exclusions, and questions you need the test to answer.
Map what each role and organization should be able to access, then record normal requests for comparison.
Test whether permissions and workflow rules hold up when requests change, within the agreed safety limits.
Reproduce each reported issue, document its impact, and explain the fix. Raise urgent issues through the agreed channel during testing.
A stable environment, working test accounts, and clear testing rules help us spend the time on your API.
The signed scope and rules of engagement name the systems, methods, rate limits, evidence handling, contacts, and exclusions.
Include the APIs, caller roles, integrations, and tenant boundaries named in your review. Our SOC 2 penetration testing page explains how scope, findings, and re-test records can support the audit.
Each finding names the affected accounts and resources, explains what we observed, and includes the evidence your engineers need. We separate demonstrated impact from assumptions. See our guide to a useful pentest report for what to look for in a sample.
We'll propose a test window after reviewing the scope and confirming access. These are the details that affect the work.
More roles, tenant types, service accounts, and delegated permissions mean more access relationships to check.
A payment or approval flow takes more time to understand and test than a simple lookup. Background jobs add another step to follow.
Current API inventories, stable schemas, and useful test data reduce time spent on discovery and troubleshooting.
Identity providers, webhooks, storage, queues, partner APIs, and downstream services add distinct trust boundaries and failure modes.
Production safeguards, allowlisting, rate ceilings, maintenance windows, deployments, and unavailable features can shape sequencing and depth.
Tell us who will read the report and what they need from it. Customer reviews, engineering work, and framework mapping can require different detail.
Focus on the API when services, integrations, and access rules are your main concern. Include the web app when browser behavior, sessions, uploads, and user workflows are part of the same risk.
Cover browser behavior, sessions, user journeys, client and server trust, and application-specific business logic.
Explore web application testingAssess the product's tenant boundaries, customer administration, integrations, and shared web and API workflows together.
Explore SaaS testingThe scope planner helps you gather your app details, roles, integrations, and reason for testing before a call.
Build a draft scopeCommon questions about documentation, accounts, production testing, and re-tests.
The work depends on caller identities, tenant models, API versions, workflow depth, integrations, and the quality of available documentation. Endpoint count alone misses these differences. We agree on coverage, effort, deliverables, exclusions, and any re-test window before testing. The API pentest cost and scope guide explains how to compare quotes.
Share the release or customer-review deadline during scoping. The schedule needs room for access setup, testing, report review, engineering fixes, and any agreed re-test. We confirm availability and the test window after understanding the API; a submitted enquiry does not reserve a start date.
Documentation is strongly preferred but not always required. An OpenAPI file, GraphQL schema, collection, or current endpoint inventory reduces discovery time and helps reserve effort for authorization and business-logic testing. Undocumented interfaces should be identified during scoping so the test window reflects the extra discovery work.
Yes, when both interfaces are included in the written scope. Testing considers shared identity and data controls as well as protocol-specific behavior such as resolver authorization, field access, batching, methods, content types, and alternate versions.
Provide controlled identities for each meaningful role and at least two isolated tenants when tenant boundaries are in scope. Service accounts, API keys, OAuth clients, and delegated roles should be included when they represent real callers. Test records should be safe to create, modify, and delete within agreed limits.
Yes, when the asset owner authorizes production testing and the rules of engagement define safe requests, rates, data handling, monitoring, contacts, and stop conditions. Riskier resource-consumption or destructive scenarios remain excluded unless they have separate written approval and a safe test method.
It can include bounded, low-volume checks for missing or inconsistent controls. Capacity, stress, and denial-of-service testing are different activities and are excluded unless separately authorized with safeguards designed for that purpose.
The rules of engagement name the severity threshold, communication channel, recipients, and pause conditions. A qualifying finding is escalated through that channel during testing rather than held until the final report.
When included in the agreement, the bounded re-test checks agreed fixes against the original evidence and relevant control boundaries. The update records whether each item is fixed, partially fixed, not fixed, or not re-tested. New features and unrelated changes need a separate scope.
The redacted evidence-gated workflow story explains why a recorded submission is different from an approved result, and why that distinction matters in an API report. It is an anonymized educational reconstruction with explicit evidence limits, not a claim that a customer's fix has been deployed.
Start with the interfaces, roles, integrations, and deadline. A short description is enough for the first conversation; do not send API keys, tokens, or customer data.