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/webhooksAdmins. 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/webhooksAdmins.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | 1 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/:webhookIdAdmins. 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/:tokenNo Authorization header: the token in the URL is the secret. Body: content (or text), username and up to 10
embeds, like a Discord webhook.
| Answer | When |
|---|---|
204 | Posted. |
200 with { "id", "channel_id" } | Posted, and you added ?wait=true. |
404 | Unknown or revoked token, or archived channel. |
422 | Nothing to post, or a field breaks a limit. |
429 | More than 60 requests in a minute from the same address. |
Full payload reference and examples: Incoming webhooks.
Meeting link endpointsNew
Create, replace and turn off a channel's meeting link, remove guests from the room, and the public routes a guest uses to join without an account.
API key endpointsNew
List, create and revoke a workspace's cwk_ API keys through the REST API. Admins only, and always done by a person.