Skip to content

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/json

Messages

Send a Message

http
POST /channels/{channelId}/messages

Body:

FieldTypeRequiredDescription
contentstringYes*Message text (Markdown supported). Max 4000 chars.
attachmentsarrayNoArray 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}/typing

Triggers 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-data

Form 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"
}
StatusMeaning
400Bad request — invalid parameters
401Unauthorized — missing or invalid token
403Forbidden — bot not in server or lacks permission
404Not found
429Rate limited — slow down
500Internal server error

Licensed under CC BY-NC-SA 4.0.