One front door for every API you run in India.
Define an HTTP API once - routes, integrations, authorizers, stages - and DataDack API Gateway terminates, authorizes, throttles and filters every request before it reaches your code. The control plane speaks the AWS API Gateway v2 shape, so an existing OpenAPI document imports as-is. The data plane runs in Noida (ap-south-3), so the request never leaves the country to be inspected.
New accounts get ₹1,000 in free credit on signup.

- GET/ordersfunctionJWT
- GET/orders/{id}functionJWT
- POST/ordersfunctionJWT
- GET/statusmocknone
- ANY/legacy/{proxy+}httpSigV4
Import it as OpenAPI, or build it route by route.
Eight things happen before your code does.
- 01TLS terminationThe connection is terminated at the sovereign edge, inside the region.
- 02Resolve API and stageThe hostname identifies the API; the first path segment names the stage and is stripped.
- 03Match the routeEvery candidate is scored by specificity. The highest total wins, not the first declared.
- 04AuthorizeThe route's authorizer runs - JWT, SigV4, a function of yours, or an API key.
- 05Throttle and quotaThe route throttle protects your backend; the usage plan holds one caller to its plan.
- 06WAFThe API's rule set is evaluated before any backend is reached.
- 07Invoke the targetA function, an HTTP upstream, a load balancer, or a mock answered at the edge.
- 08CORS and logCORS headers are applied and one row per request is shipped with the trace id.
Path templates that resolve deterministically.
A route is a method and a path template. The router scores every candidate by specificity rather than taking the first that matches, so adding a broad proxy route can never shadow an exact one you already shipped.
Pick a request, watch it resolve
These five routes belong to one API. Choose an incoming path and every candidate is scored by the same rule the gateway uses.
Segment types and the weight each scores
| Template | Matches | Weight | Notes |
|---|---|---|---|
| /orders | /orders | 100 | A literal segment. Always beats a parameter at the same position. |
| /orders/{id} | /orders/42 | 10 | A path parameter. Matches exactly one segment, never zero and never two. |
| /files/{path+} | /files/a/b/c.pdf | 1 | Greedy. Legal only as the final segment, and the weakest match there is. |
How a winner is chosen
- 01Score every segment: literal 100, parameter 10, greedy 1.
- 02The highest total wins, so /orders/new beats /orders/{id}.
- 03On a tie, a route declared for the method beats one declared ANY.
- 04A route whose template will not parse is dropped at load, not served as a 500.
Stages live in the path
The edge reads the first path segment and, when it names one of that API's stages, serves that stage and strips the segment. A stage pinned to a deployment serves that stored snapshot, so promoting is a pointer move rather than a re-upload.
GET /prod/orders/42
stage → prod
route → GET /orders/{id}
id → 42Four things a route can point at.
The integration is the second half of a route. Every kind below is projected to the edge and served today.
Serverless function
Invoke a DataDack function. The gateway is the same front door the FaaS fleet already sits behind, so there is no second hop to configure.
Request body capped at 6 MB, response at 8 MB.HTTP upstream
Proxy to any reachable HTTP origin - a VM, a managed app, a service outside DataDack.
The scheme and host are used; the stored URI path is not.Load balancer
Point a route at a DataDack load balancer and let it fan out across the pool behind it.
Pairs with the L4/L7 balancer and its health checks.Mock
Answer at the edge with no backend at all - useful to publish a contract before the service exists.
Returns 200 with an empty body; a stored mock body is not yet served.Throttles, quotas and a WAF in front.
Two throttles run on every request, and they answer different questions. The route throttle protects your backend from everyone; the usage-plan throttle holds one caller to what they bought.
Per-route throttle
Keyed on API, stage and route. A stage sets the default and any route overrides it, so a single expensive endpoint can be held down without capping the rest of the API.
A refusal returns 429 with Retry-After.Per-plan throttle and quota
Counted per key in Postgres against the plan's window. Rate and burst cap the moment; the quota caps the period.
Day, week and month windows.Edge WAF
A rule set attached to the API, evaluated before the target is reached. Set it per API and read the decisions back in the request log.
Runs ahead of every integration.CORS
Configured on the API, not hand-rolled per handler. Preflights are answered from that configuration at the edge and the headers are applied to real responses too.
One definition, every route.Enforced by the gateway. A request over a limit is refused before it costs you anything downstream.
Every request keeps one trace id.
The edge mints a trace id on arrival and every hop forwards it. A request that crossed the gateway, an authorizer and a function is one trace, not three logs you correlate by timestamp.
One id, end to end
X-Trace-Id is minted at the entry point and carried through every internal call, with each hop adding its own span id.
Structured request log
A row per request - method, path, status, target, cache state, byte counts, timings and client IP - shipped to the log service over gRPC. Only that service holds the store's credentials.
Gateway metrics
Request counts, request duration, upstream latency, shed load and filter decisions are exported for scraping.
OpenTelemetry
Transports are instrumented through the platform's APM layer, so spans land in the same place as the rest of your estate.
API Gateway is its own component on the public status page for ap-south-3.
Open the status pageShaped like the API your tooling expects.
The control plane follows the AWS API Gateway v2 resource model and verbs. If you already describe your API as OpenAPI, import it; if you need to leave, export it.
- APIs
- Routes
- Integrations
- Stages
- Deployments
- Authorizers
- Models
- Domain names
- API mappings
- API keys
- Usage plans
- Tags
OpenAPI in, OpenAPI out
Import an OpenAPI document to create an API and its routes, and export the live configuration back out. The export is the current state, not the document you first uploaded.
Live today, and what is not
| Capability | State | Detail |
|---|---|---|
| Path routing, stages, deployments | Live | Served from the stored snapshot |
| JWT, SigV4, custom and API-key auth | Live | Enforced before the target runs |
| Route and usage-plan throttling | Live | 429 with Retry-After |
| WAF and CORS | Live | Per API, at the edge |
| OpenAPI import and export | Live | Round-trips the live configuration |
| Per-integration timeouts | Planned | Accepted and stored; not yet read by the edge |
| Request and response mapping | Planned | Parameter mapping and templates are stored only |
| JSON Schema request validation | Planned | Models exist; validation does not run yet |
| Mock response bodies | Planned | Mocks answer 200 with an empty body today |
| VPC links | Planned | The routes exist and answer 501 |
| Canary and weighted stages | Planned | Deployments are promoted whole |
Some of these are accepted by the API but not yet enforced at the edge. They are listed as planned for exactly that reason.
DataDack API Gateway vs AWS API Gateway.
The HTTP API shape is deliberately familiar, so the differences that matter are where the traffic runs and which parts are finished. AWS figures are published headline behaviour - check the provider before you rely on them.
| Capability | DataDack (Noida) | AWS API Gateway (HTTP API) |
|---|---|---|
| Where requests terminate | Noida (ap-south-3), inside IndiaDPDP-aligned jurisdiction | The AWS region you choose |
| Route matching | Specificity scored: literal 100, param 10, greedy 1Same intent; the weights are published here | Most-specific match wins |
| Integration targets | Function, HTTP upstream, load balancer, mock | Lambda, HTTP, private integration, mock |
| Authorization | JWT, SigV4, custom function, API keySigV4 clients work unchanged | JWT, IAM, Lambda authorizer, API key |
| Throttling and quotas | Per route and per usage plan | Per route or stage, and per usage plan |
| OpenAPI import and export | Yes | Yes |
| Max request body | 8 MBBoth refuse above the limit at the edge | 10 MB |
| WAF at the gateway | Included, per API | Separate service |
| Request and response mapping | Planned - stored, not yet enforcedSee the capability table above | Available |
| Private network links | Planned - the routes answer 501 | Available |
| Pricing | Public Beta - no rate card yetThe console is the quote when it lands | Per million requests |
API Gateway questions
Answers taken from what the gateway does today, not from what is planned.