Getting started
Errors
All machine-readable error codes returned by the Min API.
Every error response contains code. The list below is generated from the server catalog (lang/en/errors.php), so it always matches production. HTTP statuses are described in the overview.
| Code | Message (en) |
|---|---|
common.forbidden | Forbidden |
common.unauthenticated | Unauthenticated |
common.not_found | Not found |
common.server_error | Server error |
common.throttled | Too many requests. Try again later. |
common.csrf | Session expired. Refresh the page and try again. |
common.insufficient_permissions | Insufficient permissions |
auth.invalid_credentials | Invalid email or password |
auth.too_many_attempts | Too many failed attempts. Try again later. |
auth.sms_rate_limited | Too many SMS codes. Try again later. |
auth.email_rate_limited | Too many email codes. Try again later. |
auth.code_invalid | Invalid confirmation code. |
auth.code_expired | Confirmation code expired. Request a new one. |
auth.ticket_invalid | Sign-in session expired. Start again. |
auth.no_active_client | No active Min session to send the code to. |
auth.code_unavailable_in_region | Code login is not available in your region. |
auth.identifier_invalid | Enter a valid phone number or email. |
banned | Account is banned |
auth.invite_invalid | Invite code is invalid or already used |
auth.invite_required | Registration requires an invite code |
auth.registration_forbidden | Registration is not allowed from this IP |
auth.registration_ip_limit | The maximum number of accounts from this IP has been reached |
auth.oauth_expired | Sign-in link expired. Try again. |
auth.logged_out | Logged out. |
validation.failed | The given data was invalid. |
password.reset_sent | If an account exists, we sent a password reset email. |
password.reset_success | Password changed. Sign in with your new password. |
password.reset_invalid | Password reset link is invalid or expired. |
password.reset_failed | Could not reset password. Request a new link. |
password.wrong_current | Current password is incorrect. |
password.changed | Password changed. All other sessions were signed out. |
user.not_found | User not found |
user.unavailable | User is unavailable |
privacy.restricted | This user limits who can do that. |
user.wrong_password | Incorrect password. |
user.delete_confirm_invalid | Type DELETE to confirm. |
user.delete_failed | Could not delete the account. Try again or contact us. |
user.deleted | Account and related data were deleted. |
user.avatar_invalid | Invalid image file. |
user.avatar_too_large | Image is too large. Maximum size: 4000x4000 pixels. |
user.avatar_process_failed | Failed to process the image. |
conversation.channel_not_found | Channel not found |
conversation.not_member | Forbidden |
conversation.banned | You are banned in this channel |
conversation.private_not_editable | Private chats cannot be edited |
conversation.cannot_dm_self | Cannot create a chat with yourself |
conversation.no_users_to_add | No available users to add |
conversation.already_member | User is already in the conversation |
conversation.cannot_remove_owner | Cannot remove the owner |
conversation.owner_must_transfer | Transfer ownership or delete the channel first |
conversation.new_owner_must_be_member | The new owner must be a member |
conversation.members_groups_channels_only | Members can only be added to groups and channels |
conversation.remove_members_groups_channels_only | Members can only be removed from groups and channels |
conversation.subscribe_channels_only | You can only subscribe to channels |
conversation.preview_channels_only | Preview is only available for channels |
conversation.cannot_pin | This message cannot be pinned |
conversation.pin_limit | You can pin at most 5 messages |
conversation.search_query_required | Provide a query or a filter |
conversation.search_query_length | Query must be 2 to 100 characters |
conversation.search_invalid_type | Invalid type |
conversation.search_invalid_from | Invalid from date |
conversation.search_invalid_to | Invalid to date |
conversation.search_invalid_chat | Invalid chat filter |
conversation.search_invalid_author | Invalid author filter |
conversation.invite_groups_channels_only | Invite links are only available for groups and channels |
conversation.invite_already_member | You are already a member of this chat |
contact.link_invalid | Contact link is invalid or was reset |
contact.link_self | This is your own contact link |
conversation.invite_not_found | Link not found |
conversation.invite_invalid | Link is invalid |
conversation.username_invalid | Username: 5–32 characters, start with a letter, only a-z, 0-9 and _. |
conversation.username_unavailable | This username is not available. |
conversation.username_taken | This username is taken. |
conversation.username_reserved | This username is temporarily reserved. |
conversation.username_change_cooldown | Username can be changed at most once every 14 days. |
bot.username_suffix | Bot usernames must end with "bot". |
bot.limit_reached | Bot limit reached for this account. |
bot.not_found | Bot not found. |
bot.forbidden | You do not own this bot. |
conversation.mute_xor | Provide duration or until, not both. |
conversation.mute_invalid_date | Invalid date. |
conversation.mute_date_range | Date must be in the future and within one year. |
conversation.mute_invalid_duration | Allowed: 1h, 8h, forever. |
message.empty | Message cannot be empty |
message.sticker_mixed | A sticker cannot be mixed with files or a forward |
message.client_id_used | client_id already used |
message.channel_write_forbidden | Only the owner and admins can post in the channel |
message.sticker_unavailable | This emoji cannot be sent as a sticker |
message.cannot_forward | Message cannot be forwarded |
user.blocked | This user is blocked |
message.emoji_unavailable | Emoji is unavailable |
message.readers_groups_only | Read receipts are only available in groups |
message.cannot_edit | No permission to edit |
message.cannot_delete | No permission to delete |
message.attachment_incomplete | File upload was incomplete. Check your connection and try again. |
message.attachment_unreadable | Could not read the file. Try selecting it again. |
message.attachment_too_large | File is too large. Maximum size: 500 MB. |
message.attachment_too_many | You can send at most 10 files at once. |
message.attachment_forbidden_type | This file type is not allowed. |
message.attachment_unsupported | Unsupported file type. |
message.attachment_invalid_name | Invalid file name. |
message.attachment_invalid_image | File is not a valid image. |
message.attachment_mime_mismatch | File MIME type does not match its contents. |
message.attachment_image_too_large | Image is too large. Maximum size: 8000x8000 pixels. |
message.attachment_image_failed | Failed to process the image. |
message.attachment_audio_failed | Failed to process the audio. |
message.attachment_video_failed | Failed to process the video. |
message.attachment_failed | Failed to process the attachment. |
message.attachment_server | The server could not accept the file. Try again later. |
call.unavailable | Calls are temporarily unavailable |
call.not_in_channel | Calls are not available in channels |
call.none_active | No active call |
call.already_active | A call is already in progress in this conversation |
call.start_failed | Could not start the call. Try again. |
call.conflict | Could not update the call. Try again. |
invite.limit_reached | Active invite limit reached (:max). |
invite.forbidden | Forbidden |
emoji.set_not_found | Set not found |
emoji.set_limit | You can create at most 10 sets |
emoji.emoji_limit | A set can have at most 50 emojis |
emoji.shortcode_taken | This shortcode already exists in the set |
emoji.not_in_set | Emoji is not in this set |
emoji.set_empty | An empty set cannot be installed |
emoji.install_limit | You can install at most 30 sets created by others |
emoji.title_invalid | Invalid title. |
emoji.shortcode_invalid | Invalid shortcode. |
emoji.image_unreadable | Could not read the image. |
emoji.image_type | Allowed: jpeg, png, webp, gif. |
emoji.image_size | Maximum 128×128. |
video.invalid_url | Invalid link |
video.download_failed | Download failed |
webhook.livekit_unconfigured | LiveKit is not configured |
webhook.invalid_signature | Invalid webhook signature |
webhook.invalid_body | Invalid body |
client.unknown_platform | Unknown platform. Expected: :platforms |
auth.qr_invalid | This QR code has expired or was already used. Refresh it and scan again. |
reminder.time_invalid | Pick a reminder time at least a minute ahead and within a year. |
reminder.limit | Too many pending reminders. |