Skip to content
Fluxer API

Admin messages

Admin message routes browse, search and permanently delete the messages of one channel, and report the progress of shred jobs. To shred or delete all of a user's messages, use Shred user messages.

One message with its author, content, attachments and the NSFW settings of its channel and guild. Every response that returns Admin message objects also returns the matching public message objects in message_responses, in the same order.

FieldTypeDescription
idsnowflakeThe ID of the message
channel_idsnowflakeThe channel the message was sent in
channel_name1?stringThe channel name, or null when it has none
channel_nsfw1?booleanWhether the channel is marked NSFW
channel_content_warning_level?2?integerThe channel content warning level
channel_content_warning_text?2?stringThe channel content warning text (0-200 characters)
guild_id1?snowflakeThe guild containing the channel, or null for a private channel
guild_name1?stringThe guild name, or null for a private channel
guild_nsfw_level1?integerThe guild NSFW level, or null for a private channel
guild_nsfw?2?booleanWhether the guild is marked NSFW
guild_content_warning_level?2?integerThe guild content warning level
guild_content_warning_text?2?stringThe guild content warning text (0-200 characters)
author_idsnowflakeThe ID of the author
author_usernamestringThe author username (1-100 characters)
author_global_name?stringThe author display name, or null when unset
author_discriminatorstringThe author discriminator tag (1-10 characters)
author_avatar?stringThe author avatar hash, or null when unset
author_bot?booleanWhether the author is a bot
webhook_id??snowflakeThe ID of the webhook that sent the message, or null when a user sent it
contentstringThe message content (0-4,000 characters)
timestampISO8601 timestampWhen the message was sent
attachmentsarray[Admin message attachment object]The attachments of the message (at most 10)
embeds?array[embed object]The embeds of the message

1 These come from the channel in the request and are the same on every object in one response. All are null when the channel no longer exists

2 Only the report message context object returns it. The routes on this page never do

{
"id": "1502771119476146176",
"channel_id": "1471002884199612420",
"channel_name": "general",
"channel_nsfw": false,
"guild_id": "1471002884199612416",
"guild_name": "Tidepool",
"guild_nsfw_level": 0,
"author_id": "1490118377238528000",
"author_username": "kestrel",
"author_global_name": null,
"author_discriminator": "0117",
"author_avatar": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
"content": "read the pinned message",
"timestamp": "2026-03-04T18:19:07.220Z",
"attachments": []
}
FieldTypeDescription
idsnowflakeThe ID of the attachment
filenamestringThe attachment filename (1-256 characters)
urlstringThe CDN URL of the attachment (1-2,048 characters)
nsfw?booleanWhether the attachment is marked NSFW, or null when it has no marking
content_type?stringThe recorded MIME type, or null when none was recorded
width?integerThe pixel width, or null when none was recorded
height?integerThe pixel height, or null when none was recorded
size??integerThe size in bytes, or null when none was recorded

The state of one message shred job. A job expires one hour after its last update. A job that is unknown, expired or not yet started by a worker returns only status, set to not_found.

FieldTypeDescription
statusnot_found | in_progress | completed | failedThe job state
requestedintegerThe number of message references the job was queued with
totalintegerThe number of those references the job resolved as shreddable
processedintegerThe number of messages shredded so far
skippedintegerThe number of references the job did not shred
started_at?ISO8601 timestampWhen the job started
completed_at?ISO8601 timestampWhen the job completed
failed_at?ISO8601 timestampWhen the job failed
error?1stringWhy the job failed (1-4,000 characters)

1 Present only when status is failed

GET/v1/admin/channels/{channel_id}/messagesAudit reason

Returns one page of Admin message objects for a channel, including messages that channel permissions hide from members. Needs message:lookup. An unknown channel returns an empty page.

FieldTypeDescription
limit?integerMaximum messages to return (1-100, default 50)
before?1snowflakeReturn messages with a lower ID than this cursor
after?1snowflakeReturn messages with a higher ID than this cursor

1 With neither, the page has the newest messages

FieldTypeDescription
messages1array[Admin message object]Messages in this page (at most 100)
message_responses?array[message object]The same messages as public message objects (at most 100)
has_more2booleanWhether the page was filled to limit

1 Oldest first, or newest first when you sent after

2 The next page can still be empty

StatusBodyCondition
200response bodyMessage page was returned

To page further, send the oldest returned ID as before or the newest as after.

The rate limit is 100 requests per minute, on the admin:message:operation bucket.

GET/v1/admin/channels/{channel_id}/messages/{message_id}Audit reason

Returns a message and the messages around it, oldest first. Needs message:lookup. An unknown message returns the window around where it would be, and an unknown channel returns an empty array.

FieldTypeDescription
context_limit?integerSize of the whole window including the message (1-100, default 50)
FieldTypeDescription
messagesarray[Admin message object]The message and its surrounding window (at most 100)
message_responses?array[message object]The same messages as public message objects (at most 100)
message_id?snowflakeThe requested message ID
StatusBodyCondition
200response bodyWindow was returned

The rate limit is 100 requests per minute, on the admin:message:operation bucket.

DELETE/v1/admin/channels/{channel_id}/messages/{message_id}Audit reason

Permanently deletes one message and its attachments. Needs message:delete. Use it to clean up webhook or system messages, or for a holder request. To remove a message for breaking a rule, shred it with the enforcement basis.

FieldTypeDescription
basisbasis objectholder_request or housekeeping
FieldTypeDescription
successbooleanAlways true
StatusBodyCondition
200response bodyThe request completed, even for an unknown channel or message

Fluxer sends Message Delete to the guild, or to each recipient in a private channel.

The rate limit is 100 requests per minute, on the admin:message:operation bucket.

GET/v1/admin/messagesAudit reason

Searches the messages of one channel, or looks up one message by message ID or attachment ID. Needs message:lookup. A request with message_id or attachment_id returns the lookup body and any other request returns the search body.

FieldTypeDescription
channel_idsnowflakeThe channel to search or look up in
q?stringFree-text query on message content (1-200 characters)
message_id?1snowflakeLook up this message and its surrounding window
attachment_id?1 2snowflakeLook up the message with this attachment and its surrounding window
filename?2stringThe exact filename of the attachment (1-255 characters)
context_limit?integerWindow size for a lookup (1-100, default 50)
limit?integerMaximum messages to return when searching (1-100, default 25)

1 message_id takes precedence over attachment_id, and attachment_id over q

2 attachment_id needs filename, or the request fails with INVALID_FORM_BODY on filename

FieldTypeDescription
messagesarray[Admin message object]Matching messages (at most 100)
message_responses?array[message object]The same messages as public message objects (at most 100)
totalintegerThe number of matching messages

This is the body Get message returns.

FieldTypeDescription
messagesarray[Admin message object]The resolved message and its surrounding window, oldest first (at most 100)
message_responses?array[message object]The same messages as public message objects (at most 100)
message_id1?snowflakeThe ID of the resolved message

1 Null only when an attachment lookup matches nothing

StatusBodyCondition
200search or lookup response bodySearch or lookup completed, with empty results when nothing matches

Search has no pagination and returns at most limit matches. On an instance without message search set up, it returns no messages and a total of 0.

The rate limit is 100 requests per minute, on the admin:message:operation bucket.

GET/v1/admin/messages/shreds/{job_id}Audit reason

Returns the message shred status of a job that Shred user messages or Delete all user messages started. Needs message:shred.

StatusBodyCondition
200message shred status objectJob state was returned

The rate limit is 100 requests per minute, on the admin:message:operation bucket.