Skip to content
Fluxer API

Errors

A failed request returns a JSON error response. It has a stable code a client matches on and a localised message for a person to read. Every HTTP API and Admin API failure uses this shape. An OAuth2 protocol failure is the one exception.

An error response always has code and message. A failure with more to report adds its own members beside those two. Every added member sits at the top level of the response. A rate limit denial adds global and retry_after, a missing scope adds required_scope, and a validation failure adds errors.

The members a failure adds are fixed by its code, so a client reads only the members documented for the code it matched. errors reports field violations. retry_after states the delay before another attempt is admitted, global distinguishes a global rate limit denial from a route one, required_scope names a missing OAuth2 scope, and has_mfa and methods state the sudo mode proofs an account can supply.

The two IP ban codes have their own members. GLOBAL_IP_BANNED and GLOBAL_IP_TEMPORARILY_BANNED both have ip_address with the normalised client address, appeal_email with the address an appeal is sent to, appeals_supported which is true only for the permanent ban, and ban_kind which is permanent or temporary_24h. expires_at is an ISO 8601 timestamp when the ban records an expiry and null otherwise, including on every permanent ban.

Fluxer answers a field-level failure with 400 and a top-level errors array. Each element identifies one failed input field. The validation error object documents the element shape.

A boundary schema validates one of four request targets: the JSON body, the form body, the query string, and the path parameters. A failure on any of them returns the top-level code INVALID_FORM_BODY, and each element has a code drawn from the validation error code registry together with a localised message.

An operation can also report against a named field without the boundary schema. That failure returns INVALID_FORM_BODY as well. Its element has an enumerated code and localised message when the failure declares a registry code. Otherwise it has a fixed English message written at the failure site and no code. Every element code a client observes is a registry value.

Modify current user settings is the one operation that answers such a failure with the top-level code VALIDATION_ERROR instead of INVALID_FORM_BODY. Its trusted domain, age restriction, and synced preferences decisions each report one element with a registry code and a fixed English message.

The path of an element is the dot-joined position of the failed value, so a nested field appears as embeds.0.title. A failure with no field position uses the literal path root. Fluxer produces at most one element for each distinct pair of path and code.

{
"code": "INVALID_FORM_BODY",
"message": "Invalid form body.",
"errors": [
{
"path": "embeds.0.title",
"code": "CONTENT_EXCEEDS_MAX_LENGTH",
"message": "Text must not exceed 256 characters."
}
]
}

Fluxer normalises empty values on all four targets before validation runs. An empty string becomes null wherever it appears, including inside an array element. A nested object becomes null when it holds no members, and it becomes null when every one of its members is null after Fluxer has applied the same rule to each of them. The top-level object itself is never replaced, so a request that sends nothing still reaches the schema as an object and fails on the fields the schema requires.

A boundary schema constraint can name its own validation code. When it names none, Fluxer maps the failure to one of the codes below by the kind of constraint that failed.

ConstraintCodeDescription
String longer than its maximumCONTENT_EXCEEDS_MAX_LENGTH1A string value exceeded the maximum length the schema declares
Email formatINVALID_EMAIL_ADDRESSA value declared as an email address did not parse as one
UUID formatINVALID_SNOWFLAKEA value declared as a UUID did not parse as one
Any other constraintINVALID_FORMAT2Every constraint kind not listed above

1 A string shorter than its minimum reports INVALID_FORMAT, and so does a length bound on anything other than a string

2 Covers a type, union, enumerated value, unknown key, minimum length, numeric or date bound, multiple, key, element, or custom constraint, a constraint kind the mapping does not recognise, and a constraint that names a code outside the registry

A failure that has an HTTP status and no recognised Fluxer error code takes the fallback code its status selects below. An unclassified 401, 413, 422, or 429 falls back to GENERAL_ERROR. An error named by an operation or by one of the registries below keeps that more specific code.

An unrecognised failure returns 500 with INTERNAL_SERVER_ERROR and a generic message that names no detail. A failure that has a registered API code but no status returns 400, except GENERAL_ERROR, which returns 500.

