# Workflows, Workers - Call Workflows declared in \`exports\` through \`ctx.exports\`

Publisher-attributed story with a reviewed brief or permitted publisher paragraph. The original publisher is responsible for the linked reporting.

- Publisher: Cloudflare Developers
- Category: Cloud
- Original publication time: 2026-09-27T00:00:00Z
- First observed by NexusTechWire: 2026-10-01T15:54:33Z
- Original source: https://developers.cloudflare.com/changelog/post/2026-09-27-workflow-ctx-exports/
- NexusTechWire record: https://nexustechwire.com/news/news-ce60909264c9a3b46dd2

## From the publisher

A Worker can now call the Workflows it declares in the exports field of its Wrangler configuration through ctx.exports. You no longer need a workflows binding to call a Workflow from the Worker that defines it. Each Workflow is keyed by class name, and has the same API as a Workflow binding: src/index.jsjsexport default \{ async fetch(request, env, ctx) \{ const instance = await ctx.exports.MyWorkflow.create(\{ params: \{ name: "World" \}, \}); return Response.json(\{ id: instance.id \}); \}, \}; src/index.tstsexport default \{ async fetch(request, env, ctx): Promise\<Response\> \{ const instance = await ctx.exports.MyWorkflow.create(\{ params: \{ name: "World" \}, \}); return Response.json(\{ id: instance.id \}); \}, \} satisfies ExportedHandler\<Env\>; A workflows binding and a workflow export with the same name share their instances.

Source license: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Publisher excerpt shortened and converted to plain text. Original source license applies.

Read the full original: [Cloudflare Developers](https://developers.cloudflare.com/changelog/post/2026-09-27-workflow-ctx-exports/)

This record does not reproduce the complete article or represent independent confirmation of every source claim.
