An API that grows with your application.
Build your application’s backend and APIs on Stack53. Start with a prototype, and keep the same API as you reach production, thousands of users and high-concurrency workloads — without redesigning your infrastructure.
View architecture →- 1 Prototype APIDatabaseAuth
- 2 First users Custom domainTLSStorage
- 3 Production DeploymentsLogsMetrics
- 4 Thousands of users CacheWorkersRate limits
- 5 High concurrency QueuesMore API instances
- 6 Large scale Private servicesDedicatedRegions · Planned
An API never lives alone.
Stack53 connects your API to everything it depends on — identity, data, processing and operations — inside the same project.
Your API is the front door to your backend.
Authentication, database, storage, cache, functions, jobs and webhooks are all parts of the same Stack53 project. Your API is the interface your application uses to reach them — one consistent backend model, managed in one place.
How projects are organized →Short paths for every request.
Most response time goes to hops, lookups and waiting. Stack53 keeps the path from request to response short and moves everything else out of the way.
Built for many requests at once.
Launches, promotions and notifications bring many users at the same moment. Stack53 spreads that load across your project so one busy minute doesn’t stall the API.
Stay steady when traffic jumps.
Spikes are normal. The goal is to keep responses flowing while extra load is absorbed, buffered or spread out.
- 1Rate limits protect the API
- 2Cache absorbs repeated reads
- 3Queue buffers slow work
- 4More instances, when configured
Grow without rebuilding.
Start with the basics and add what you need as usage grows. Your API code, endpoints and project stay where they are.
How a request moves through Stack53.
Every request takes the same short path: through the edge, past the gateway’s checks, into your API — which reaches data and processing inside your project.
Define the routes your app needs.
Path params, query params, custom routes and grouped routes — each route with its own auth requirement and rate-limit policy.
stack53.routes.group('/v1/orders', { auth: 'required', rateLimit: 'standard', }, (r) => { r.get('/', 'orders.list', { query: ['status', 'limit'] }) r.get('/:id', 'orders.get') r.post('/', 'orders.create', { rateLimit: 'writes' }) }) // Custom route outside the group stack53.routes.add('POST', '/hooks/storefront', 'webhooks.receive')
Change safely. Version clearly.
Run versions side by side while clients migrate, and test every change in its own environment before production sees it.
Your domain. Your browser rules.
Serve your API from your own domain, and decide exactly which web apps may call it.
Scale the parts that need it.
API instances, workers and cache are sized independently, so you add capacity where traffic actually lands.
Know who is calling.
Every request to your API arrives with an identity Stack53 has already checked. Your handler reads the caller — it doesn’t parse tokens.
export const listOrders = stack53.api.route('GET /v1/orders', async (req) => { const user = req.auth.user // already verified by Stack53 if (!user) return req.unauthorized() return stack53.db.orders.list({ userId: user.id }) })
Keys you can see and revoke.
For partners, scripts and machine-to-machine calls. Every key has an owner, a scope and a last-used time.
Services that call services.
Give background workers their own identity, and keep internal APIs off the public internet.
Protect your API from overload.
Set limits by caller or by route. Over the limit, callers get a clear 429 instead of a slow API.
HTTP/1.1 429 Too Many Requests Retry-After: 30 Content-Type: application/json { "error": "rate_limited" }
Secrets stay out of your code.
Serve repeated reads from cache.
Put a managed cache in front of your database. Popular reads come straight back from cache, and your database only handles what it needs to.
Explore Cache →Move slow work off the request.
Accept the request, answer right away, and let workers finish the heavy lifting in the background — in the same project as your API.
- POST /v1/orders
- 202 Accepted · right away
- enqueue job
- worker picks up job
Your data, one call away.
Database and Object Storage live in the same project as your API, so your handlers reach them without extra wiring.
// POST /v1/orders on api.acme.com export async function createOrder(req) { const order = await stack53.db.query( 'insert into orders (user_id, total) values ($1, $2)', [req.user.id, req.body.total]) return { status: 201, body: order } }
- 1 ask for URL
- 2 signed URL
- 4 ref
- 3 upload file directly
Receive events. Send events.
Keep the services you already use.
Store their keys as secrets and call them from your API.
See every request.
Every call to your API is logged with its route, status and request ID. Filter by environment, status or route, then open a line to see what happened.
Logging in the docs →Know how your API is behaving.
Follow one request end to end.
A trace breaks a single request into the steps it took, so you can see where the time went — auth, cache, database or your own code.
Only healthy instances get traffic.
Stack53 calls your health endpoint on every instance. Unhealthy instances are removed from rotation until they pass again.
path /healthz expect 2xx interval [default interval] timeout [default timeout] unhealthy after [n] failed checksIllustrative configuration.
Ship often. Roll back fast.
Every push becomes a numbered release. Test it on staging, promote it to production, and go back to the previous release in one step.
$ stack53 deploy --env production # ✓ release v42 live on production $ stack53 rollback --to v41 # ✓ production: v42 → v41 # ✓ previous build reused, no rebuild
Your code. Our gateway.
Your API runs as your own code. Requests reach it through a gateway that handles routing and protection first.
One public door. Private rooms behind.
Expose a single API to the world and keep every other service on a private network — then design that API first and let every client build against it.
One API shape, many products.
Four ways in.
Click, type, call or import — every surface manages the same projects.
Illustrative — see the API reference for exact syntax.Two APIs. Two different jobs.
One manages Stack53. The other is the product you build on it.
Same API from idea to scale.
You never migrate to a different platform. Stack53 adds what each stage needs, underneath the API you already have.
Build your API once.
Let Stack53 grow with it.