StatusCodeDescription
400BAD_REQUESTThe request was malformed or failed a precondition
403FORBIDDENThe caller lacks permission for the operation
404NOT_FOUND1The target resource does not exist or is not visible
405METHOD_NOT_ALLOWEDThe HTTP method is not accepted on the route
409CONFLICTThe request conflicts with the current state of the resource
410GONEThe resource is permanently unavailable
500INTERNAL_SERVER_ERROR2An unexpected internal failure occurred
501NOT_IMPLEMENTEDThe requested capability is not implemented
502BAD_GATEWAYAn upstream dependency returned an invalid response
503SERVICE_UNAVAILABLEThe service is temporarily unable to handle the request
504GATEWAY_TIMEOUTAn upstream dependency did not respond in time
default3GENERAL_ERRORAny status without a specific mapping

1 Also the code a request that matches no route receives, so an unrouted path and an unreadable resource are indistinguishable from the body alone

2 Also the code an unrecognised failure receives, with the generic localised message

3 A failure that lands on this row keeps its own status

Every 4xx response to a request that resolved no authenticated user contributes a weighted abuse signal keyed by the client IP identity. A 429 weighs 3, a 401 weighs 0.75, a 403 weighs 0.5, and every other 4xx weighs 0.25. Fluxer records a signal only when the client address is public and not exempt. An IPv4 client is keyed by its exact address and an IPv6 client by its /64. One request records at most one client error signal. A denial produced by an existing IP ban records no signal.

Fluxer records a second signal of weight 1 for a credential that fails to resolve. A request that presents an unrecognised token and is answered 401 contributes both. That signal also records a hash of the credential presented, and Fluxer tracks the number of distinct hashes seen for one IP identity beside the score.

The score and the credential hashes accumulate inside a fixed window, and the window restarts once it elapses. Two triggers fire an automatic ban. The credential trigger fires the first time the count of distinct rejected credentials reaches its threshold. The score trigger fires only after the score has crossed its threshold in three separate windows, which is the default. Both thresholds depend on the address classification, which is datacentre, anonymising, mobile, or residential. An unclassified address takes the residential thresholds. Fluxer never bans a mobile address automatically.

These codes appear in the top-level code field of an error response, transmitted as the exact JSON string shown. The registry is closed and holds exactly 257 codes. Each entry states the leading sentence of the English source message, without its final full stop. Those messages call a guild a community.

You don’t have access to this resource or feature

This account has been permanently suspended

This account has been temporarily suspended

Your account is locked due to suspicious activity

Your account is too new to send messages in this community

ACLs must be non-empty

Admin API key wasn’t found

You’ve already completed age verification

You’re already friends with this user

You don’t own this application

Bad gateway

Bad request

We couldn’t resolve that Bluesky handle

We couldn’t complete the Bluesky connection

Bluesky connections are not enabled on this instance

The authorization request has expired or is invalid

Bots can’t create communities

Bots can’t send friend requests

This bot is already in the community

This bot is private

Bot users can’t use auth endpoints

Bot users can’t create auth sessions

Bot user generation failed

Bot user wasn’t found

A call is already in progress in this channel

You can’t block the system user

You can’t edit another user’s message

This action can’t be performed in a DM

You can’t edit system messages

You can’t redeem {premium_tier_name} with Visionary

You can’t report this community

You can’t report your own community

You can’t report your own message

You can’t report yourself

You can’t send an empty message

CANNOT_SEND_FRIEND_REQUEST_TO_BLOCKED_USER

Section titled “CANNOT_SEND_FRIEND_REQUEST_TO_BLOCKED_USER”

You can’t send a friend request to a blocked user

You can’t send a friend request to yourself

You can’t send messages in a non-text channel

You can’t send messages to this user

You can’t shrink reserved slots

Community ownership can’t be transferred to a bot

Captcha is required

Communication is disabled

Conflict

A connection of this type with this identifier already exists

The connection initiation token is invalid or has expired

The connection type is not supported

You’ve reached the maximum number of connections ({limit})

Unknown connection

Connection verification failed

This content was blocked by safety systems

We couldn’t delete the resource

Direct messages and friend requests are disabled on this instance

DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED

Section titled “DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED”

Email verification is required for this action

This community has already applied for discovery

