---
title: "Re-dispatch a previous dispatch"
method: POST
path: "/v1/pipelines/{id}/dispatches/{dispatchId}/redispatch"
tags: ["Pipelines"]
---

# Re-dispatch a previous dispatch

`POST /v1/pipelines/{id}/dispatches/{dispatchId}/redispatch`

## Request

- Base URL: `https://api.talonic.com`
- URL: `https://api.talonic.com/v1/pipelines/{id}/dispatches/{dispatchId}/redispatch`
- Auth: HTTP bearer

Creates a NEW dispatch row inheriting the original's frozen selection, projection, watermark and data product (`replay_of` points back at it), and publishes fresh events — new dedup keys, new idempotency keys — to whatever bindings match NOW. The original row is untouched.

A re-dispatch is a new row, not a re-publish, because the outbox suppresses a duplicate `dedup_key`: re-publishing the same dispatch would be a no-op. The payload is identical (the selection is frozen), so a receiver sees the same records with a new delivery identity. Requires write scope.

## Path parameters

- `id` string, uuid, required
- `dispatchId` string, uuid, required

## Response `201`

The new dispatch row.

- object
  - `dispatch_id` string, uuid, required
  - `grain` 'row' | 'pipeline' | 'assembly' | 'matcher' | 'data_product', required: What one deliverable is — set by the node, not by the caller.
  - `status` 'pending' | 'published' | 'empty' | 'failed' | 'superseded' | 'skipped', required: `skipped` = the submitting POST /v1/run request's `dispatch` / `bindings` controls suppressed this node (no events; terminal, not re-dispatchable).
  - `record_count` integer, required: Records the dispatch froze.
  - `event_count` integer, required: Outbox events published (chunks for a collection grain, one per record for row grain).
  - `existing` boolean: Present on the trigger route — `true` when the `Idempotency-Key` matched an earlier dispatch (returned with 200; nothing was published again).
  - `error` string: Present only when `status` is `failed`.
  - `replay_of` string, uuid: The dispatch whose frozen selection this one inherited.

## Other responses

- `404`: Dispatch not found for this pipeline and tenant (`RESOURCE_NOT_FOUND`).
- `409`: A governance hold blocks delivery for the run's documents (`RUN_RULE_HOLD`), or the dispatch is a `skipped` row written by the submitting request's delivery controls (`DISPATCH_SKIPPED_BY_REQUEST`) — trigger the node manually instead.
- `429`: Daily rate limit exceeded.

---

[API](https://skmtc.dev/talonic/apis/talonic-api.md) · [All operations](https://skmtc.dev/talonic/apis/talonic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/talonic/apis/talonic-api/revisions/678fe5f8c9c3?raw)
