Webhook endpoints

Create, list and revoke a channel's incoming webhooks through the REST API, and post through one with a Discord-compatible payload.

Updated

Paths are relative to https://api.fishcamp.space/api/v1. Managing webhooks needs the X-Workspace-Id header and an admin; posting through one needs neither. The payload, limits and setup for Uptime Kuma and Dokploy are in the Incoming webhooks guide.

List webhooks

GET /channels/:channelId/webhooks

Admins. The channel's active webhooks, oldest first. Secrets are never returned: you get the last four characters of the token.

[
  {
    "id": "a9b8c7d6-e5f4-4a3b-8c2d-1e0f9a8b7c6d",
    "channelId": "0b6f3c55-2a51-4e0a-a3d6-6a3f1f2e9d10",
    "name": "Uptime Kuma",
    "tokenLast4": "Xq7k",
    "createdAt": "2026-11-04T09:12:00.000Z",
    "lastUsedAt": "2026-11-05T14:30:02.000Z"
  }
]

Create a webhook

POST /channels/:channelId/webhooks

Admins.

FieldTypeRequiredDescription
namestringYes1 to 60 characters. Shown as the author of the messages it posts.

Returns 201 Created with the webhook and its full url. The URL is in this response only: store it right away. Direct messages can't have webhooks (422).

{
  "id": "a9b8c7d6-e5f4-4a3b-8c2d-1e0f9a8b7c6d",
  "channelId": "0b6f3c55-2a51-4e0a-a3d6-6a3f1f2e9d10",
  "name": "Uptime Kuma",
  "tokenLast4": "Xq7k",
  "createdAt": "2026-11-05T15:00:00.000Z",
  "lastUsedAt": null,
  "url": "https://api.fishcamp.space/api/v1/webhooks/inbound/whk_…Xq7k"
}

Revoke a webhook

DELETE /channels/:channelId/webhooks/:webhookId

Admins. The URL stops working at once (later posts get 404). Returns 204. The timeline gets a pill saying who revoked it.

Post to a webhook

POST /webhooks/inbound/:token

No Authorization header: the token in the URL is the secret. Body: content (or text), username and up to 10 embeds, like a Discord webhook.

AnswerWhen
204Posted.
200 with { "id", "channel_id" }Posted, and you added ?wait=true.
404Unknown or revoked token, or archived channel.
422Nothing to post, or a field breaks a limit.
429More than 60 requests in a minute from the same address.

Full payload reference and examples: Incoming webhooks.

On this page