This discovery application has already been reviewed

Discovery application wasn’t found

Discovery isn’t available on this instance

This community doesn’t meet the minimum member count for discovery

This community isn’t listed in discovery

Discriminator is required

Donation amount is invalid

Magic link has expired

Magic link is invalid

Magic link has already been used

Email service is temporarily unavailable

Email verification is required for this action

Explicit content can’t be sent

This feature isn’t available on self-hosted instances

This feature is temporarily disabled

File size is too large

Forbidden

User does not accept friend requests at this time

FRIEND_REQUEST_EMAIL_VERIFICATION_REQUIRED

Section titled “FRIEND_REQUEST_EMAIL_VERIFICATION_REQUIRED”

Email verification is required for this action

Gateway timeout

Something went wrong

Gift code is already redeemed

Your IP address {ipAddress} has been permanently blocked from the Fluxer API by platform administrators

Your IP address {ipAddress} has been temporarily blocked from the Fluxer API for 24 hours because of abusive or unusual access patterns

Gone

One or more selected users can’t be added to this group DM

GUILD_CREATION_EMAIL_VERIFICATION_REQUIRED

Section titled “GUILD_CREATION_EMAIL_VERIFICATION_REQUIRED”

Email verification is required for this action

Email verification is required for this action

You need to add a phone number to send messages in this community

The community template data is invalid or malformed

Community verification is required

Handoff code expired

Your data export request has expired

Your data export request failed

Your data export is still being prepared

This instance policy change is not allowed

Internal server error

Invalid ACLs format

Invalid API origin

Invalid or expired authorization token

Invalid bot flag

Invalid captcha

Invalid channel type

Calls can only be made in direct messages or group DMs

Invalid DSA report target

Invalid DSA ticket

Invalid DSA verification code

Invalid flags format

Invalid form body

Invalid handoff code

Permissions must be a valid integer

Permissions must be non-negative

Invalid phone number

Invalid phone verification code

Invalid request

Invalid stream key format

Invalid stream thumbnail payload

Invalid suspicious flags format

Invalid system flag

Invalid timestamp

Invalid or expired authorization token

Invalid WebAuthn authentication counter

Failed to verify WebAuthn credential

Invalid WebAuthn credential counter

Invalid WebAuthn public key format

Invites are disabled

IP authorization is required

IP authorization resend is on cooldown

IP authorization resend limit exceeded

This IP address cannot be added to the blocklist

