Durable Endpoints
Build fault-tolerant
API endpoints
Add automatic retries, recovery, and observability to any application just by wrapping your code in Steps. No queues or workflows to manage.

Scale without refactoring
All of your users deserve the same level of reliability from your product. Durable Endpoints lets you provide that experience from Day 1, without extra infra.

Traditional Path to API Durability
- Refactor your entire codebase
- Manage separate queueing and event streams
- Debug across multiple systems
- Months to make code "production ready"
Inngest Durable Endpoints
- Add one line of code to your existing API endpoints
- No new infra to deploy or manage
- All retries and failures handled transparently
- Ship in minutes, not months
Wrap your API in Steps, and ship it.
Durable Endpoints makes your APIs bulletproof without any architectural changes. Handle failures automatically. Scale gracefully. Replay events. Observe everything.
1. Add Steps to API code
Wrap your API endpoint's critical logic with steps to transform them into unbreakable unit of work. No refactoring of your backend, no changes in your frontend.
export default inngest.endpoint(async (req, { step }) => {
const { contactId, source } = await req.json();
const contact = await step.run("fetch-contact", () =>
sources[source].getContact(contactId)
);
const enriched = await step.run("enrich-data", () =>
clearbit.enrich(contact.email)
);
await step.run("sync-to-crm", () =>
salesforce.upsertContact({ ...contact, ...enriched })
);
return Response.json({ synced: true });
});2. Trace success path with zero latency
When everything works, your users get their results immediately with no added latency. It's exactly as fast as your original API. No waiting, no polling, no compromise.

3. Handle failures automatically
Any failing steps gets automatically retried by Inngest's durable execution engine. The API consumer gets redirected to an Inngest URL to wait for its final result.

4. Observe everything.
You can't debug quickly if you're grepping logs or referencing external instrumentation. Investigate and repair quickly with built-in observability.

All the benefits of durable workflows, none of the overhead.
Add production-grade reliability features without leaving your API codebase. Zero setup, zero new infrastructure. One line of code.
Automatic Recovery
Retry failed steps automatically, with exponential backoff. No more manual error handling, no more scattered logic.
Built for Events
Trigger, cancel, or hold ("wait for") runs based on event properties or other conditions.
Zero Refactoring
Add durability to existing APIs without changing your architecture or rewriting code. Meet you where you're at in your codebase...
Built-in Observability
See exactly what's happening in your APIs with automatic logging, tracing, and metrics for every step...
Start building today
Build your first Durable Endpoint with these helpful resources
Introducing: Durable Endpoints
Learn why we built Durable Endpoints, and find some code examples you can use.
Read articleDeepResearch built with Durable Endpoints
See Durable Endpoints in action with our DeepResearch example. Checkout the repository and try it locally.
Try the exampleDurable Execution reference
Explore the Durable Endpoints TypeScript SDK reference with the complete list of options and use case examples.
View documentation