The Classic
Petstore API
The classic reference in OpenAPI 3.1 format with action verbs in URLs like /pet/findByStatus and /pet/uploadImage. Use this for testing legacy tools. For true RESTful design, try the Modern version.
Classic Features
Stable and reliable for traditional workflows
OpenAPI 3.1 Compliant
Fully compatible with OpenAPI 3.1 specification and tooling ecosystem.
Traditional REST
Classic RESTful patterns with straightforward resource operations.
Legacy Compatible
Works with older code generators and API gateways out of the box.
Stable & Reliable
Battle-tested patterns that have been used in production for years.
Simple Data Models
Straightforward schemas without complex polymorphism or discriminators.
Well Documented
Comprehensive documentation with examples for all endpoints.
When to Use Classic
Choose Classic for these scenarios
Legacy Tool Testing
Testing older OpenAPI tooling, code generators, or API gateways that don't yet support OpenAPI 3.2 features.
Learning Basics
Teaching fundamental API design concepts without the complexity of modern features like webhooks and discriminators.
Compatibility Requirements
Projects that must maintain backwards compatibility with existing systems that can't be upgraded.
Simple Use Cases
Basic CRUD APIs that don't need advanced features like event-driven architecture or complex authentication flows.
⚠️ Not RESTful Architecture
The Classic Petstore violates RESTful principles by using action verbs in URLs:
/pet/findByStatus→ should be/pets?status=available/pet/findByTags→ should be/pets?tags=tag1,tag2/pet/{id}/uploadImage→ should bePOST /pets/{id}/images
For true RESTful design with resource nouns, query parameters, and correct HTTP semantics, use the Modern version.
Switch to RESTful Modern VersionGet Started with Classic
Reliable OpenAPI 3.1 reference for traditional workflows.
Open source under MIT License • No breaking changes