Channel Links

A channel link is a URL that can send to one channel and do nothing else:

https://send.pushtower.com/pt_link_3f9c…

It is the easiest way to let something notify you:

A link can send notifications and update Live Activities on its channel. It cannot read notifications, list or change channels, manage keys, or reach any of your other channels. You can revoke it at any time without affecting your API keys or other links.

The quickest way for a script or agent to get a link is QR Connect: it shows a QR code and you approve it in the app. You can also create links yourself:

curl -X POST https://api.pushtower.com/api/channels/$CHANNEL_ID/links \
  -H "X-API-Key: $PUSHTOWER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Claude Code"}'
{
  "success": true,
  "data": {
    "id": "7d1c…",
    "channelId": "…",
    "name": "Claude Code",
    "prefix": "pt_link_3f9c",
    "url": "https://send.pushtower.com/pt_link_3f9c…",
    "key": "pt_link_3f9c…",
    "expiresAt": null,
    "requestCount": 0,
    "createdAt": "2026-09-29T09:00:00.000Z"
  }
}

The full URL is returned only once. Afterwards the link is listed by name and prefix. Pass expiresAt (ISO 8601) for a link that stops working on its own, for example one handed to an agent for a single task.

Give it to an agent

When you finish this task, or if you get blocked and need my input,
notify me via PushTower: https://send.pushtower.com/pt_link_3f9c…
Fetch that URL first (GET) for instructions on how to send.
Keep the URL secret: don't print it, log it, or commit it.

The agent needs no PushTower skill, SDK, or MCP server. A link describes itself: GET on it returns Markdown instructions covering the payload, examples with the link filled in, guidance on what to send, Live Activity usage (when the channel owner’s plan includes it), and error handling. Send Accept: application/json for a machine-readable version.

curl https://send.pushtower.com/pt_link_3f9c…
# JSON
curl -X POST "$PUSHTOWER_LINK" \
  -H "Content-Type: application/json" \
  -d '{"title": "Deploy finished", "message": "api v2.4.1 is live", "priority": "normal"}'

# Plain text: the channel name becomes the title
curl -X POST "$PUSHTOWER_LINK" -H "Content-Type: text/plain" -d "Backup finished"
Field Required Notes
message yes Body text, max 4000 characters
title no Max 255 characters; defaults to the channel name
priority no low, normal (default), high, critical
data no Object of custom key/values
imageUrl no HTTPS image shown with the notification
sender no {"name", "avatarUrl"}: who it is from, with a circular avatar; defaults to the channel’s sender
sound no Sound name
badge no App badge count

Live Activities

On Pro and Ultimate plans, a link can also drive the channel’s Live Activity:

curl -X POST "$PUSHTOWER_LINK/live-activity" \
  -H "Content-Type: application/json" \
  -d '{"title": "Build", "message": "Running tests", "metrics": [{"kind": "progress", "id": "build", "progress": 0.6}]}'

curl -X DELETE "$PUSHTOWER_LINK/live-activity"

Using the key as a header

The part after the last / is a regular key (pt_link_…). It also works as an X-API-Key header on the send endpoints (POST /api/notifications, POST /api/notifications/preview, POST /api/channels/:id/notifications, and the channel Live Activity endpoints), for example to use presets, actions, or idempotency keys. It is still limited to its own channel there.

Limits and errors

A channel can have up to 25 active links. Deleting a channel revokes its links.

Security

A link is a credential, just a narrow one. Treat it like a password: keep it in an environment variable or secret store, and don’t commit it or paste it into notification content. If a link leaks, revoke it and create a new one. Nobody can use a link to read your data or to send anywhere except this channel.

Endpoint Scope Description
GET /api/channels/:id/links channels:read List active links
POST /api/channels/:id/links channels:write Create a link
DELETE /api/channels/:id/links/:linkId channels:write Revoke a link
GET <link> none Usage instructions
POST <link> none Send
POST/DELETE <link>/live-activity none Live Activity

Only the channel owner can list, create, or revoke its links.