The API security testing checklist, grouped by who checks it

Covered by automated functional verification

These are behavioral checks: does the API respond correctly to a request it should refuse. They belong in your regular suite and should run on every change.

  • Unauthenticated access is refused. Every protected endpoint, called with no credentials, returns the right rejection rather than data.

  • Authorization is enforced per object. User A cannot read or modify user B's records by changing an identifier in the path. This is the most commonly exploited flaw in real APIs and it is a plain behavioral check.

  • Role boundaries hold. A read-only role cannot write. An expired or revoked token is rejected.

  • Input validation rejects out-of-range values. Boundary cases on every parameter, including the ones nobody documents.

  • Errors do not leak internals. Stack traces, query fragments and internal hostnames stay out of responses.

Needs a scanner or a specialist tool

  • Dependency and library vulnerabilities.

  • Injection classes: SQL, command, template, deserialization.

  • TLS configuration and certificate handling.

  • Known-CVE probing against your stack.

Needs a person

  • Business logic abuse. Ordering a negative quantity, replaying a discount, skipping a step in a workflow that assumed order.

  • Threat modeling, and deciding what the sensitive data actually is.

  • Anything requiring creativity about how someone would misuse your product.

The one people skip

Object-level authorization is the item most often missing and the easiest to check. Create two accounts, have one create a record, and try to read it with the other's token. If that returns data, you have the most common serious API flaw in the industry, and it takes one test to find.

Automating this pays for the whole exercise, because the check has to be repeated for every new endpoint and no human will remember to.

Making the automatable half actually run

Generated API plans include authorization and boundary categories, so these checks exist alongside your functional coverage rather than as a separate security exercise nobody schedules.

Terminal

npm install -g @testsprite/testsprite-cli
testsprite setup

The dashboard covers the same ground for anyone who does not want a local install, and the full command surface lives in the CLI repository.

Mechanics are in the API testing documentation.

The two accounts you should keep permanently

Almost every behavioral item on this list needs two users, and the single cheapest thing you can do is keep a pair of test accounts in every environment rather than creating them per test.

Make them different in the ways your product cares about: different owners, different roles if you have them, ideally different organizations. Then every authorization check becomes a two-line test rather than a setup exercise, and people actually write them.

The version that fails is creating accounts inside each test. It is slower, it leaves data behind, and it means the check depends on your signup flow working, so a broken signup makes every permission test red for the wrong reason. Permanent accounts, seeded once, removes all of that.

Cadence per group

Behavioral checks on every change. Scanners on a schedule and at release. Human review when the threat model changes, which means when you add a new kind of data or a new kind of user.

Connect the repository from the dashboard and runs start from the deployment you already produce, or add a step to your own workflow instead.

How TestSprite covers the automatable third

Generated API plans include authorization and boundary categories, so the behavioral items on this list exist alongside your functional coverage rather than as a separate exercise somebody has to schedule.

That means unauthenticated access, object-level authorization, role boundaries, expired tokens and out-of-range input are checked on every change, against the running service, for every endpoint including the ones added last week. Auto-Authentication keeps sessions alive across a run, Dynamic Variables carry values between calls, Dependency Chains derive execution order from what each case needs and produces, and Auto-Cleanup removes exactly what the run created.

The value is in the cadence rather than the cleverness. These checks are not hard to write; they are hard to remember for the fortieth endpoint. Having them generated and run continuously is what closes the most commonly exploited gap in real APIs without adding a process anyone has to follow.

Is this a replacement for a penetration test?

No. It covers the behavioral half continuously, which reduces what a penetration test has to find and makes the expensive engagement more valuable.

Does TestSprite scan for vulnerabilities?

No. It verifies behavior, including authorization and boundary cases. Vulnerability scanning is a different instrument.

How often should the behavioral checks run?

Every change. New endpoints appear constantly and each one needs the same authorization check as the last.

Where should we start?

Object-level authorization across every endpoint that takes an identifier. Highest hit rate, lowest effort.

Do we need a security team for this?

For threat modeling and business logic abuse, yes. The checklist items above are ordinary engineering work.

The short version

A checklist without owners is a document.

An API security testing checklist splits three ways: behavioral checks you automate and run on every change, scanning that runs on a schedule, and human judgement about abuse. Start with object-level authorization, which is the most common serious flaw and one test to find.