API Security Policy Builder
Answer eight questions about your APIs and get a complete API security policy: 17 sections from scope and roles to the review cycle, with every clause written from your answers and each section mapped to the OWASP API Security Top 10 2023. Change an answer and the policy rewrites itself. Download it as Markdown or print it to PDF for free.
Loaded with a sample answer set for Kestrel Pay, a fictional fintech. Saved in your browser only. A template, not legal or compliance advice.
Showing a sample answer set for Kestrel Pay, a fictional fintech. Change any answer and the policy rewrites itself, or .
Question 1
API portfolio
Pick every exposure and style you run.
Exposure
Style
How many APIs
Question 2
Data sensitivity
The most sensitive data any API reads or returns. Leave empty if none.
Question 3
Authentication types
Mechanisms in use today. Only the ones you pick get clauses.
Question 4
Consumers
Who calls your APIs.
Question 5
Outbound calls and dependencies
Drives the SSRF (API7) and third-party (API10) sections.
Your APIs
Consume third-party APIs?
Question 6
Sensitive business flows
Flows that hurt if automated at scale (API6).
Question 7
Platform
Shapes the configuration baseline (API8).
API gateway covers
Hosting
Question 8
Regulatory context (tags only)
Recorded as tags so compliance knows what to map. The policy does not interpret them or claim compliance.
Risk tier
High
sets cadences and lifetimes
Sections
17
purpose to review cycle
Clauses
120
generated from your answers
OWASP 2023
10/10
items with a primary section
The pack adds a standards appendix (token, TLS, rate-limit, egress and log-field standards plus a go-live checklist) and an exception request form, all tuned to your answers.
Kestrel Pay: API Security Policy
Version 1.0 (draft) · 2026-11-02 · Owner: Chief Information Security Officer (CISO) · Tier: High · Tags: PCI DSS, GDPR, PSD2, SOC 2
1. Purpose, scope and rolesGovernance (all items)10 clauses ▸▾
This policy sets the minimum security requirements for every API that Kestrel Pay designs, builds, operates or consumes, so that APIs are inventoried, authenticated, authorised, monitored and tested to a consistent standard aligned with the OWASP API Security Top 10 2023.
- 1.1Scope. The policy applies to all public, partner and internal APIs built with REST, GraphQL and gRPC (between 51 and 200 APIs at the time of writing), in every environment that is reachable by a consumer, including APIs built by contractors and APIs hosted by a provider on Kestrel Pay's behalf. Third-party APIs that Kestrel Pay calls are covered by section 13.
- 1.2The key words MUST, MUST NOT, SHOULD and MAY are used as in RFC 2119. A SHOULD that is not met is recorded with a reason; a MUST that is not met needs an approved exception (section 16).
- 1.3Policy owner: Chief Information Security Officer (CISO). Approves this policy and high-risk exceptions, and reports compliance to leadership.
- 1.4API owner: a named person (not a team alias) for each API, accountable for its inventory record, its specification, remediation of findings and its retirement.
- 1.5Application security: runs design reviews, maintains the standards appendix and the testing programme, and triages findings.
- 1.6Platform / API gateway team: operates the API gateway, the configuration baselines and the shared authentication and rate-limiting components.
- 1.7Security operations: monitors API telemetry, investigates alerts and leads API incident response.
- 1.8Data protection / privacy lead: advises on data minimisation and on APIs that process personal data.
- 1.9Compliance: maintains the mapping between this policy and the regulatory context tagged for Kestrel Pay (PCI DSS, GDPR, PSD2, SOC 2). The tags indicate which frameworks compliance considers; this policy does not interpret or claim to satisfy any of them.
- 1.10Risk tier. Based on the answers that shaped it, this policy is written for a high risk tier. The tier sets the default cadences, lifetimes and deadlines used throughout; Chief Information Security Officer (CISO) may tighten them for individual APIs.
Shaped by: Tier: HighPublic APIsPartner APIsInternal APIs51-200 APIsTag: PCI DSSTag: GDPRTag: PSD2Tag: SOC 2
2. API inventory and ownershipAPI96 clauses ▸▾
You cannot protect an API nobody knows exists. The inventory is the system of record that every other section depends on.
- 2.1Every API MUST be recorded in the API inventory before it receives production traffic. Each record holds: name, API owner, exposure (public, partner, internal), style, environments and hostnames, version(s) in service, authentication method, consumers, the highest data classification it handles, specification location and lifecycle status.
- 2.2Every API MUST have a machine-readable specification kept in source control next to the code: an OpenAPI 3.x description, a GraphQL schema (SDL) and gRPC .proto files. The deployed API MUST match its specification; undocumented endpoints, fields or methods are defects.
- 2.3With between 51 and 200 APIs, the inventory MUST be reconciled automatically against gateway configuration, traffic logs and cloud or DNS records at least monthly. Anything found in traffic but missing from the inventory is treated as a shadow API and assigned an owner within 10 working days.
- 2.4An API without an owner for 30 days is escalated to Chief Information Security Officer (CISO) and scheduled for decommissioning.
- 2.5Each API's data classification records whether it handles personal data, payment data or secrets. That classification drives authentication strength (section 4), data exposure rules (section 7) and logging (section 14).
- 2.6For each partner or third-party consumer, the inventory records which APIs and scopes they can use and which data leaves Kestrel Pay through them.
Shaped by: 51-200 APIsRESTGraphQLgRPCExternal consumers
3. Design and security reviewAPI1-API10 (cross-cutting)6 clauses ▸▾
Most API flaws are design decisions, so security review happens before the code is written and again when the design changes.
- 3.1A new API, or a material change to an existing one, MUST have a design review that includes a threat model covering each OWASP API Security Top 10 2023 risk relevant to the design.
- 3.2Review triggers: new public or partner exposure; a new data classification (especially personal data, payment data or secrets); a new authentication method; a new outbound call capability; a new third-party integration; a new sensitive business flow.
- 3.3Every public or partner API, and every API handling the highest data classifications, MUST have Application Security sign-off before go-live. Internal APIs complete the review checklist and Application Security samples at least one in five.
- 3.4Each operation in the specification MUST declare its security scheme, required scopes or roles, and rate-limit tier, so the reviewer and the gateway read the same source of truth.
- 3.5GraphQL designs MUST state the maximum query depth, the complexity budget, whether introspection is available and where field-level authorisation is enforced.
- 3.6gRPC designs MUST state how callers are authenticated per channel, how per-method authorisation is enforced, and whether server reflection is enabled in any environment.
Shaped by: Tier: HighGraphQLgRPC
4. Authentication standardsAPI213 clauses ▸▾
Authentication answers "who is calling". Each mechanism you use gets its own rules; mechanisms you do not use are not mentioned.
- 4.1Every endpoint MUST require authentication unless it is listed as anonymous in the inventory with a reason (for example a health check or a public catalogue). Anonymous endpoints MUST NOT return personal or confidential data.
- 4.2Internal APIs MUST authenticate their callers too. Network location (a private subnet, a VPN, a service mesh without identity) is not authentication.
- 4.3OAuth 2.0 / OIDC: user-facing clients MUST use the authorization code flow with PKCE; machine clients MUST use client credentials. The implicit and resource owner password credentials grants MUST NOT be used.
- 4.4Resource servers MUST validate the access token's signature, issuer, audience, expiry and scopes on every request. Access tokens MUST expire within 15 minutes. Refresh tokens MUST be rotated on use and revoked on logout and on suspected compromise.
- 4.5Tokens that can initiate payments or change account security settings SHOULD be sender-constrained (DPoP or mutual-TLS-bound tokens) so a stolen token cannot be replayed from another client.
- 4.6JWT: verifiers MUST allowlist the expected signing algorithms and reject "none"; MUST NOT fetch keys from URLs or keys carried in the token header (jku, x5u, jwk) unless the source is allowlisted; MUST check exp and nbf with no more than 60 seconds of clock skew; and MUST validate iss and aud. JWT payloads are encoded, not encrypted, and MUST NOT carry secrets or unnecessary personal data.
- 4.7API keys identify a calling application, not a user. They MUST NOT be the only control protecting endpoints that return personal data, payment data or secrets; combine them with OAuth 2.0 or mutual TLS there.
- 4.8API keys MUST be scoped to the APIs and operations the consumer needs, stored only as salted hashes on the server side, never accepted in URLs or query strings, and rotated at least every 90 days. Revocation MUST take effect within 15 minutes.
- 4.9Mutual TLS: client certificates MUST be issued by a Kestrel Pay-controlled or contractually agreed CA, live no longer than 90 days with automated renewal, and be mapped to a specific client identity (subject or SAN) that authorisation then uses. A valid certificate alone MUST NOT grant access to every API.
- 4.10Endpoints that accept credentials or one-time codes (login, token, password reset, OTP verification) MUST resist brute force and credential stuffing: per-account and per-source throttling, lockout or progressive delay, and alerting.
- 4.11Each partner MUST have its own credentials. Credentials MUST NOT be shared between partners or between a partner and a first-party app.
- 4.12Third-party developers MUST register each application, accept the developer terms and receive per-application credentials with the narrowest scopes their use case needs. Scope requests above the default tier are reviewed.
- 4.13Secrets used by APIs (signing keys, client secrets, API keys, database passwords) MUST live in a secrets manager, never in source code, images or client-side bundles. Secret scanning MUST run on every repository.
Shaped by: OAuth 2.0 / OIDCAPI keysMutual TLSJWT (self-issued or IdP)Internal APIsPartnersThird-party developers
5. Authorisation: object and function levelAPI1, API59 clauses ▸▾
Authorisation answers "may this caller do this, to this object". Missing object-level checks (API1) and function-level checks (API5) are the most common serious API flaws.
- 5.1Object level (API1). Every operation that receives an object identifier (path, query, body or header) MUST check that the authenticated caller may access that specific object, on every request, in the code path that loads it. Identifiers supplied by the client are never proof of ownership.
- 5.2Object identifiers SHOULD be random and non-sequential (for example UUIDs). This is defence in depth only; it does not replace the check.
- 5.3Tenant isolation: tokens and keys issued to a partner or third-party application MUST only reach objects that belong to that tenant or to users who granted that application consent. Cross-tenant access is tested on every release.
- 5.4GraphQL: authorisation MUST be enforced in resolvers for every object and field, including nested objects reached through relationships, not only at the endpoint.
- 5.5gRPC: authorisation MUST be enforced per method (for example in a server interceptor), using the authenticated peer or token identity.
- 5.6Function level (API5). Access is deny-by-default: an operation with no declared role or scope is rejected. Role and scope checks MUST be enforced server-side, in shared middleware or at the gateway, not in client applications.
- 5.7Administrative and privileged functions MUST be separated from consumer functions (separate routes or services, separate scopes) and MUST NOT be reachable by consumer credentials. Changing the HTTP method or path casing MUST NOT bypass a check.
- 5.8Scopes that can move money or change payout details MUST be distinct from read scopes and MUST NOT be granted to third-party applications by default.
- 5.9Every API MUST have automated authorisation tests that call each operation as at least two users of each role and as an unauthenticated caller, and assert the expected allow or deny.
Shaped by: Multi-tenant consumersGraphQLgRPCPayment data
6. Input validation and schema enforcementAPI3, API4, API86 clauses ▸▾
The specification is the contract; requests that break it are rejected before business logic runs.
- 6.1Requests MUST be validated against the published specification at the gateway or in the service framework: types, formats, lengths, ranges, enumerations and required fields.
- 6.2Unknown properties MUST be rejected or ignored, never bound to internal objects. Properties the caller may not set (role, balance, status, owner identifiers, prices) MUST be excluded from writable models. This blocks mass assignment (API3).
- 6.3Request bodies, headers, arrays and uploaded files MUST have maximum sizes (API4). The Content-Type MUST be checked, and parsers MUST be configured safely (for example XML external entity resolution disabled).
- 6.4Injection is not a separate item in the 2023 list but stays in scope: data access MUST use parameterised queries or safe ORM methods, and output MUST be encoded for its context.
- 6.5GraphQL: enforce maximum query depth, a complexity or cost budget, limits on aliases and batched operations, and a timeout. First-party public clients SHOULD use persisted (allowlisted) queries.
- 6.6gRPC: set maximum receive message sizes and deadlines on every method, and validate fields explicitly (proto3 default values cannot distinguish "not sent" from zero or empty).
Shaped by: GatewayGraphQLgRPC
7. Data exposure rulesAPI38 clauses ▸▾
Return only what the caller is allowed to see. Filtering in the client is not a control.
- 7.1Responses MUST be built from explicit response schemas listing the properties each role may read. Serialising whole internal objects or database rows and relying on the client to hide fields MUST NOT be used.
- 7.2Property-level authorisation applies to reads and writes: a caller who may read an object may still be forbidden from reading or changing some of its properties.
- 7.3Personal data: return the minimum needed for the use case, mask by default (for example partial email or phone), and return full values only to roles that need them and only on endpoints flagged in the inventory.
- 7.4Payment data: full card numbers MUST NOT be returned by any API outside the designated cardholder data environment; return a token or the last four digits. Card verification codes MUST NOT be stored or returned after authorisation. Bank account details are masked except on payout-management endpoints.
- 7.5Credentials and secrets MUST NOT be returned by any API after creation. A newly created secret is shown once; afterwards only its identifier, prefix and creation date.
- 7.6Error responses MUST be generic to the caller (no stack traces, SQL, internal hostnames or library versions) and carry a correlation ID that maps to the detailed server-side log.
- 7.7Sensitive values MUST NOT appear in URLs or query strings, because these are logged by proxies and browsers.
- 7.8All APIs MUST use TLS 1.2 or later (TLS 1.3 preferred), including internal service-to-service calls. Public APIs MUST send HSTS. Responses containing sensitive data MUST send Cache-Control: no-store.
Shaped by: Personal data (PII)Payment card / account dataCredentials and secrets
8. Rate limiting and resource consumptionAPI47 clauses ▸▾
Every API call costs CPU, memory, bandwidth or money. Limits stop one caller from exhausting them, by accident or on purpose.
- 8.1Every public and partner API MUST enforce rate limits per consumer identity (token, key or certificate) and, for unauthenticated traffic, per source address. Limits are defined per tier in the standards appendix and declared in the specification.
- 8.2Every API MUST bound the work a single request can cause: maximum page size on list endpoints, maximum records per batch, execution timeouts, and maximum upload size.
- 8.3GraphQL cost limits (section 6) count toward the consumer rate limit, so one expensive query cannot do the work of thousands of cheap ones.
- 8.4Operations that trigger paid third-party actions (SMS, email, voice, identity verification, data enrichment) MUST have per-consumer and global spend caps with alerts.
- 8.5Callers over a limit MUST receive HTTP 429 (or gRPC RESOURCE_EXHAUSTED) with a Retry-After hint. Limit breaches are logged (section 14).
- 8.6Internal APIs MUST set quotas and timeouts between services so one failing or noisy service cannot cascade.
- 8.7Third-party developer applications start on the lowest tier; higher tiers are granted on request with a stated use case.
Shaped by: External exposureGraphQLThird-party developers
9. Sensitive business flowsAPI68 clauses ▸▾
Some flows hurt the business when automated at scale even though each single call is legitimate. Technical rate limits alone do not stop that.
- 9.1The following flows are designated sensitive and MUST be marked in the inventory, each with a documented abuse case and owner: account sign-up; login and account recovery (including OTP); payments and transfers; referral and promo redemption.
- 9.2Each sensitive flow MUST have business-level limits in addition to technical rate limits: per-account and per-device velocity, and alerts on unusual volume or patterns.
- 9.3Sensitive flows exposed publicly MUST include automation detection (device signals, behavioural checks or challenge) proportionate to the abuse case, and SHOULD prefer silent signals over challenges for legitimate users.
- 9.4Payments and transfers: step-up authentication for new payees and for amounts above a defined threshold, idempotency keys so a retried request cannot execute twice, per-account transaction limits, and an out-of-band notification to the account holder.
- 9.5Account sign-up: limit accounts per device and per verified contact, and detect disposable or patterned identities.
- 9.6Login, password reset and OTP: responses MUST NOT reveal whether an account exists, and OTP verification MUST have a small attempt limit per code.
- 9.7Referral and promotions: one redemption per eligible account, rewards held until a qualifying action, and monitoring for clusters of linked accounts.
- 9.8Flow owners review abuse metrics with the fraud or product owner at least quarterly.
Shaped by: Account sign-upLogin, password reset, OTPPayments and transfersReferral or promo redemption
10. Outbound calls and SSRFAPI76 clauses ▸▾
When an API fetches a URL on a caller's behalf, the request starts inside your network. SSRF turns that position against you.
- 10.1Any API that makes a server-side request to a URL influenced by a caller (webhook delivery) MUST send it through a hardened egress component, not an ordinary HTTP client.
- 10.2That component MUST: allow only https (and http only where approved); resolve the hostname and reject destinations in loopback, private (RFC 1918), link-local (169.254.0.0/16, including cloud metadata addresses), carrier-grade NAT, multicast, reserved and the IPv6 equivalents; connect to the validated address so DNS cannot rebind between check and connect; disable redirects or re-validate every hop; and apply connect and read timeouts and a response size cap.
- 10.3The raw response of an outbound fetch MUST NOT be returned to the caller unless the feature requires it; return a status or a sanitised result instead.
- 10.4Webhooks: destinations MUST be validated when registered and again at delivery; payloads MUST be signed (for example HMAC with a per-subscriber secret and a timestamp) so receivers can verify them; retries are bounded with backoff.
- 10.5API workloads MUST run with network egress restricted to the destinations they need, enforced at the network layer, so an application-layer bypass does not reach the internal network.
- 10.6Cloud workloads MUST require the token-based instance metadata service (for example AWS IMDSv2) and SHOULD block metadata access entirely for workloads that do not need it.
Shaped by: Sends webhooks to customer URLsCalls other internal services onlyPublic cloud
11. Configuration baselinesAPI88 clauses ▸▾
Misconfiguration is the gap between a secure design and what is actually deployed.
- 11.1Each component in the API path (gateway, load balancer, web server or runtime, framework, container, cloud account) MUST follow a documented hardening baseline kept as code and checked automatically in the deployment pipeline. Drift from the baseline raises an alert.
- 11.2All public and partner traffic MUST pass through the API gateway. APIs not yet behind it are listed in the inventory with a migration date agreed with the policy owner, and are tracked as exceptions until then.
- 11.3Only the HTTP methods an operation needs are enabled. CORS MUST use an explicit allowlist of origins and MUST NOT combine a wildcard origin with credentials. Security headers are set per the standards appendix.
- 11.4Debug modes, verbose errors, sample apps, default credentials and management endpoints (metrics, admin consoles, framework actuators) MUST be disabled or not reachable from consumer networks in production.
- 11.5GraphQL: introspection and field suggestions MUST be disabled in production unless the schema is deliberately published for the developer programme.
- 11.6gRPC: server reflection MUST be disabled in production.
- 11.7Vulnerabilities in internet-facing API components MUST be fixed within 7 days (critical) and 30 days (high); internal components within twice those times.
- 11.8Non-production environments MUST NOT be reachable from the internet without authentication and MUST NOT hold production personal or payment data.
Shaped by: Some APIsTier: HighGraphQLgRPC
12. Versioning, deprecation and inventoryAPI96 clauses ▸▾
Old versions and forgotten hosts are where attackers find the endpoint that missed the fix.
- 12.1Every API MUST use a documented versioning scheme (REST: a major version in the path or a header; GraphQL: additive evolution with @deprecated fields; gRPC: versioned packages). Breaking changes require a new major version.
- 12.2Consumers MUST receive at least 12 months' notice before a version is retired, through the developer portal or partner contact and a Deprecation or Sunset response header.
- 12.3Security fixes MUST be applied to every version still in service. If a fix cannot be backported, the old version is retired on an expedited schedule approved by the policy owner.
- 12.4Retired versions MUST be removed from the gateway, DNS, load balancers and code, not just from documentation. The inventory records the retirement date.
- 12.5Discovery of undocumented APIs (traffic analysis, DNS and certificate records, cloud resource inventory, code search) MUST run at least monthly, and its results feed section 2.
- 12.6Data flows to partners and third parties are documented per API and version, so a retirement or an incident shows who is affected.
Shaped by: Third-party developersRESTGraphQLgRPC
13. Consuming third-party APIsAPI106 clauses ▸▾
Data from a third-party API is input from outside the trust boundary, even when the vendor is trusted.
- 13.1Before integrating a third-party API, the owner MUST complete vendor due diligence proportionate to the data shared (stricter where the integration involves personal data, payment data or secrets), and record the integration in the inventory.
- 13.2Responses MUST be treated as untrusted: validated against an expected schema, size-limited, and sanitised or encoded before they are stored, rendered or used in queries.
- 13.3Calls MUST use TLS with certificate validation enabled. Redirects from a third party MUST NOT be followed blindly; follow only to allowlisted hosts.
- 13.4Calls MUST have timeouts, bounded retries and circuit breakers so a slow or failing provider does not exhaust our resources.
- 13.5Credentials for third-party APIs MUST be stored in the secrets manager, scoped to the minimum, and rotated on the provider's schedule or on staff change, whichever is sooner.
- 13.6Send the minimum data the provider needs. Integrations are reviewed when the provider changes ownership, terms or data location.
Shaped by: Consumes third-party APIs
14. Logging and monitoringAPI1, API2, API4, API6, API96 clauses ▸▾
Telemetry turns the controls above into something you can see working, and detects abuse that slips past them.
- 14.1APIs MUST log: authentication successes and failures, authorisation denials, validation failures, rate-limit and quota events, administrative actions, sensitive flow events, and configuration changes. Each event carries timestamp, correlation ID, consumer ID, user ID (pseudonymous where possible), operation, object ID where relevant, source address and result.
- 14.2Logs MUST NOT contain passwords, tokens, API keys, session identifiers, full card numbers or card verification codes; personal data is minimised or masked.
- 14.3API logs MUST be sent to the central logging platform, protected from tampering and kept for at least 12 months, or longer where compliance confirms a tagged framework requires it.
- 14.4Security operations MUST alert on: one consumer touching an unusual number of distinct object IDs or receiving many authorisation denials (possible BOLA probing); credential-stuffing and token-guessing patterns; spikes in errors or 429s; traffic to endpoints or hosts not in the inventory; and anomalies in sensitive flows.
- 14.5Partner and third-party usage is reviewed per consumer each month for unusual volume, new scopes in use and access outside agreed hours or regions.
- 14.6API incidents follow the incident response plan; API owners MUST be able to revoke a consumer's credentials and block a version within one hour.
Shaped by: Tier: HighPersonal data (PII)Payment card / account dataCredentials and secretsExternal consumers
15. TestingAPI1-API10 (cross-cutting)7 clauses ▸▾
Each control above is verified by at least one kind of test. Automated tests catch regressions; people catch logic flaws.
- 15.1SAST, dependency (SCA) and secret scanning MUST run on every merge to an API repository. Critical and high findings block the merge or need an exception.
- 15.2DAST MUST run authenticated, driven by the API specification, against a production-like environment on every release and at least weekly.
- 15.3Specification-driven API fuzzing MUST run on every release of a public or partner API, including GraphQL depth, alias and batching cases and malformed and oversized protobuf messages.
- 15.4Authorisation tests from section 5 (multi-user, multi-role, cross-tenant) MUST run in CI for every API.
- 15.5Penetration testing by qualified testers, internal or external, at least every 12 months, and before any new public or partner API or major version goes live. Scope MUST cover the OWASP API Security Top 10 2023 and the sensitive business flows in section 9.
- 15.6Findings are fixed within the deadlines in section 11 (7 days critical, 30 days high). Retests confirm the fix.
- 15.7Testing only targets systems the organisation owns or is authorised to test.
Shaped by: Tier: HighGraphQLgRPC
16. ExceptionsGovernance (all items)5 clauses ▸▾
Exceptions are allowed, temporary and visible.
- 16.1An exception request MUST state: the clause, the API(s), the reason, the compensating controls, the residual risk rating, the API owner and an expiry date.
- 16.2Exceptions expire after at most 3 months and are renewed only after a fresh review. Expired exceptions are reported to Chief Information Security Officer (CISO).
- 16.3Approval: Application Security for low and medium residual risk; Chief Information Security Officer (CISO) for high residual risk or any API handling personal data, payment data or secrets.
- 16.4No exception is granted for: accepting unsigned or "none"-algorithm tokens; disabling TLS certificate validation; unauthenticated access to personal data, payment data or secrets; or storing secrets in source code.
- 16.5All exceptions are kept in one register that is reviewed at least quarterly.
Shaped by: Tier: HighPersonal data (PII)Payment card / account dataCredentials and secrets
17. Review cycleGovernance (all items)3 clauses ▸▾
A policy that is not reviewed drifts away from the APIs it governs.
- 17.1Chief Information Security Officer (CISO) reviews this policy every 12 months, plus a mid-year check of metrics, and also after: a significant API security incident; a major architecture change (for example a new gateway or API style); a change to the regulatory context tags; or a new edition of the OWASP API Security Top 10.
- 17.2The review uses these measures: share of APIs in the inventory with a named owner and a current specification; share of external APIs behind the gateway; shadow APIs found per discovery run; open findings past deadline; open and expired exceptions; and the date of the last penetration test per external API.
- 17.3Changes are recorded in the version history with the date, the author and a summary, and communicated to API owners.
Shaped by: Tier: HighTag: PCI DSSTag: GDPRTag: PSD2Tag: SOC 2
A starting template: review it with your security, legal and compliance owners before adoption. Cadences and limits are internal-policy defaults, not regulatory requirements.
TL;DRWhat this builder does
5 points
- Answer eight short questions about your APIs: exposure, style and count, data sensitivity, authentication, consumers, outbound calls, sensitive business flows, platform and regulatory tags.
- Get a complete API security policy in 17 sections, from purpose and roles to the review cycle, where every clause is written from your answers.
- Each section is mapped to the OWASP API Security Top 10 2023 in a coverage table, both ways: section to item and item to section.
- The policy, the coverage table, Markdown download and the print or PDF view are free. The full policy pack (standards appendix and exception form) is part of Pro.
- Runs in your browser. Answers are saved locally and never sent to PlayCISO. A sample answer set for a fictional fintech is loaded to start.
Why API security needs its own policy
A general application security policy rarely says who owns each API, how an object-level authorisation check must be written, how long a partner gets before a version is retired, or what a webhook may call. Those are the gaps the OWASP API Security Top 10 2023 describes: broken object level authorization (API1) and broken function level authorization (API5) are authorisation decisions made per endpoint; improper inventory management (API9) is an ownership problem; unrestricted access to sensitive business flows (API6) is a product decision as much as a technical one.
A policy works when every clause can be tested. That is why this builder writes MUST and SHOULD statements tied to your actual estate, and why each section points at the OWASP item it is there to prevent. Use the coverage table in a design review or an audit to show where each risk is handled, and the testing section to show how you verify it.
To practise the controls the policy asks for, try the API Data Exposure Review Lab, the API & Service Auth Lab and the SSRF defense checklist.
Frequently asked questions
What should an API security policy include?
At minimum: purpose, scope and roles; an API inventory with named owners; design and security review; authentication standards; object- and function-level authorisation; input validation and schema enforcement; data exposure rules; rate limiting and resource limits; protection of sensitive business flows; rules for outbound calls (SSRF); configuration baselines; versioning and deprecation; rules for consuming third-party APIs; logging and monitoring; a testing programme; an exceptions process; and a review cycle. This builder generates all of them.
How does the policy map to the OWASP API Security Top 10 2023?
Each section is tagged with the OWASP item it addresses: authorisation covers API1 Broken Object Level Authorization and API5 Broken Function Level Authorization, authentication covers API2, data exposure covers API3, rate limiting covers API4, sensitive business flows cover API6, outbound calls cover API7 SSRF, configuration baselines cover API8, inventory and versioning cover API9, and third-party consumption covers API10. Design review, input validation, logging and testing are supporting sections. The coverage tab shows both directions.
How do my answers change the policy?
Every clause is generated from them. Choosing GraphQL adds depth, complexity and introspection rules; gRPC adds reflection, deadline and message-size rules; API keys, JWT, OAuth and mutual TLS each add their own authentication clauses; payment or health data adds masking and stricter approval; webhooks add signed payloads and egress controls; a missing gateway changes the configuration section. Your answers also set a risk tier that scales token lifetimes, patch deadlines, testing cadence and exception expiry.
Does the policy make my organisation compliant with PCI DSS, GDPR or other rules?
No. Regulatory context is recorded as tags only, so compliance knows which frameworks to map the policy against. The builder does not interpret any law or standard, and the cadences and limits it suggests are internal-policy defaults, not regulatory requirements. Review the draft with your security, legal and compliance owners.
What is free and what is Pro?
The questions, the full policy document, the OWASP coverage table, Markdown download, copy and the print or save-as-PDF view are free. The full policy pack, which adds a standards appendix (token, TLS, rate-limit, egress deny list and log-field standards and a go-live checklist) and an exception request form, is part of Pro ($5/month or $40/year).
Where are my answers stored?
In your own browser, with localStorage. Nothing is sent to PlayCISO. Clearing site data or using a private window removes them. The sample company, Kestrel Pay, is fictional.
More security tools
The tools people use most on PlayCISO.
Catch injected instructions hiding in content your AI agent should only read.
Score your readiness against the first international standard for AI security threats.
Critical CVEs across 21 major vendors, month by month — and what the 2026 surge means.
Build an ordered ruleset, replay labelled packets and catch shadowed and any-to-any rules.
Self-assess all six Functions, from Govern to Recover, and see your weakest one.
Search 172 threat actors across Microsoft, CrowdStrike, Mandiant and community names.