For complete API reference, use cases, and examples, see the full documentation.
Quick Reference — Password Requirements: Minimum 6 characters, maximum 255 characters.
POST /api/channel/create
Content-Type: application/json
{
"password": "your-secure-password",
"requirePasswordOnWebhook": false
}
Response (201):
{
"id": "abc12345",
"url": "/h/abc12345"
}
Errors:
- 400: Password required / too short / too long
- 500: Server error
POST /{channelId}[?password=pwd][&markdown=true]
Content-Type: application/json (or text/markdown)
Body: Any valid JSON or Markdown text
Response (202):
{ "success": true }
Errors:
- 400: Invalid channel ID
- 403: Password required/incorrect (if requirePasswordOnWebhook=true)
- 404: Channel not found
Examples:
# JSON webhook
curl -X POST http://localhost:3000/abc12345 \
-H "Content-Type: application/json" \
-d '{"status": "ok"}'
# Markdown webhook
curl -X POST http://localhost:3000/abc12345?markdown=true \
-H "Content-Type: text/markdown" \
-d "# Title"
# With password protection
curl -X POST http://localhost:3000/abc12345?password=secret \
-H "Content-Type: application/json" \
-d '{"data": "value"}'
POST /api/channel/{channelId}/verify
Content-Type: application/json
{
"password": "your-password"
}
Response (200):
{ "success": true }
Errors:
- 400: Invalid channel ID
- 403: Wrong password
- 404: Channel not found
GET /api/channel/{channelId}/webhooks
Requires prior verification (verify endpoint)
Response (200):
[
{
"timestamp": "2024-08-12T17:45:11.340Z",
"payload": {
"method": "POST",
"headers": {...},
"body": {...},
"query": {...},
"ip": "::1"
},
"isMarkdown": false
}
]
Errors:
- 400: Invalid channel ID
- 404: Channel not found
POST /api/channel/{channelId}/delete
Content-Type: application/json
{
"password": "your-password"
}
Response (200):
{ "success": true }
Errors:
- 400: Invalid channel ID
- 403: Wrong password
- 404: Channel not found