---
title: "unblockOutboundStream"
method: POST
path: "/v1/integrations/{integrationId}/outbound/messages/unblock"
tags: ["integrations"]
---

# unblockOutboundStream

`POST /v1/integrations/{integrationId}/outbound/messages/unblock`

Unblock an integration's outbound stream halted by the `block`
poison policy: skips (dead-letters) the current blocked head message,
emitting MSG_DEAD_LETTERED and letting the next message become the
head. Operator endpoint — requires the `integration:manage` grant.
Returns `unblocked: false` as a no-op when the stream is not
currently blocked (or the state moved concurrently) — safe to retry.

## Path parameters

- `integrationId` string, uuid, required

## Request body

- UnblockOutboundStreamRequest
  - `reason` string — Operator reason recorded on the dead-lettered head

## Response `200`

Unblock outcome

- UnblockOutboundStreamResponse
  - `unblocked` boolean, required — Whether a blocked head was skipped (false = no-op, stream was not blocked)
  - `dead_lettered_id` string — Message id of the skipped head — present only when unblocked is true

## Other responses

- `400` — Bad request
- `401` — Unauthorized request
- `403` — Forbidden - insufficient permissions
- `404` — Resource not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/epilot/apis/integration-toolkit-api.md) · [All operations](https://skmtc.net/epilot/apis/integration-toolkit-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/epilot/integration-toolkit-api/revisions/68961a011db0/schema)
