Skip to content
Docs
Sign inGet started
Updated Oct 18, 2026

Settings: Messages

The text your customers get for each refusal, and the notices that pop up after sign-in. Atlas has a default for every one; reword any of them.

Open it now:Settings, Messages

Two kinds of message

KindWhat it isWhere the customer sees it
Refusal textThe reason a sign-in or account action failed.Your program reads it with GetErrorMessage() and shows it however it likes. The library does not open a window for a refusal.
Notice (tagged event)A message the library shows in its own notice window.After a license sign-in (startup, success), after a refused license sign-in, and after a file download.

Leaving a refusal empty keeps the Atlas default. Leaving a notice empty shows nothing, which is how every notice starts.

Edit a message

The list on the left is split into Licenses, Accounts and Notices. It has a search box and an all, customized, default filter, and shows how many messages you changed ("N of M customized"). A dot marks each changed one. Pick a message and the editor shows:

PartDoes
VariablesClick one to add it to the end of your text. It is replaced with the real value when the message is sent, for example {USERNAME} or {EXPIRY}. Each message accepts only the variables listed for it.
PresetsSix tones, on every message: Professional, Casual, Instructive, Concise, Directive and Error codes. Each loads starter text into the box, which you can still edit.
Text boxOpens with the text Atlas sends today already in it, so changing one word is a one-word edit. A notice has no default and opens empty. Restore default text puts the default back.
SaveEnabled once you change something. Text that matches the default, or an empty refusal, is not stored: the message simply goes back to the Atlas default. Refused, with the offending names, if the text uses a variable the message does not accept.
Reset to defaultAppears on a changed message and deletes your version.

A message tagged customized is yours; the others show Atlas default. The banned, unauthorized build and too many sessions messages are also sent when an account signs in; the editor says so. A saved or reset message applies to the next request; Atlas refreshes its copy of the application's messages when you save.

Every message you can change

GroupMessages
License issuesInvalid license key, license expired, license paused.
Bans and securityTemporarily banned, permanently banned, hardware ID banned.
Device and network bindingHardware mismatch, IP mismatch, unauthorized app hash.
SessionsToo many sessions.
Network and locationVPN or proxy detected, country blocked.
SystemApplication disabled.
NoticesAfter sign-in: startup notice. After sign-in: success notice. After a refused sign-in. After a file download.
Account: RegistrationUsername taken, email already registered, invalid email, email required, license key required.
Account: Sign-inWrong username or password, account paused, account expired, bound to another machine, a PC on hold after a reset, bound to another IP, email verification required.
Account: Sign-in codeWrong code, expired, locked out, started on another machine, already verified, bad format, resend cooldown.
Account: Email confirmationWrong code, expired, locked out, already confirmed, bad format.
Account: Key redemptionInvalid key, key already used, key paused, key has no duration, account not found, bound to another machine.
Account: Password resetLocked out, code expired, wrong code, new password not allowed, already completed.

Some replies are not customizable on purpose and stay generic: an invalid API key, a malformed request and an internal error. Which message a customer meets for which cause is in Why a sign-in was refused.

Variables

VariablesAvailable in
{IP}, {HWID}, {LICENSE}, {DEVICE}Every message.
{EXPIRY}, {LEVEL}, {NOTE}, {LOCATION}, {REGISTERED_HWID}, {LAST_IP}License refusals past the key lookup (expired, paused, hardware, IP, sessions, country blocked, application disabled) and the startup, success and file download notices. {EXPIRY} is also in Account expired; {REGISTERED_HWID} and {LAST_IP} in the account binding messages, and {QUARANTINE_UNTIL} in the released PC message.
{SESSIONS}, {MAX_SESSIONS}Too many sessions, startup and success notices.
{REASON}, {BAN_TYPE}The ban messages (both), and {REASON} alone in License paused and Account paused.
{COUNTRY}VPN or proxy detected, country blocked.
{USERNAME}The account messages that name an account. Not in: email already registered, invalid email, email required, license key required, account not found, the two bad-format messages, wrong sign-in code, resend cooldown and wrong reset code.
{EMAIL}Email already registered, invalid email.
{ATTEMPTS_LEFT}, {CODE_TTL_MIN}, {COOLDOWN}{ATTEMPTS_LEFT}: wrong code (sign-in code, email confirmation, password reset). {CODE_TTL_MIN}: sign-in code expired. {COOLDOWN}: resend cooldown.

The list above the text box always shows exactly what the open message accepts. Write what happened and who to contact; the customer reads nothing else.