Build APIs. Skip the boilerplate.
Consistent request validation and automated OpenAPI documentation for your favorite backend frameworks.
---
ONE WORKFLOW · MULTIPLE BACKEND ECOSYSTEMS
Express
Declarative schema validation middleware attaching sanitized objects to req.validatedBody with instant HTTP 422 errors.
View Documentation →Next.js
Higher-order route handler wrapping Request streams with JSON validation and typed response inference.
View Documentation →Go · Gin
Reflection-driven Guard middleware validating Go struct binding tags with type-safe BodyT retrieval.
View Documentation →Laravel
Native PHP 8 #[Post] routing attributes and reflection middleware formatting errors into FastAPI's { detail: [...] } standard.
View Documentation →---
Why AtoZAPI?
FastAPI revolutionized the Python backend ecosystem with two core ergonomics: declarative runtime validation and instant interactive documentation at /docs.
Until now, teams using Node.js, Next.js, Go, or PHP had to choose between writing verbose JSDoc/Swagger YAML by hand, maintaining desynchronized specs, or stitching together incompatible libraries.
AtoZAPI bridges that gap:
Never write hundreds of lines of brittle OpenAPI YAML or JSDoc comments again. Your route definitions and schemas serve as the single source of truth. Every SDK emits the identical Pydantic-compatible validation payload: A single CLI command scans your code and boots up embedded Swagger UI and ReDoc servers at Lightweight, deterministic validation designed for microservices and serverless runtimes without heavy dependencies.Zero Manual Swagger Writing
Standardized HTTP 422 Errors
{ "detail": [{ "loc": [...], "msg": "...", "type": "..." }] }.Instant Interactive /docs & /redoc
http://localhost:8000/docs.Zero-Dependency Runtime Architecture
---
Standardized HTTP 422 Error Contract
Whenever a request fails schema validation, AtoZAPI intercepts the request before reaching your business logic and returns an HTTP 422 Unprocessable Entity response:
{
"detail": [
{
"loc": ["body", "age"],
"msg": "Input should be greater than or equal to 18",
"type": "greater_than_equal",
"ctx": { "ge": 18 }
},
{
"loc": ["body", "email"],
"msg": "Input should be a valid email address",
"type": "value_error.email"
}
]
}
---
Ecosystem Comparison
| Framework | Package | Language Paradigm | Validation Hook |
|---|---|---|---|
| Node.js (Express) | @atozapi/express | Express Middleware | app.post('/api', atozapi(schema), handler) |
| Next.js App Router | @atozapi/nextjs | Higher-Order Handler | export const POST = nextAtozapi({ schema, handler }) |
| Go (Gin) | github.com/dhirajparihar/AtoZAPI/sdk-go/gin | Gin Middleware + Generics | r.POST('/api', ginatozapi.Guard(Req{}), handler) |
| PHP (Laravel) | atozapi/laravel | PHP 8 Attributes + Reflection | #[Post('/api', rules: [...])] |