| name | stripe-inspired-api-design-rules |
| description | JSON HTTP API design rules distilled from Stripe โ resource modeling, identifier schemes, URL structure, request/response wire format, pagination, errors, idempotency, versioning, naming, webhooks, and authentication. Triggers on tasks involving OpenAPI specs, API design reviews, schema decisions, endpoint shaping, error envelope design, webhook delivery, or any "is this API well-designed" question. Apply when designing, reviewing, or refactoring a JSON HTTP API โ even when the user doesn't mention Stripe by name, since the rules are general API-design principles distilled from the industry's most-copied reference. |
Stripe-Inspired API Design Best Practices
A reference distillation of the design conventions behind Stripe's API โ the most widely admired and copied JSON HTTP API in the industry. Contains 52 actionable rules across 8 categories, prioritised by how irreversibly a wrong decision cascades through every endpoint, every SDK, and every client integration. Each rule explains the WHY, shows incorrect-vs-correct code, and links to the canonical source.
When to Apply
Reach for this skill when:
- Designing a new JSON HTTP API or a new endpoint on an existing one
- Reviewing an API design proposal, OpenAPI spec, or PR that adds/changes endpoints
- Debugging an integration where the "wrong" shape of the API is causing client bugs
- Auditing an API for naming consistency, error shape uniformity, or compatibility risks
- Producing an API design report (the kind your inspector tool emits โ
Critical / Warning / Suggestion / Positive)
- Picking between two designs and looking for an authoritative source to back the choice
- Onboarding to API design โ these are the canonical patterns to internalise first
The rules are general โ they apply to any JSON HTTP API, not just APIs imitating Stripe. Triggers include "API design", "OpenAPI", "endpoint", "schema", "webhook", "idempotency", "pagination", "API versioning", and reviews of YAML/JSON spec files.
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|
| 1 | Resource Modeling & Identifiers | CRITICAL | resource- |
| 2 | URL Structure & HTTP Semantics | CRITICAL | url- |
| 3 | Request & Response Format | HIGH | format- |
| 4 | Errors & Status Codes | HIGH | error- |
| 5 | Idempotency & Safe Retries | HIGH | idem- |
| 6 | Versioning & Backwards Compatibility | HIGH | ver- |
| 7 | Naming, Polymorphism & Metadata | MEDIUM-HIGH | naming- |
| 8 | Authentication, Webhooks & Search | MEDIUM-HIGH | ops- |
Earlier categories cascade harder: a wrong choice in resource modeling (numeric IDs, no object discriminator) propagates to every endpoint forever; a wrong choice in webhook event naming is a single category to fix.
Quick Reference
1. Resource Modeling & Identifiers (CRITICAL)
2. URL Structure & HTTP Semantics (CRITICAL)
3. Request & Response Format (HIGH)
4. Errors & Status Codes (HIGH)
5. Idempotency & Safe Retries (HIGH)
6. Versioning & Backwards Compatibility (HIGH)
7. Naming, Polymorphism & Metadata (MEDIUM-HIGH)
8. Authentication, Webhooks & Search (MEDIUM-HIGH)
How to Use
For a focused question ("should this field be a boolean or an enum?"), jump directly to the relevant rule (naming-enums-over-booleans) โ each rule is self-contained with the WHY, code examples, and the canonical source.
For a full API review or audit, work through the categories top-to-bottom. The order matches Stripe's own design priority: get resource modeling and URL structure right first; format, errors, idempotency, and versioning are the next layer; naming and operational surface come last because they're the easiest to evolve.
For producing a structured findings report (the kind an inspector tool emits), cite rules by their slug โ resource-unix-seconds-timestamps, format-no-total-counts โ so each finding traces back to a specific, defensible source.
Read section definitions for the cascade-impact rationale behind the category ordering, or the rule template when adding a new rule.
Reference Files