REST API Reference
All endpoints are prefixed with https://app.fluffwire.com/api. All requests must include:
http
Authorization: Bot YOUR_TOKEN_HERE
Content-Type: application/jsonMessages
Send a Message
http
POST /channels/{channelId}/messagesBody:
| Field | Type | Required | Description |
|---|---|---|---|
content | string | Yes* | Message text (Markdown supported). Max 4000 chars. |
attachments | array | No | Array of attachment objects (see File Uploads). |
*Required if no attachments.
Response: 201 Created — the created message object.
Example:
json
{
"content": "Hello from my bot!"
}Reactions
Toggle a Reaction
http
PUT /channels/{channelId}/messages/{messageId}/reactions/{emoji}Adds the reaction if not present, removes it if already added by the bot.
Response: 200 OK
Typing Indicator
Send Typing Indicator
http
POST /channels/{channelId}/typingTriggers a typing indicator in the channel for a few seconds. Rate-limited to 15 per 5 seconds.
Response: 204 No Content
File Uploads
Upload a File
http
POST /upload
Content-Type: multipart/form-dataForm field: file — the file to upload.
Response: 200 OK
json
{
"url": "https://app.fluffwire.com/uploads/filename.png"
}Use the returned url in the attachments array of a message:
json
{
"content": "Here's a file:",
"attachments": [
{ "url": "https://app.fluffwire.com/uploads/filename.png", "filename": "filename.png" }
]
}Error Responses
All error responses return a JSON body:
json
{
"error": "Human-readable error message"
}| Status | Meaning |
|---|---|
400 | Bad request — invalid parameters |
401 | Unauthorized — missing or invalid token |
403 | Forbidden — bot not in server or lacks permission |
404 | Not found |
429 | Rate limited — slow down |
500 | Internal server error |