---
title: "Manually send a signal to a destination"
method: POST
path: "/api/me/signals/{id}/deliver"
tags: ["me"]
---

# Manually send a signal to a destination

`POST /api/me/signals/{id}/deliver`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/me/signals/{id}/deliver`
- Auth: none declared

Powers the portal's "Send to {destination}" button on the signal detail page. Bypasses the destination's routing mode (manual destinations are only reachable this way) but respects isActive — paused destinations return 422. Idempotent on (signal_id, destination_id): repeat calls return the existing activation rather than enqueueing a duplicate.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `destinationId` string, uuid, required

## Response `200`

Activation created or already existed

- object
  - `activationId` string, uuid, required
  - `queued` boolean, required: true when a new delivery job was enqueued; false when an activation already existed (idempotent no-op).
  - `destinationName` string, required

## Other responses

- `404`: Signal or destination not found / not owned by customer
- `422`: Destination is paused (isActive=false)

---

[API](https://skmtc.dev/signalraven/apis/zygnal-api.md) · [All operations](https://skmtc.dev/signalraven/apis/zygnal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalraven/apis/zygnal-api/revisions/36e1d9b9d604?raw)
