---
# SPDX-License-Identifier: AGPL-3.0-or-later
title: Errors
description: The error envelope, the status fallback mapping, and both code registries.
---
A failed request returns a JSON [error response](/http-api/#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.
:::caution[Match on `code` alone]
The `message` field is rendered from a template, is translated per request, and can change wording without notice. An HTTP status is not enough on its own, because many distinct codes share one status.
:::
## Selecting the error code
An error response always has `code` and `message`. A failure with more to report adds its own members beside those two, 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`.
:::note[OAuth2 endpoints use a different envelope]
An OAuth2 protocol failure raised by the [OAuth2 resource](/http-api/oauth2/) answers with the RFC 6749 shape. That body is `error` and `error_description` and nothing else, so its values appear in no registry here.
:::
## Supplementary members
The error code determines which supplementary members a failure has, and most codes have none. A client reads only the members documented for the code it matched. `errors` is the list of field violations. `retry_after` is the delay before another attempt is admitted. `global` is `true` on a global rate limit denial and `false` on a route one. `required_scope` is the OAuth2 scope the request is missing. `has_mfa` and `methods` are the [sudo mode](/http-api/users/mfa/#sudo-mode) proofs an account can supply. `captcha_provider` and `altcha_challenge` are the challenge described in [CAPTCHA handling](/topics/captcha/).
`GLOBAL_IP_BANNED` and `GLOBAL_IP_TEMPORARILY_BANNED` have their own members:
- `ip_address` is the normalised client address.
- `appeal_email` is the address an appeal is sent to.
- `appeals_supported` is `true` for both kinds of ban.
- `ban_kind` is `permanent` or `temporary_24h`. `temporary_24h` covers every ban that records an expiry, whatever its length.
- `expires_at` is an ISO 8601 timestamp when the ban records an expiry, and `null` otherwise, including on every permanent ban.
## Validation failure codes
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](/http-api/#validation-error-object) documents the element shape.
Invalid JSON bodies, form bodies, query strings and path parameters return `INVALID_FORM_BODY`. Each entry in `errors` identifies a field and its message. An entry can also include a stable `code` from the [validation error code registry](#validation-error-code-registry). Entries without a code have an English message.
[Modify current user settings](/http-api/users/settings/#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`.
### Example
```json
{
"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."
}
]
}
```
:::note[An empty body reports the missing fields]
An empty or whitespace-only body becomes `{}`, so the response reports the fields the schema then finds missing. A body that does not parse as JSON returns 400 `INVALID_FORM_BODY` with one element at path `body` and code `INVALID_FORMAT`.
:::
Fluxer normalises empty values on all 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. It also 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.
:::caution[An enumerated validation failure answers 400 alone]
A validation failure whose elements have enumerated codes answers 400 with its elements in `errors`. Its top-level code is `INVALID_FORM_BODY` everywhere except [Modify current user settings](/http-api/users/settings/#modify-current-user-settings). Any other status, retry guidance, or response header from the original failure is dropped.
:::
### Default schema failure codes
A constraint in a route's request schema can name its own [validation code](#validation-error-code-registry). When it names none, Fluxer maps the failure to one of the codes below by the kind of constraint that failed.
| Constraint | Code | Description |
| --- | --- | --- |
| String longer than its maximum | CONTENT_EXCEEDS_MAX_LENGTH1 | A string value exceeded the maximum length the schema declares |
| Email format | INVALID_EMAIL_ADDRESS | A value declared as an email address did not parse as one |
| UUID format | INVALID_SNOWFLAKE | A value declared as a UUID did not parse as one |
| Any other constraint | INVALID_FORMAT2 | Every 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
## HTTP status fallback codes
A failure that has an HTTP status and no recognised Fluxer error code takes the fallback `code` its status selects below. Where an operation or one of the registries below names the error, Fluxer keeps that more specific code. An unclassified 401, 413, 422, or 429 falls back to `GENERAL_ERROR`.
Fluxer answers an unrecognised failure with 500 `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.
| Status | Code | Description |
| --- | --- | --- |
| 400 | BAD_REQUEST | The request was malformed or failed a precondition |
| 403 | FORBIDDEN | The caller lacks permission for the operation |
| 404 | NOT_FOUND1 | The target resource does not exist or is not visible |
| 405 | METHOD_NOT_ALLOWED | The HTTP method is not accepted on the route |
| 409 | CONFLICT | The request conflicts with the current state of the resource |
| 410 | GONE | The resource is permanently unavailable |
| 500 | INTERNAL_SERVER_ERROR2 | An unexpected internal failure occurred |
| 501 | NOT_IMPLEMENTED | The requested capability is not implemented |
| 502 | BAD_GATEWAY | An upstream dependency returned an invalid response |
| 503 | SERVICE_UNAVAILABLE | The service is temporarily unable to handle the request |
| 504 | GATEWAY_TIMEOUT | An upstream dependency did not respond in time |
| default3 | GENERAL_ERROR | Any 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
## Client errors as an abuse signal
Repeated invalid requests or credentials can trigger a temporary IP ban. Stop using a rejected credential. Change a rejected request before sending it again, and after a 429 wait `retry_after` before the next attempt.
:::caution[An automatic ban answers every request for 24 hours]
A temporary ban lasts 24 hours by default. Requests from the banned address return 403 `GLOBAL_IP_TEMPORARILY_BANNED`. Use `expires_at` from the response when available.
:::
## API error code registry
These codes appear in the top-level `code` field of an error response, sent as the exact JSON string shown. The registry is closed. Each entry states the leading sentence of the English source message, without its final full stop. Those messages call a [guild](/http-api/guilds/) a community.
:::note[The rendered `message` fills in the braced values]
A description containing a value in braces is an ICU MessageFormat template. `You've reached the maximum of {count, plural, one {# emoji} other {# emojis}}` renders as a complete sentence with the applicable limit.
:::
:::note[A rendered `message` can run longer than the registry entry]
Several source messages append a further recovery sentence with a template value such as a maximum size, a format list, or a retry delay.
:::
### `ACCESS_DENIED`
You don't have access to this resource or feature
### `ACCOUNT_IDENTITY_LOCKED`
The sign-in method is already set and can't be changed
### `ACCOUNT_LIMITED`
Messaging is paused on your account
### `ACCOUNT_SUSPENDED_PERMANENTLY`
This account has been permanently suspended
### `ACCOUNT_SUSPENDED_TEMPORARILY`
This account has been temporarily suspended
### `ACCOUNT_TOO_NEW_FOR_GUILD`
Your account is too new to send messages in this community
### `ACLS_MUST_BE_NON_EMPTY`
ACLs must be non-empty
### `ADMIN_API_KEY_NOT_FOUND`
Admin API key wasn't found
### `AGE_VERIFICATION_ALREADY_VERIFIED`
You've already completed age verification
### `ALREADY_FRIENDS`
You're already friends with this user
### `ANNOUNCEMENT_CHANNEL_REQUIRED`
This action is only available in announcement channels
### `APPLICATION_NOT_OWNED`
You don't own this application
### `BAD_GATEWAY`
Bad gateway
### `BAD_REQUEST`
Bad request
### `BLUESKY_OAUTH_AUTHORIZATION_FAILED`
We couldn't resolve that Bluesky handle
### `BLUESKY_OAUTH_NOT_ENABLED`
Bluesky connections are not enabled on this instance
### `BOTS_CANNOT_CREATE_GUILDS`
Bots can't create communities
### `BOTS_CANNOT_SEND_FRIEND_REQUESTS`
Bots can't send friend requests
### `BOT_ALREADY_IN_GUILD`
This bot is already in the community
### `BOT_IS_PRIVATE`
This bot is private
### `BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED`
Bot users can't use auth endpoints
### `BOT_USER_AUTH_SESSION_CREATION_DENIED`
Bot users can't create auth sessions
### `BOT_USER_GENERATION_FAILED`
Bot user generation failed
### `BOT_USER_NOT_FOUND`
Bot user wasn't found
### `CALL_ALREADY_EXISTS`
A call is already in progress in this channel
### `CANNOT_BLOCK_SYSTEM_USER`
You can't block the system user
### `CANNOT_EDIT_OTHER_USER_MESSAGE`
You can't edit another user's message
### `CANNOT_EXECUTE_ON_DM`
This action can't be performed in a DM
### `CANNOT_MODIFY_SYSTEM_WEBHOOK`
You can't edit system messages
### `CANNOT_REDEEM_PLUTONIUM_WITH_VISIONARY`
You can't redeem {premium_tier_name} with Visionary
### `CANNOT_REPORT_GUILD`
You can't report this community
### `CANNOT_REPORT_OWN_GUILD`
You can't report your own community
### `CANNOT_REPORT_OWN_MESSAGE`
You can't report your own message
### `CANNOT_REPORT_YOURSELF`
You can't report yourself
### `CANNOT_SEND_EMPTY_MESSAGE`
You can't send an empty message
### `CANNOT_SEND_FRIEND_REQUEST_TO_BLOCKED_USER`
You can't send a friend request to a blocked user
### `CANNOT_SEND_FRIEND_REQUEST_TO_SELF`
You can't send a friend request to yourself
### `CANNOT_SEND_MESSAGES_IN_NON_TEXT_CHANNEL`
You can't send messages in a non-text channel
### `CANNOT_SEND_MESSAGES_TO_USER`
You can't send messages to this user
### `CANNOT_SHRINK_RESERVED_SLOTS`
You can't shrink reserved slots
### `CANNOT_TRANSFER_OWNERSHIP_TO_BOT`
Community ownership can't be transferred to a bot
### `CAPTCHA_REQUIRED`
Verification required. Try again
### `CHANNEL_ALREADY_FOLLOWED`
This channel already receives updates from that announcement channel
### `CHANNEL_HAS_FOLLOWED_CHANNELS`
Remove the followed channels posting here before converting it to an announcement channel
### `CHANNEL_TYPE_CONVERSION_NOT_SUPPORTED`
Only text and announcement channels can be converted into each other
### `NEW_CONVERSATIONS_LIMITED`
You can't start new conversations right now. Please try again later
### `COMMUNICATION_DISABLED`
Communication is disabled
### `CONFLICT`
Conflict
### `CONNECTION_ALREADY_EXISTS`
A connection of this type with this identifier already exists
### `CONNECTION_INITIATION_TOKEN_INVALID`
The connection initiation token is invalid or has expired
### `CONNECTION_INVALID_TYPE`
The connection type is not supported
### `CONNECTION_LIMIT_REACHED`
You've reached the maximum number of connections ({limit})
### `CONNECTION_NOT_FOUND`
Unknown connection
### `CONNECTION_VERIFICATION_FAILED`
Connection verification failed
### `CONTENT_BLOCKED`
This content was blocked by safety systems
### `DELETION_FAILED`
We couldn't delete the resource
### `DIRECT_MESSAGES_DISABLED`
Direct messages and friend requests are disabled on this instance
### `DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `DISCOVERY_ALREADY_APPLIED`
This community has already applied for discovery
### `DISCOVERY_APPLICATION_ALREADY_REVIEWED`
This discovery application has already been reviewed
### `DISCOVERY_APPLICATION_NOT_FOUND`
Discovery application wasn't found
### `DISCOVERY_DISABLED`
Discovery isn't available on this instance
### `DISCOVERY_INSUFFICIENT_MEMBERS`
This community doesn't meet the minimum member count for discovery
### `DISCOVERY_NOT_DISCOVERABLE`
This community isn't listed in discovery
### `DISCRIMINATOR_REQUIRED`
Discriminator is required
### `DONATION_AMOUNT_INVALID`
Donation amount is invalid
### `DONATION_MAGIC_LINK_EXPIRED`
Magic link has expired
### `DONATION_MAGIC_LINK_INVALID`
Magic link is invalid
### `DONATION_MAGIC_LINK_USED`
Magic link has already been used
### `EMAIL_SERVICE_NOT_TESTABLE`
Email service is temporarily unavailable
### `EMAIL_UNAVAILABLE_ON_INSTANCE`
This instance doesn't use email
### `EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `EXPLICIT_CONTENT_CANNOT_BE_SENT`
Explicit content can't be sent
### `FEATURE_NOT_AVAILABLE_SELF_HOSTED`
This feature isn't available on self-hosted instances
### `FEATURE_TEMPORARILY_DISABLED`
This feature is temporarily disabled
### `FILE_SIZE_TOO_LARGE`
File size is too large
### `FOLLOW_TARGET_CONTENT_WARNING_REQUIRED`
Updates from a channel with a content warning can only go to a channel with a content warning or an age restriction
### `FOLLOW_TARGET_NOT_AGE_RESTRICTED`
Updates from an age-restricted channel can only go to an age-restricted channel
### `FORBIDDEN`
Forbidden
### `FRIEND_REQUEST_BLOCKED`
User does not accept friend requests at this time
### `FRIEND_REQUEST_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `GATEWAY_TIMEOUT`
Gateway timeout
### `GENERAL_ERROR`
Something went wrong
### `GIFT_CODE_ALREADY_REDEEMED`
Gift code is already redeemed
### `GLOBAL_IP_BANNED`
Your IP address {ipAddress} has been permanently blocked from the Fluxer API by platform administrators
### `GLOBAL_IP_TEMPORARILY_BANNED`
Your IP address {ipAddress} has been temporarily blocked from the Fluxer API
### `GONE`
Gone
### `GROUP_DM_RECIPIENTS_NOT_ADDABLE`
One or more selected users can't be added to this group DM
### `GUILD_CREATION_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `GUILD_CREATION_PERMISSION_REQUIRED`
You don't have permission to create communities on this instance
### `GUILD_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `GUILD_TEMPLATE_INVALID`
The community template data is invalid or malformed
### `GUILD_VERIFICATION_REQUIRED`
Community verification is required
### `HANDOFF_CODE_EXPIRED`
Handoff code expired
### `HARVEST_EXPIRED`
Your data export request has expired
### `HARVEST_FAILED`
Your data export request failed
### `HARVEST_NOT_READY`
Your data export is still being prepared
### `INSTANCE_POLICY_TRANSITION_NOT_ALLOWED`
This instance policy change is not allowed
### `INTERNAL_SERVER_ERROR`
Internal server error
### `INVALID_ACLS_FORMAT`
Invalid ACLs format
### `INVALID_API_ORIGIN`
Invalid API origin
### `INVALID_AUTH_TOKEN`
Invalid or expired authorization token
### `INVALID_BOT_FLAG`
Invalid bot flag
### `INVALID_CAPTCHA`
Verification failed. Try again
### `INVALID_CHANNEL_TYPE`
Invalid channel type
### `INVALID_CHANNEL_TYPE_FOR_CALL`
Calls can only be made in direct messages or group DMs
### `INVALID_DSA_REPORT_TARGET`
Invalid DSA report target
### `INVALID_DSA_TICKET`
Invalid DSA ticket
### `INVALID_DSA_VERIFICATION_CODE`
Invalid DSA verification code
### `INVALID_FLAGS_FORMAT`
Invalid flags format
### `INVALID_FOLLOW_TARGET_CHANNEL`
Followed channels can only post into text channels
### `INVALID_FORM_BODY`
Invalid form body
### `INVALID_HANDOFF_CODE`
Invalid handoff code
### `INVALID_ORIGIN_HANDOFF_NONCE`
This sign-in transfer doesn't match the one you started
### `INVALID_PASSKEY_BRIDGE_NONCE`
This passkey request could not be confirmed
### `INVALID_PERMISSIONS_INTEGER`
Permissions must be a valid integer
### `INVALID_PERMISSIONS_NEGATIVE`
Permissions must be non-negative
### `INVALID_REQUEST`
Invalid request
### `INVALID_STREAM_KEY_FORMAT`
Invalid stream key format
### `INVALID_STREAM_THUMBNAIL_PAYLOAD`
Invalid stream thumbnail payload
### `INVALID_SYSTEM_FLAG`
Invalid system flag
### `INVALID_TIMESTAMP`
Invalid timestamp
### `INVALID_TOKEN`
Invalid or expired authorization token
### `INVALID_WEBAUTHN_AUTHENTICATION_COUNTER`
Invalid WebAuthn authentication counter
### `INVALID_WEBAUTHN_CREDENTIAL`
Failed to verify WebAuthn credential
### `INVALID_WEBAUTHN_CREDENTIAL_COUNTER`
Invalid WebAuthn credential counter
### `INVALID_WEBAUTHN_PUBLIC_KEY_FORMAT`
Invalid WebAuthn public key format
### `INVITES_DISABLED`
Invites are disabled
### `IP_AUTHORIZATION_REQUIRED`
IP authorization is required
### `IP_AUTHORIZATION_RESEND_COOLDOWN`
IP authorization resend is on cooldown
### `IP_AUTHORIZATION_RESEND_LIMIT_EXCEEDED`
IP authorization resend limit exceeded
### `IP_BAN_DECLINED`
This IP address cannot be added to the blocklist
### `MAX_APPLICATIONS`
You've reached the maximum of {limit, plural, one {# application} other {# applications}}
### `MAX_BOOKMARKS`
You've reached the maximum of {count, plural, one {# bookmark} other {# bookmarks}}
### `MAX_CATEGORY_CHANNELS`
You've reached the maximum of {count, plural, one {# category channel} other {# category channels}}
### `MAX_EMOJIS`
You've reached the maximum of {count, plural, one {# emoji} other {# emojis}}
### `MAX_FAVORITE_MEMES`
You've reached the maximum of {count, plural, one {# favorite meme} other {# favorite memes}}
### `MAX_FRIENDS`
You've reached the maximum of {count, plural, one {# friend} other {# friends}}
### `MAX_GROUP_DMS`
You've reached the maximum of {count, plural, one {# group DM} other {# group DMs}}
### `MAX_GROUP_DM_RECIPIENTS`
You've reached the maximum of {count, plural, one {# group DM recipient} other {# group DM recipients}}
### `MAX_GUILDS`
You've reached the maximum of {count, plural, one {# community} other {# communities}}
### `MAX_GUILD_CHANNELS`
You've reached the maximum of {count, plural, one {# community channel} other {# community channels}}
### `MAX_GUILD_MEMBERS`
You've reached the maximum of {count, plural, one {# community member} other {# community members}}
### `MAX_GUILD_ROLES`
You've reached the maximum of {count, plural, one {# community role} other {# community roles}}
### `MAX_INVITES`
You've reached the maximum of {count, plural, one {# invite} other {# invites}}
### `MAX_REACTIONS`
You've reached the maximum of {count, plural, one {# reaction} other {# reactions}}
### `MAX_STICKERS`
You've reached the maximum of {count, plural, one {# sticker} other {# stickers}}
### `MAX_WEBHOOKS_PER_CHANNEL`
You've reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per channel
### `MAX_WEBHOOKS_PER_GUILD`
You've reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per community
### `MEDIA_METADATA_ERROR`
Media metadata error
### `MESSAGE_ALREADY_CROSSPOSTED`
This message has already been published
### `MESSAGE_CROSSPOST_RATE_LIMITED`
This channel has reached its publishing limit
### `MESSAGE_NOT_CROSSPOSTABLE`
This message cannot be published
### `METHOD_NOT_ALLOWED`
Method not allowed
### `MFA_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `MISSING_ACCESS`
You don't have access to this resource or feature
### `MISSING_ACL`
Missing ACL
### `MISSING_AUTHORIZATION`
Missing or invalid authorization header
### `MISSING_OAUTH_SCOPE`
The requested scope isn't supported or you don't have permission to request it
### `MISSING_PERMISSIONS`
You don't have the permissions required to perform this action
### `NCMEC_ALREADY_SUBMITTED`
This content has already been submitted to NCMEC
### `NCMEC_SUBMISSION_FAILED`
We couldn't submit the report to NCMEC
### `NOT_A_BOT_APPLICATION`
This application isn't a bot
### `NOT_FOUND`
Not found
### `NOT_FRIENDS_WITH_USER`
You're not friends with this user
### `NOT_IMPLEMENTED`
Not implemented
### `NO_ACTIVE_CALL`
No active call
### `NO_ACTIVE_SUBSCRIPTION`
No active subscription
### `NO_PASSKEYS_REGISTERED`
No passkeys are registered
### `NO_PENDING_DELETION`
Invalid request
### `NO_USERS_WITH_FLUXERTAG_EXIST`
There are too many users with this username
### `NSFW_CONTENT_AGE_RESTRICTED`
NSFW content is age restricted
### `PASSKEY_AUTHENTICATION_FAILED`
Passkey authentication failed
### `PREMIUM_PURCHASE_BLOCKED`
No active subscription
### `PREVIEW_MUST_BE_JPEG`
Preview must be JPEG
### `PROCESSING_FAILED`
We couldn't process the request
### `PROFILE_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `PUBLISHED_MESSAGE_EDIT_RATE_LIMITED`
This published message has reached its editing limit
### `PURCHASE_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `RATE_LIMITED`
You're being rate limited
### `REACTION_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `REGISTRATION_CLOSED`
Registration is closed on this instance
### `REGISTRATION_PENDING_APPROVAL`
This registration is waiting for admin approval
### `REGISTRATION_REJECTED`
This registration request was rejected
### `REGISTRATION_URL_INVALID`
This registration link is invalid or has expired
### `REPORT_ALREADY_RESOLVED`
Report already resolved
### `REPORT_BANNED`
You've been banned from submitting reports
### `REPORT_EMAIL_VERIFICATION_REQUIRED`
Email verification is required for this action
### `RESOURCE_LOCKED`
This resource is being modified
### `RESPONSE_VALIDATION_ERROR`
Response validation failed: {errors}
### `SERVICE_UNAVAILABLE`
Service unavailable
### `SESSION_TOKEN_MISMATCH`
Session token mismatch
### `SINGLE_COMMUNITY_CANNOT_CREATE_GUILDS`
This instance is a single community, so additional communities cannot be created
### `SINGLE_COMMUNITY_CANNOT_DELETE`
The community for this instance cannot be deleted
### `SINGLE_COMMUNITY_CANNOT_LEAVE`
You cannot leave the community for this instance
### `SLOWMODE_RATE_LIMITED`
Slowmode rate limited
### `SSO_REQUIRED`
Invalid request
### `STORE_BILLING_UNAVAILABLE`
In-app purchases are unavailable right now
### `STORE_NOTIFICATION_UNAUTHORIZED`
The notification signature is invalid
### `STORE_PURCHASE_INVALID`
This purchase could not be verified
### `STORE_PURCHASE_OWNED_BY_OTHER_ACCOUNT`
This purchase is linked to a different account
### `STORE_PURCHASE_SANDBOX_NOT_ENTITLED`
Test purchases cannot be applied to this account
### `STREAM_KEY_CHANNEL_MISMATCH`
Stream key channel mismatch
### `STREAM_KEY_SCOPE_MISMATCH`
Stream key scope mismatch
### `STRIPE_ERROR`
Payment processing encountered an error
### `STRIPE_GIFT_REDEMPTION_IN_PROGRESS`
Gift code redemption is in progress
### `STRIPE_INVALID_PRODUCT`
Invalid product selection
### `STRIPE_INVALID_PRODUCT_CONFIGURATION`
Invalid product configuration
### `STRIPE_NO_ACTIVE_SUBSCRIPTION`
No active subscription found
### `STRIPE_NO_PURCHASE_HISTORY`
No purchase history found
### `STRIPE_NO_SUBSCRIPTION`
No subscription found
### `STRIPE_PAYMENT_NOT_AVAILABLE`
Payment processing is temporarily unavailable
### `STRIPE_REFUND_COOLDOWN_ACTIVE`
You can self-serve refund once every 30 days
### `STRIPE_REFUND_OUTSIDE_WINDOW`
This purchase is outside the 3-day self-serve refund window
### `STRIPE_SUBSCRIPTION_ALREADY_CANCELING`
Subscription is already set to cancel at period end
### `STRIPE_SUBSCRIPTION_NOT_CANCELING`
Subscription isn't set to cancel
### `STRIPE_WEBHOOK_NOT_AVAILABLE`
Webhook processing isn't available
### `STRIPE_WEBHOOK_SIGNATURE_INVALID`
Stripe webhook signature is invalid
### `STRIPE_WEBHOOK_SIGNATURE_MISSING`
Stripe webhook signature is missing
### `SUDO_MODE_REQUIRED`
Sudo mode is required
### `TAG_ALREADY_TAKEN`
This tag is already taken
### `TEMPORARY_INVITE_REQUIRES_PRESENCE`
Temporary invite requires presence
### `TEST_HARNESS_DISABLED`
Test harness is disabled
### `TEST_HARNESS_FORBIDDEN`
Test harness is forbidden
### `TWO_FACTOR_REQUIRED`
Two-factor authentication is required
### `TWO_FA_NOT_ENABLED`
Two-factor authentication isn't enabled
### `UNAUTHORIZED`
Unauthorized
### `UNCLAIMED_ACCOUNT_CANNOT_ACCEPT_FRIEND_REQUESTS`
You're not friends with this user
### `UNCLAIMED_ACCOUNT_CANNOT_ADD_REACTIONS`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_CREATE_GUILDS`
You need to complete your account setup before you can create communities
### `UNCLAIMED_ACCOUNT_CANNOT_JOIN_GROUP_DMS`
You can't add yourself to a group DM
### `UNCLAIMED_ACCOUNT_CANNOT_JOIN_ONE_ON_ONE_VOICE_CALLS`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_JOIN_VOICE_CHANNELS`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_MAKE_PURCHASES`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES`
You can't send messages to this user
### `UNCLAIMED_ACCOUNT_CANNOT_SEND_FRIEND_REQUESTS`
Bots can't send friend requests
### `UNCLAIMED_ACCOUNT_CANNOT_SEND_MESSAGES`
Invalid request
### `UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS`
You need to complete your account setup before you can submit reports
### `UNKNOWN_APPLICATION`
Unknown application
### `UNKNOWN_CHANNEL`
Channel wasn't found
### `UNKNOWN_EMOJI`
Unknown emoji
### `UNKNOWN_FAVORITE_MEME`
Unknown favorite meme
### `UNKNOWN_GIFT_CODE`
Unknown gift code
### `UNKNOWN_GUILD`
Community wasn't found
### `UNKNOWN_HARVEST`
Unknown harvest
### `UNKNOWN_INVITE`
Invite wasn't found or is no longer valid
### `UNKNOWN_MEMBER`
Member wasn't found in this community
### `UNKNOWN_MESSAGE`
Message wasn't found
### `UNKNOWN_ORIGIN_HANDOFF`
This sign-in transfer has expired or was already used
### `UNKNOWN_PASSKEY_BRIDGE`
This passkey request has expired
### `UNKNOWN_PASSKEY_MIGRATION`
There is no passkey to update right now
### `UNKNOWN_REPORT`
Unknown report
### `UNKNOWN_ROLE`
Role wasn't found
### `UNKNOWN_STICKER`
Unknown sticker
### `UNKNOWN_STORE_PURCHASE`
Unknown store purchase
### `UNKNOWN_USER`
User wasn't found
### `UNKNOWN_USER_FLAG`
The specified user flag isn't recognized
### `UNKNOWN_VOICE_REGION`
Unknown voice region
### `UNKNOWN_VOICE_SERVER`
Unknown voice server
### `UNKNOWN_WEBAUTHN_CREDENTIAL`
Unknown WebAuthn credential
### `UNKNOWN_WEBHOOK`
Unknown webhook
### `UPDATE_FAILED`
We couldn't update the resource
### `USERNAME_NOT_AVAILABLE`
This username is not available
### `USERNAME_SIGN_IN_ONLY`
This is only available on instances where people sign in with a username
### `USER_BANNED_FROM_GUILD`
This user is banned from this community
### `USER_IP_BANNED_FROM_GUILD`
This user's IP is banned from this community
### `USER_NOT_IN_VOICE`
This user isn't in voice
### `USER_OWNS_GUILDS`
This user owns communities
### `VALIDATION_ERROR`
Validation failed
### `VOICE_CHANNEL_FULL`
Voice channel is full
### `WEBAUTHN_CREDENTIAL_LIMIT_REACHED`
You've reached the maximum of {count, plural, one {# WebAuthn credential} other {# WebAuthn credentials}}
## Validation error code registry
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](#default-schema-failure-codes). The registry is closed. Each entry states the leading sentence of the English source message, the same way.
### `ACCENT_COLOR_CHANGED_TOO_MANY_TIMES`
You've changed your accent color too often recently
### `AFK_CHANNEL_MUST_BE_IN_GUILD`
AFK channel must be in this community
### `AFK_CHANNEL_MUST_BE_VOICE`
AFK channel must be a voice channel
### `AGE_RESTRICTED`
This sensitive content filter isn't available for your age
### `ALL_CHANNELS_MUST_BELONG_TO_GUILD`
All channels must belong to this community
### `ANIMATED_AVATARS_REQUIRE_PREMIUM`
Animated avatars require Premium
### `ANIMATED_GUILD_BANNER_REQUIRES_FEATURE`
Animated community banner requires ANIMATED_BANNER feature
### `ATTACHMENTS_NOT_ALLOWED_FOR_MESSAGE`
Attachments aren't allowed for this message
### `ATTACHMENT_FIELDS_REQUIRED`
`attachment_id`, `channel_id`, `message_id`, and `expires_at` are required
### `ATTACHMENT_IDS_MUST_BE_VALID_INTEGERS`
`attachment_id`, `channel_id`, and `message_id` must be valid integers
### `ATTACHMENT_ID_NOT_FOUND_IN_MESSAGE`
Attachment with ID {attachmentId} wasn't found in the message
### `ATTACHMENT_MUST_BE_IMAGE`
Attachment "{filename}" must be an image file (png, jpg, jpeg, webp, or gif)
### `AT_LEAST_ONE_ENTRY_IS_REQUIRED`
At least one entry is required
### `AT_LEAST_ONE_RECIPIENT_REQUIRED`
At least one recipient is required
### `AVATAR_CHANGED_TOO_MANY_TIMES`
You've changed your avatar too often recently
### `BANNERS_REQUIRE_PREMIUM`
Banners require Premium
### `BANNER_CHANGED_TOO_MANY_TIMES`
You've changed your banner too often recently
### `BASE64_LENGTH_INVALID`
Base64 string length must be between {min} and {maxLength} characters
### `BIO_CHANGED_TOO_MANY_TIMES`
You've changed your bio too often recently
### `BOT_DISCRIMINATOR_CANNOT_BE_CHANGED`
Bot discriminator can't be changed
### `BOT_SEARCH_SCOPE_UNAVAILABLE`
Bots can only search within a single community or channel
### `BUCKET_IS_REQUIRED`
`bucket` is required
### `CANNOT_ADD_YOURSELF_TO_GROUP_DM`
You can't add yourself to a group DM
### `CANNOT_DELETE_MORE_THAN_100_MESSAGES`
You can't delete more than {max, plural, one {# message} other {# messages}} at once
### `CANNOT_DM_YOURSELF`
You can't DM yourself
### `CANNOT_EDIT_ATTACHMENT_METADATA`
Users with MANAGE_MESSAGES can only edit attachment descriptions, not other metadata
### `CANNOT_LEAVE_GUILD_AS_OWNER`
You can't leave a community as the owner
### `CANNOT_POSITION_CHANNEL_RELATIVE_TO_ITSELF`
You can't position a channel relative to itself or its descendants
### `CANNOT_PRELOAD_MORE_THAN_100_CHANNELS`
You can't preload more than {max, plural, one {# channel} other {# channels}} at once
### `CANNOT_REFERENCE_ATTACHMENTS_WITHOUT_ATTACHMENTS`
You can't reference attachments when no attachments are provided
### `CANNOT_REORDER_EVERYONE_ROLE`
You can't reorder the @everyone role
### `CANNOT_REPLY_TO_SYSTEM_MESSAGE`
You can't reply to a system message
### `CANNOT_SET_HOIST_FOR_EVERYONE_ROLE`
You can't set hoist position for the @everyone role
### `CANNOT_SPECIFY_BOTH_BEFORE_AND_AFTER`
You can't specify both `before` and `after`
### `CATEGORIES_CANNOT_HAVE_PARENTS`
Categories can't have parents
### `CATEGORIES_CANNOT_HAVE_PARENT_CHANNEL`
Categories can't have a parent channel
### `CHANGING_DISCRIMINATOR_REQUIRES_PREMIUM`
Changing your discriminator requires Premium
### `CHANNEL_DOES_NOT_EXIST`
Channel not found
### `CHANNEL_ID_IS_REQUIRED`
`channel_id` is required
### `CHANNEL_MUST_BE_DM_OR_GROUP_DM`
Channel must be a DM or a group DM
### `CHANNEL_MUST_BE_VOICE`
Channel must be a voice channel
### `CHANNEL_NOT_FOUND`
Channel not found
### `COLOR_VALUE_TOO_HIGH`
Color value must not exceed 0xffffff
### `COLOR_VALUE_TOO_LOW`
Color value must be at least 0x000000
### `CONTENT_EXCEEDS_MAX_LENGTH`
Text must not exceed {maxLength, plural, one {# character} other {# characters}}
### `CONTEXT_CHANNEL_OR_GUILD_ID_REQUIRED`
A context channel or community ID is required
### `CUSTOM_EMOJIS_REQUIRE_PREMIUM_OUTSIDE_SOURCE`
You can't use custom emojis outside their source communities without Premium
### `CUSTOM_EMOJI_NOT_FOUND`
Custom emoji wasn't found
### `CUSTOM_STICKERS_IN_DMS_REQUIRE_PREMIUM`
You can't use custom stickers in DMs without Premium
### `CUSTOM_STICKERS_REQUIRE_PREMIUM_OUTSIDE_SOURCE`
You can't use custom stickers outside their source communities without Premium
### `CUSTOM_STICKER_NOT_FOUND`
Custom sticker wasn't found
### `DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW`
Discoverable communities must have a verification level of at least Low
### `DISCRIMINATOR_INVALID_FORMAT`
`Discriminator must be {min}–{max} digits`
### `DISCRIMINATOR_NOT_SUPPORTED_ON_INSTANCE`
This instance doesn't use tags. Your username is unique on its own
### `DISCRIMINATOR_OUT_OF_RANGE`
Discriminator must be between {min} and {max}
### `DUPLICATE_ATTACHMENT_IDS_NOT_ALLOWED`
Duplicate attachment IDs aren't allowed
### `DUPLICATE_FILE_INDEX`
Duplicate file index: {index}
### `DUPLICATE_RECIPIENTS_NOT_ALLOWED`
Duplicate recipients aren't allowed
### `EMAIL_ALREADY_IN_USE`
Email is already in use
### `EMAIL_DOMAIN_NOT_ALLOWED_FOR_SSO`
This email domain isn't allowed for single sign-on
### `EMAIL_IS_REQUIRED`
Email is required
### `EMAIL_LENGTH_INVALID`
Email address must be between {min} and {max} characters
### `EMAIL_MUST_BE_CHANGED_VIA_TOKEN`
Email must be changed via token
### `EMAIL_TOKEN_EXPIRED`
Email token expired
### `EMBEDS_EXCEED_MAX_CHARACTERS`
Embeds must not exceed {maxCharacters, plural, one {# character} other {# characters}} in total
### `EMBED_INDEX_OUT_OF_BOUNDS`
Embed index {embedIndex} is out of bounds (message has {embedCount, plural, one {# embed} other {# embeds}})
### `EMBED_SPLASH_REQUIRES_FEATURE`
Embed splash requires INVITE_SPLASH feature
### `ENTRANCE_SOUND_DURATION_EXCEEDS_LIMIT`
Entrance sounds can be at most {max_ms, number}ms long
### `ENTRANCE_SOUND_INVALID_FORMAT`
Entrance sounds must be MP3, OGG, M4A, or WAV audio
### `ENTRANCE_SOUND_INVALID_SCOPE`
Invalid entrance sound scope
### `ENTRANCE_SOUND_NAME_LENGTH_INVALID`
Entrance sound names must be between 1 and {max, number} characters
### `ENTRANCE_SOUND_NOT_FOUND`
Entrance sound not found
### `ENTRANCE_SOUND_QUOTA_REACHED`
You've reached the limit of {max, number} saved entrance sounds
### `ENTRANCE_SOUND_SIZE_EXCEEDS_LIMIT`
Entrance sounds can be at most {max_bytes, number} bytes
### `FAILED_TO_FETCH_SSO_USER_INFO`
We couldn't fetch your SSO user info
### `FAILED_TO_PARSE_MULTIPART_FORM_DATA`
We couldn't parse the multipart form data
### `FAILED_TO_PARSE_SSO_USER_INFO`
We couldn't read the response from your SSO provider
### `FAILED_TO_UPLOAD_IMAGE`
We couldn't upload the image
### `FAVORITE_MEME_NAME_REQUIRED`
Favorite meme name is required
### `FAVORITE_MEME_NOT_FOUND`
Favorite meme wasn't found
### `FILENAME_LENGTH_INVALID`
Filename must be between {min} and {max} characters
### `FILE_INDEX_EXCEEDS_MAXIMUM`
File index {index} exceeds the maximum allowed index of {maxIndex}
### `FILE_NOT_FOUND`
File not found
### `FORWARD_MESSAGES_CANNOT_CONTAIN_CONTENT`
Forwarded messages can't include content, embeds, attachments, or stickers
### `FORWARD_REFERENCE_REQUIRES_CHANNEL_AND_MESSAGE`
Forward message reference must include `channel_id` and `message_id`
### `GLOBAL_NAME_CANNOT_CONTAIN_RESERVED_TERMS`
Display name can't contain "system message"
### `GLOBAL_NAME_LENGTH_INVALID`
Global name must be between {min} and {max} characters
### `GLOBAL_NAME_RESERVED_VALUE`
Global name can't be "everyone" or "here"
### `GUILD_BANNER_REQUIRES_FEATURE`
Community banner requires BANNER feature
### `GUILD_FEATURE_NOT_TOGGLEABLE`
This feature cannot be toggled
### `GUILD_ID_MUST_MATCH_REFERENCED_MESSAGE`
Community ID must match the channel the referenced message was fetched from
### `GUILD_ID_REQUIRED_FOR_SEARCH_INDEX`
Community ID is required for channel message and member search indexes
### `IMAGE_SIZE_EXCEEDS_LIMIT`
Image size exceeds {maxSize} bytes
### `INSTANCE_ADDRESS_REQUIRED`
This server uses usernames. Enter the username you want followed by @{host}
### `INTEGER_OUT_OF_INT64_RANGE`
Integer value is out of the valid int64 range
### `INVALID_AUDIT_LOG_REASON`
Invalid audit log reason
### `INVALID_BASE64_FORMAT`
The provided value is in an invalid format
### `INVALID_CHANNEL_ID`
Invalid channel ID: {channelId}
### `INVALID_CODE`
Invalid code
### `INVALID_DATE_OF_BIRTH_FORMAT`
Invalid date of birth format
### `INVALID_EMAIL_ADDRESS`
Invalid email address format
### `INVALID_EMAIL_FORMAT`
Invalid email address format
### `INVALID_EMAIL_LOCAL_PART`
Invalid email address format
### `INVALID_EMAIL_OR_PASSWORD`
Invalid email or password
### `INVALID_EMAIL_TOKEN`
Invalid email token
### `INVALID_FILE_FIELD_NAME`
Invalid file field name: {key}
### `INVALID_FORMAT`
The provided value is in an invalid format
### `INVALID_IMAGE_FORMAT`
Invalid image format
### `INVALID_INTEGER_FORMAT`
Invalid integer format
### `INVALID_ISO_TIMESTAMP`
Must be a valid ISO timestamp
### `INVALID_JSON_IN_PAYLOAD_JSON`
Invalid JSON in `payload_json`
### `INVALID_LOGIN_OR_PASSWORD`
Invalid username or password
### `INVALID_MESSAGE_DATA`
Invalid message data
### `INVALID_MFA_CODE`
Invalid MFA code
### `INVALID_OR_EXPIRED_AUTHORIZATION_TICKET`
Invalid or expired authorization ticket
### `INVALID_OR_EXPIRED_AUTHORIZATION_TOKEN`
Invalid or expired authorization token
### `INVALID_OR_EXPIRED_RESET_TOKEN`
Invalid or expired password reset token
### `INVALID_OR_EXPIRED_REVERT_TOKEN`
Invalid or expired revert token
### `INVALID_OR_EXPIRED_SSO_STATE`
Invalid or expired SSO state
### `INVALID_OR_EXPIRED_TICKET`
Invalid or expired ticket
### `INVALID_OR_EXPIRED_VERIFICATION_TOKEN`
Invalid or expired verification token
### `INVALID_OR_RESTRICTED_RTC_REGION`
Invalid or restricted RTC region: {region}
### `INVALID_PARENT_CHANNEL`
Invalid parent channel
### `INVALID_PASSWORD`
Invalid email or password
### `INVALID_PROOF_TOKEN`
Invalid proof token
### `INVALID_RECOVERY_KEY`
Invalid username or recovery key
### `INVALID_ROLE_ID`
Invalid role ID: {roleId}
### `INVALID_RTC_REGION`
Invalid RTC region: {region}
### `INVALID_SNOWFLAKE`
Invalid snowflake
### `INVALID_SNOWFLAKE_FORMAT`
Invalid snowflake
### `INVALID_SSO_AUTHORIZATION_CODE`
Invalid SSO authorization code
### `INVALID_SSO_TOKEN`
Invalid SSO token
### `INVALID_TIMEOUT_VALUE`
Invalid timeout value
### `INVALID_TIMEZONE_IDENTIFIER`
Invalid timezone identifier
### `INVALID_TRUSTED_DOMAINS`
The wildcard (*) can't be combined with specific domains
### `INVALID_URL_FORMAT`
Invalid URL format
### `INVALID_URL_OR_ATTACHMENT_FORMAT`
Invalid URL format or attachment reference
### `INVALID_VERIFICATION_CODE`
Invalid verification code
### `INVITE_SPLASH_REQUIRES_FEATURE`
Invite splash requires INVITE_SPLASH feature
### `MAX_FAVORITE_MEME_TAGS_EXCEEDED`
You can only add up to {limit, plural, one {# tag} other {# tags}} per favorite meme
### `MEDIA_ALREADY_IN_FAVORITE_MEMES`
This media is already in your favorite memes
### `MESSAGES_ARRAY_REQUIRED_AND_NOT_EMPTY`
`messages` array is required and must not be empty
### `MESSAGES_WITH_SNAPSHOTS_CANNOT_BE_EDITED`
Messages with snapshots can't be edited
### `MESSAGE_HISTORY_CUTOFF_BEFORE_GUILD_CREATION`
Message history cutoff can't be before the community was created
### `MESSAGE_HISTORY_CUTOFF_IN_FUTURE`
Message history cutoff can't be in the future
### `MESSAGE_IDS_CANNOT_BE_EMPTY`
`message_ids` can't be empty
### `MULTIPLE_FILES_FOR_INDEX_NOT_ALLOWED`
Multiple files for index {index} aren't allowed
### `MUST_AGREE_TO_TOS_AND_PRIVACY_POLICY`
You must agree to the Terms of Service and Privacy Policy
### `MUST_BE_MINIMUM_AGE`
You must be at least {minAge, plural, one {# year} other {# years}} old to create an account
### `MUST_ENABLE_2FA_BEFORE_REQUIRING_FOR_MODS`
You must enable 2FA on your account before requiring it for moderators
### `MUST_HAVE_EMAIL_TO_CHANGE_IT`
You must have an email address to change it
### `MUST_START_SESSION_BEFORE_SENDING`
You must start a session before sending messages
### `NAME_EMPTY_AFTER_NORMALIZATION`
Name can't be empty after normalization
### `NCMEC_ATTACHMENT_MUST_BE_IMAGE_OR_VIDEO`
Only image or video attachments can be reported to NCMEC
### `NEW_EMAIL_MUST_BE_DIFFERENT`
New email must be different from your current email
### `NOT_A_VALID_UNICODE_EMOJI`
Not a valid unicode emoji
### `NO_FILE_FOR_ATTACHMENT`
No file was uploaded for attachment with ID {attachmentId}
### `NO_FILE_FOR_ATTACHMENT_METADATA`
No file was uploaded for attachment metadata with ID {attachmentId}
### `NO_NEW_EMAIL_REQUESTED`
No new email was requested
### `NO_ORIGINAL_EMAIL_ON_RECORD`
No original email is on record
### `NO_UPLOADED_PARTS_TO_FINALIZE`
No uploaded parts are available to finalize
### `NO_VALID_MEDIA_IN_MESSAGE`
No valid media was found in the message
### `ORIGINAL_EMAIL_ALREADY_VERIFIED`
Original email is already verified
### `ORIGINAL_EMAIL_MUST_BE_VERIFIED_FIRST`
Original email must be verified first
### `ORIGINAL_VERIFICATION_NOT_REQUIRED`
Original verification isn't required for this flow
### `PARENT_CHANNEL_NOT_IN_GUILD`
Parent channel isn't present in the community
### `PARENT_MUST_BE_CATEGORY`
Parent must be a category
### `PARSE_AND_USERS_OR_ROLES_CANNOT_BE_USED_TOGETHER`
You can't use `parse` together with `allowed_mentions.users` or `allowed_mentions.roles`
### `PASSWORD_IS_TOO_COMMON`
Your password is too common
### `PASSWORD_LENGTH_INVALID`
String length must be between {min} and {max} characters
### `PASSWORD_NOT_SET`
Password isn't set
### `PRECEDING_CHANNEL_MUST_SHARE_PARENT`
Preceding channel must share the same parent as the moved channel
### `PRECEDING_CHANNEL_NOT_IN_GUILD`
Preceding channel isn't present in the community
### `PRONOUNS_CHANGED_TOO_MANY_TIMES`
You've changed your pronouns too often recently
### `RECIPIENT_IDS_CANNOT_BE_EMPTY`
Recipient IDs can't be empty
### `RECIPIENT_IDS_MUST_BE_STRINGS`
Recipient IDs must be strings
### `RECIPIENT_IDS_MUST_BE_VALID_SNOWFLAKES`
Recipient IDs must be valid snowflakes
### `REFERENCED_ATTACHMENT_NOT_FOUND`
Referenced attachment "{filename}" wasn't found in message attachments
### `ROWS_IS_REQUIRED`
`rows` is required
### `SESSION_TIMEOUT`
Session timed out
### `SIZE_BYTES_MUST_BE_VALID_INTEGER`
`size_bytes` must be a valid integer
### `SNOWFLAKE_OUT_OF_RANGE`
Invalid snowflake
### `SSO_IDENTITY_MISMATCH`
SSO identity mismatch between id_token and userinfo
### `SSO_MISCONFIGURED`
SSO is misconfigured
### `SSO_PROVIDER_DID_NOT_RETURN_EMAIL`
Your SSO provider didn't return an email address
### `SSO_TEST_CODE_MISSING_EMAIL`
SSO test code is missing the email payload
### `SSO_UNABLE_TO_ALLOCATE_DISCRIMINATOR`
We couldn't allocate a discriminator for your SSO account
### `STRING_LENGTH_EXACT`
String must be exactly {length} characters
### `STRING_LENGTH_INVALID`
String length must be between {min} and {max} characters
### `SYSTEM_CHANNEL_MUST_BE_IN_GUILD`
System channel must be in this community
### `SYSTEM_CHANNEL_MUST_BE_TEXT`
System channel must be a text channel
### `TAG_ALREADY_TAKEN`
This tag is already taken
### `TAG_STYLE_REQUIRES_EMAIL_SIGN_IN`
Tags are only available when people sign in with email
### `THIS_VANITY_URL_IS_ALREADY_TAKEN`
This vanity URL is already taken
### `TICKET_ALREADY_COMPLETED`
This ticket has already been completed
### `TIMEOUT_CANNOT_EXCEED_365_DAYS`
Timeout can't be longer than {maxDays, plural, one {# day} other {# days}} from now
### `TOO_LARGE`
Synced preferences exceed {max_bytes} bytes
### `TOO_MANY_EMBEDS`
Too many embeds
### `TOO_MANY_FILES`
Too many files
### `TOO_MANY_USERS_WITH_THIS_USERNAME`
There are too many users with this username
### `TOO_MANY_USERS_WITH_USERNAME_TRY_DIFFERENT`
There are too many users with this username
### `TOTP_NOT_ENABLED`
Authenticator app two-factor isn't enabled for this account
### `UNCLAIMED_ACCOUNTS_CAN_ONLY_SET_EMAIL_VIA_TOKEN`
Unclaimed accounts can only set email via token
### `UNRESOLVED_ATTACHMENT_URL`
Unresolved `attachment://` URL detected
### `UPLOADED_ATTACHMENT_NOT_FOUND`
Uploaded attachment {filename} wasn't found
### `URL_LENGTH_INVALID`
URL must be between {min} and {max} characters
### `URL_NOT_PUBLICLY_ROUTABLE`
URL must resolve to a publicly routable address
### `USERNAME_ALREADY_TAKEN`
This username is already taken
### `USERNAME_CANNOT_CONTAIN_RESERVED_TERMS`
Username can't contain "fluxer" or "system message"
### `USERNAME_CHANGED_TOO_MANY_TIMES`
You've changed your username too often recently
### `USERNAME_INVALID_CHARACTERS`
Username can only contain Latin letters (a-z, A-Z), numbers (0-9), and underscores (_)
### `USERNAME_LENGTH_INVALID`
Username must be between {min} and {max} characters
### `USERNAME_RESERVED_VALUE`
Username can't be "everyone" or "here"
### `USER_DOES_NOT_HAVE_AN_EMAIL_ADDRESS`
This user doesn't have an email address
### `USER_IS_NOT_BANNED`
This user isn't banned
### `USER_MUST_BE_A_BOT_TO_BE_MARKED_AS_A_SYSTEM_USER`
User must be a bot to be marked as a system user
### `USER_NOT_IN_CHANNEL`
This user isn't in the channel
### `VALUE_MUST_BE_INTEGER_IN_RANGE`
The value for `{name}` must be an integer between {minValue} and {maxValue}
### `VANITY_URL_CODE_ALREADY_TAKEN`
Vanity URL code is already taken
### `VANITY_URL_CODE_CANNOT_CONTAIN_FLUXER`
Vanity URL code can't contain "fluxer"
### `VANITY_URL_CODE_LENGTH_INVALID`
Vanity URL code must be between {min} and {max} characters
### `VANITY_URL_INVALID_CHARACTERS`
Vanity URL can only contain lowercase letters (a-z), digits (0-9), and hyphens (-)
### `VANITY_URL_REQUIRES_FEATURE`
Vanity URL requires VANITY_URL feature
### `VERIFICATION_CODE_EXPIRED`
Verification code has expired
### `VERIFICATION_CODE_NOT_ISSUED`
No verification code has been issued
### `VISIONARY_REQUIRED_FOR_DISCRIMINATOR`
You must be on the Visionary lifetime plan to use that discriminator
### `VOICE_ACTIVITY_SHARING_ON_COOLDOWN`
You can only update your voice activity sharing default once every 24 hours
### `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`
Voice message attachments must specify a duration
### `VOICE_MESSAGES_ATTACHMENT_MUST_BE_AUDIO`
Voice message attachments must be audio files
### `VOICE_MESSAGES_ATTACHMENT_WAVEFORM_REQUIRED`
Voice message attachments must include waveform data
### `VOICE_MESSAGES_CANNOT_HAVE_CONTENT`
Voice messages can't have text content
### `VOICE_MESSAGES_CANNOT_HAVE_EMBEDS`
Voice messages can't have embeds
### `VOICE_MESSAGES_CANNOT_HAVE_FAVORITE_MEMES`
Voice messages can't have favorite memes
### `VOICE_MESSAGES_CANNOT_HAVE_STICKERS`
Voice messages can't have stickers
### `VOICE_MESSAGES_DURATION_EXCEEDS_LIMIT`
Voice message duration can't exceed {maxDuration, plural, one {# second} other {# seconds}}
### `VOICE_MESSAGES_REQUIRE_SINGLE_ATTACHMENT`
Voice messages must contain exactly one attachment
### `WEBHOOK_NAME_LENGTH_INVALID`
Webhook name must be between {min} and {max} characters
## Localisation
Messages use the account's locale or the request's `Accept-Language` header, with an English fallback. Early rejections such as IP bans can use the header rather than the account locale. See [Locales](/topics/locales/).
The `code` field is never translated. Validation entries without a code have an English message.