You’ve reached the maximum of {limit, plural, one {# application} other {# applications}}

You’ve reached the maximum of {count, plural, one {# bookmark} other {# bookmarks}}

You’ve reached the maximum of {count, plural, one {# category channel} other {# category channels}}

You’ve reached the maximum of {count, plural, one {# emoji} other {# emojis}}

You’ve reached the maximum of {count, plural, one {# favorite meme} other {# favorite memes}}

You’ve reached the maximum of {count, plural, one {# friend} other {# friends}}

You’ve reached the maximum of {count, plural, one {# group DM} other {# group DMs}}

You’ve reached the maximum of {count, plural, one {# group DM recipient} other {# group DM recipients}}

You’ve reached the maximum of {count, plural, one {# community} other {# communities}}

You’ve reached the maximum of {count, plural, one {# community channel} other {# community channels}}

You’ve reached the maximum of {count, plural, one {# community member} other {# community members}}

You’ve reached the maximum of {count, plural, one {# community role} other {# community roles}}

You’ve reached the maximum of {count, plural, one {# invite} other {# invites}}

You’ve reached the maximum of {count, plural, one {# reaction} other {# reactions}}

You’ve reached the maximum of {count, plural, one {# sticker} other {# stickers}}

You’ve reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per channel

You’ve reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per community

Media metadata error

Method not allowed

Email verification is required for this action

You don’t have access to this resource or feature

Missing ACL

Missing or invalid authorization header

The requested scope isn’t supported or you don’t have permission to request it

You don’t have the permissions required to perform this action

This content has already been submitted to NCMEC

We couldn’t submit the report to NCMEC

This application isn’t a bot

Not found

You’re not friends with this user

Not implemented

No active call

No active subscription

No passkeys are registered

Invalid request

There are too many users with this username

NSFW content is age restricted

Passkey authentication failed

You are not eligible to add a phone number to your account

Phone number is already in use

We don’t send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account

This account cannot postpone the phone verification check

This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text

Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again

Your carrier says this number isn’t in service. Check the number and try again, or email support@fluxer.app if it’s correct

This isn’t a mobile number, so it can’t receive our text. Use a mobile number, or email support@fluxer.app if you think that’s wrong

Phone rate limit exceeded

We couldn’t verify this number automatically. Email support@fluxer.app and a person will review your account

Phone verification is required

No active subscription

Preview must be JPEG

We couldn’t process the request

Email verification is required for this action

Email verification is required for this action

You’re being rate limited

Email verification is required for this action

Registration is closed on this instance

This registration is waiting for admin approval

This registration request was rejected

This registration link is invalid or has expired

Report already resolved

You’ve been banned from submitting reports

Email verification is required for this action

This resource is being modified

Response validation failed: {errors}

Service unavailable

Session token mismatch

This instance is a single community, so additional communities cannot be created

The community for this instance cannot be deleted

You cannot leave the community for this instance

Slowmode rate limited

Service unavailable

Invalid request

Stream key channel mismatch

Stream key scope mismatch

Payment processing encountered an error

Gift code redemption is in progress

Invalid product selection

Invalid product configuration

No active subscription found

No purchase history found

No subscription found

Payment processing is temporarily unavailable

You can self-serve refund once every 30 days

This purchase is outside the 3-day self-serve refund window

Subscription is already set to cancel at period end

Subscription isn’t set to cancel

Webhook processing isn’t available

Stripe webhook signature is invalid

Stripe webhook signature is missing

Sudo mode is required

This tag is already taken

Temporary invite requires presence

Test harness is disabled

Test harness is forbidden

Two-factor authentication is required

Two-factor authentication isn’t enabled

Unauthorized

UNCLAIMED_ACCOUNT_CANNOT_ACCEPT_FRIEND_REQUESTS

Section titled “UNCLAIMED_ACCOUNT_CANNOT_ACCEPT_FRIEND_REQUESTS”

You’re not friends with this user

Invalid request

UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS

Section titled “UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS”

Invalid request

You need to complete your account setup before you can create communities

You can’t add yourself to a group DM

UNCLAIMED_ACCOUNT_CANNOT_JOIN_ONE_ON_ONE_VOICE_CALLS

Section titled “UNCLAIMED_ACCOUNT_CANNOT_JOIN_ONE_ON_ONE_VOICE_CALLS”

Invalid request

UNCLAIMED_ACCOUNT_CANNOT_JOIN_VOICE_CHANNELS

Section titled “UNCLAIMED_ACCOUNT_CANNOT_JOIN_VOICE_CHANNELS”

Invalid request

Invalid request

UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES

Section titled “UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES”

You can’t send messages to this user

UNCLAIMED_ACCOUNT_CANNOT_SEND_FRIEND_REQUESTS

Section titled “UNCLAIMED_ACCOUNT_CANNOT_SEND_FRIEND_REQUESTS”

Bots can’t send friend requests

Invalid request

You need to complete your account setup before you can submit reports

Unknown application

Channel wasn’t found

Unknown emoji

Unknown favorite meme

Unknown gift code

Community wasn’t found

Unknown harvest

Invite wasn’t found or is no longer valid

Member wasn’t found in this community

Message wasn’t found

Unknown report

Role wasn’t found

Unknown sticker

Unknown suspicious flag

User wasn’t found

The specified user flag isn’t recognized

Unknown voice region

Unknown voice server

Unknown WebAuthn credential

Unknown webhook

We couldn’t update the resource

This username is not available

This user is banned from this community

This user’s IP is banned from this community

This user isn’t in voice

This user owns communities

Validation failed

Voice channel is full

You’ve reached the maximum of {count, plural, one {# WebAuthn credential} other {# WebAuthn credentials}}

These codes appear in the code field of an element in the top-level errors array on an INVALID_FORM_BODY response. Each names one specific input constraint. A schema failure whose constraint names no code of its own reports one of the default schema failure codes. The registry is closed and holds exactly 236 codes. Each entry states the leading sentence of the English source message, the same way.

You’ve changed your accent color too often recently

AFK channel must be in this community

AFK channel must be a voice channel

This sensitive content filter isn’t available for your age

All channels must belong to this community

Animated avatars require Premium

Animated community banner requires ANIMATED_BANNER feature

Attachments aren’t allowed for this message

attachment_id, channel_id, message_id, and expires_at are required

attachment_id, channel_id, and message_id must be valid integers

Attachment with ID {attachmentId} wasn’t found in the message

Attachment “{filename}” must be an image file (png, jpg, jpeg, webp, or gif)

At least one entry is required

At least one recipient is required

You’ve changed your avatar too often recently

Banners require Premium

You’ve changed your banner too often recently

Base64 string length must be between {min} and {maxLength} characters

You’ve changed your bio too often recently

Bot discriminator can’t be changed

Bots can only search within a single community or channel

bucket is required

You can’t add yourself to a group DM

You can’t delete more than {max, plural, one {# message} other {# messages}} at once

You can’t DM yourself

Users with MANAGE_MESSAGES can only edit attachment descriptions, not other metadata

You can’t leave a community as the owner

CANNOT_POSITION_CHANNEL_RELATIVE_TO_ITSELF

Section titled “CANNOT_POSITION_CHANNEL_RELATIVE_TO_ITSELF”

You can’t position a channel relative to itself or its descendants

You can’t preload more than {max, plural, one {# channel} other {# channels}} at once

CANNOT_REFERENCE_ATTACHMENTS_WITHOUT_ATTACHMENTS

Section titled “CANNOT_REFERENCE_ATTACHMENTS_WITHOUT_ATTACHMENTS”

You can’t reference attachments when no attachments are provided

You can’t reorder the @everyone role

You can’t reply to a system message

You can’t set hoist position for the @everyone role

You can’t specify both before and after

Categories can’t have parents

Categories can’t have a parent channel

Changing your discriminator requires Premium

Channel not found

channel_id is required

Channel must be a DM or a group DM

Channel must be a voice channel

Channel name can’t be empty after normalization

Channel not found

Color value must not exceed 0xffffff

Color value must be at least 0x000000

Text must not exceed {maxLength, plural, one {# character} other {# characters}}

A context channel or community ID is required

CUSTOM_EMOJIS_REQUIRE_PREMIUM_OUTSIDE_SOURCE

Section titled “CUSTOM_EMOJIS_REQUIRE_PREMIUM_OUTSIDE_SOURCE”

You can’t use custom emojis outside their source communities without Premium

Custom emoji wasn’t found

You can’t use custom stickers in DMs without Premium

CUSTOM_STICKERS_REQUIRE_PREMIUM_OUTSIDE_SOURCE

Section titled “CUSTOM_STICKERS_REQUIRE_PREMIUM_OUTSIDE_SOURCE”

You can’t use custom stickers outside their source communities without Premium

Custom sticker wasn’t found

DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW

Section titled “DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW”

Discoverable communities must have a verification level of at least Low

Discriminator must be {min}–{max} digits

Discriminator must be between {min} and {max}

Duplicate attachment IDs aren’t allowed

Duplicate file index: {index}

Duplicate recipients aren’t allowed

Email is already in use

This email domain isn’t allowed for single sign-on

Email is required

Email address must be between {min} and {max} characters

Email must be changed via token

Email token expired

Embeds must not exceed {maxCharacters, plural, one {# character} other {# characters}} in total

Embed index {embedIndex} is out of bounds (message has {embedCount, plural, one {# embed} other {# embeds}})

Embed splash requires INVITE_SPLASH feature

Entrance sounds can be at most {max_ms, number}ms long

Entrance sounds must be MP3, OGG, M4A, or WAV audio

Invalid entrance sound scope

Entrance sound names must be between 1 and {max, number} characters

Entrance sound not found

You’ve reached the limit of {max, number} saved entrance sounds

Entrance sounds can be at most {max_bytes, number} bytes

We couldn’t fetch your SSO user info

We couldn’t parse the multipart form data

We couldn’t read the response from your SSO provider

We couldn’t upload the image

Favorite meme name is required

Favorite meme wasn’t found

Filename can’t be empty after normalization

Filename contains invalid characters

Filename must be between {min} and {max} characters

File index {index} exceeds the maximum allowed index of {maxIndex}

File not found

Forwarded messages can’t include content, embeds, attachments, or stickers

FORWARD_REFERENCE_REQUIRES_CHANNEL_AND_MESSAGE

Section titled “FORWARD_REFERENCE_REQUIRES_CHANNEL_AND_MESSAGE”

Forward message reference must include channel_id and message_id

Display name can’t contain “system message”

Global name must be between {min} and {max} characters

Global name can’t be “everyone” or “here”

Community banner requires BANNER feature

This feature cannot be toggled

Community ID must match the channel the referenced message was fetched from

Community ID is required for channel message and member search indexes

Image size exceeds {maxSize} bytes

Integer value is out of the valid int64 range

Invalid audit log reason

The provided value is in an invalid format

Invalid channel ID: {channelId}

Invalid code

Invalid date of birth format

Invalid email address format

Invalid email address format

Invalid email address format

Invalid email or password

Invalid email token

Invalid file field name: {key}

The provided value is in an invalid format

Invalid image format

Invalid integer format

Must be a valid ISO timestamp

Invalid JSON in payload_json

Invalid message data

Invalid MFA code

Invalid or expired authorization ticket

Invalid or expired authorization token

Invalid or expired password reset token

Invalid or expired revert token

Invalid or expired SSO state

Invalid or expired ticket

Invalid or expired verification token

Invalid or restricted RTC region: {region}

Invalid parent channel

Invalid email or password

Invalid proof token

Invalid role ID: {roleId}

Invalid RTC region: {region}

Invalid snowflake

Invalid snowflake

Invalid SSO authorization code

Invalid SSO token

Invalid timeout value

Invalid timezone identifier

The wildcard (*) can’t be combined with specific domains

Invalid URL format

Invalid URL format or attachment reference

Invalid verification code

Invite splash requires INVITE_SPLASH feature

You can only add up to {limit, plural, one {# tag} other {# tags}} per favorite meme

This media is already in your favorite memes

messages array is required and must not be empty

Messages with snapshots can’t be edited

MESSAGE_HISTORY_CUTOFF_BEFORE_GUILD_CREATION

Section titled “MESSAGE_HISTORY_CUTOFF_BEFORE_GUILD_CREATION”

Message history cutoff can’t be before the community was created

Message history cutoff can’t be in the future

message_ids can’t be empty

Multiple files for index {index} aren’t allowed

You must agree to the Terms of Service and Privacy Policy

You must be at least {minAge, plural, one {# year} other {# years}} old to create an account

You must enable 2FA on your account before requiring it for moderators

You must have an email address to change it

You must start a session before sending messages

Name can’t be empty after normalization

Only image or video attachments can be reported to NCMEC

New email must be different from your current email

Not a valid unicode emoji

No file was uploaded for attachment with ID {attachmentId}

No file was uploaded for attachment metadata with ID {attachmentId}

No new email was requested

No original email is on record

No uploaded parts are available to finalize

No valid media was found in the message

Original email is already verified

Original email must be verified first

Original verification isn’t required for this flow

Parent channel isn’t present in the community

Parent must be a category

PARSE_AND_USERS_OR_ROLES_CANNOT_BE_USED_TOGETHER

Section titled “PARSE_AND_USERS_OR_ROLES_CANNOT_BE_USED_TOGETHER”

You can’t use parse together with allowed_mentions.users or allowed_mentions.roles

Your password is too common

String length must be between {min} and {max} characters

Password isn’t set

Phone number must be in E.164 format (for example, +1234567890)

Preceding channel must share the same parent as the moved channel

Preceding channel isn’t present in the community

You’ve changed your pronouns too often recently

Recipient IDs can’t be empty

Recipient IDs must be strings

Recipient IDs must be valid snowflakes

Referenced attachment “{filename}” wasn’t found in message attachments

rows is required

Session timed out

size_bytes must be a valid integer

Invalid snowflake

SSO identity mismatch between id_token and userinfo

SSO is misconfigured

Your SSO provider didn’t return an email address

SSO test code is missing the email payload

We couldn’t allocate a discriminator for your SSO account

String must be exactly {length} characters

String length must be between {min} and {max} characters

System channel must be in this community

System channel must be a text channel

This tag is already taken

This vanity URL is already taken

This ticket has already been completed

Timeout can’t be longer than {maxDays, plural, one {# day} other {# days}} from now

Synced preferences exceed {max_bytes} bytes

Too many embeds

Too many files

There are too many users with this username

TOO_MANY_USERS_WITH_USERNAME_TRY_DIFFERENT

Section titled “TOO_MANY_USERS_WITH_USERNAME_TRY_DIFFERENT”

There are too many users with this username

Authenticator app two-factor isn’t enabled for this account

UNCLAIMED_ACCOUNTS_CAN_ONLY_SET_EMAIL_VIA_TOKEN

Section titled “UNCLAIMED_ACCOUNTS_CAN_ONLY_SET_EMAIL_VIA_TOKEN”

Unclaimed accounts can only set email via token

Unresolved attachment:// URL detected

Uploaded attachment {filename} wasn’t found

URL must be between {min} and {max} characters

URL must resolve to a publicly routable address

Username can’t contain “fluxer” or “system message”

You’ve changed your username too often recently

Username can only contain Latin letters (a-z, A-Z), numbers (0-9), and underscores (_)

Username must be between {min} and {max} characters

Username can’t be “everyone” or “here”

This user doesn’t have an email address

This user isn’t banned

USER_MUST_BE_A_BOT_TO_BE_MARKED_AS_A_SYSTEM_USER

Section titled “USER_MUST_BE_A_BOT_TO_BE_MARKED_AS_A_SYSTEM_USER”

User must be a bot to be marked as a system user

This user isn’t in the channel

The value for {name} must be an integer between {minValue} and {maxValue}

Vanity URL code is already taken

Vanity URL code can’t contain “fluxer”

Vanity URL code must be between {min} and {max} characters

Vanity URL can only contain lowercase letters (a-z), digits (0-9), and hyphens (-)

Vanity URL requires VANITY_URL feature

Verification code has expired

No verification code has been issued

You must be on the Visionary lifetime plan to use that discriminator

You can only update your voice activity sharing default once every 24 hours

VOICE_CHANNELS_CANNOT_BE_ABOVE_TEXT_CHANNELS

Section titled “VOICE_CHANNELS_CANNOT_BE_ABOVE_TEXT_CHANNELS”

Voice channels can’t be positioned above text channels within the same category

VOICE_MESSAGES_ATTACHMENT_DURATION_REQUIRED

Section titled “VOICE_MESSAGES_ATTACHMENT_DURATION_REQUIRED”

Voice message attachments must specify a duration

Voice message attachments must be audio files

VOICE_MESSAGES_ATTACHMENT_WAVEFORM_REQUIRED

Section titled “VOICE_MESSAGES_ATTACHMENT_WAVEFORM_REQUIRED”

Voice message attachments must include waveform data

Voice messages can’t have text content

Voice messages can’t have embeds

Voice messages can’t have favorite memes

Voice messages can’t have stickers

Voice message duration can’t exceed {maxDuration, plural, one {# second} other {# seconds}}

Voice messages must contain exactly one attachment

Webhook name must be between {min} and {max} characters

An error message is rendered in one resolved locale. Fluxer uses the configured locale of the authenticated account when the request is authenticated and the account has one. Otherwise it negotiates the request Accept-Language value against the canonical supported locale registry. Locales defines the resolution algorithm, including weights, language subtag reduction, and the en-US result.

A failure raised before the request locale is resolved, such as an IP ban denial, cannot see the account locale and negotiates Accept-Language on its own. That negotiation reads the header entries in order, ignores quality weights, and falls back to en-US.

Fluxer localises the message of a validation element that has a code the same way. A validation element with no code has the fixed English string written at the failure site. The code field is never localised, either in the envelope or in a validation element.

A code whose catalogue entry is missing for the resolved locale falls back to its English source template. A code with no registered template at all falls back to the message the failure supplied or to the code itself.