Skip to content
XICBOT

Settings

Deutsch
Documentation · Getting started

Sign-in, sign-up and access

Create an account, confirm your address, sign in with a password, code or security key, reset your password and accept a team invitation.

In plain language

This page explains how you get into the application. You create an account and confirm your email address. Then you sign in. You can use a password, a code or a security key. If you forgot your password, you can set a new one. If someone invites you to their team, you accept the invitation here. Without sign-in, only the access pages open.

Last updated

All documentation topics

Access to XICBOT runs through the app at app.xicbot.de. Without a session only the access pages open there, and every work area leads to sign-in. This page describes each field, message and limit, from creating an account to accepting a team invitation.

The access pages

AddressPagePurpose
/anmeldenSign inSign in with email address and password, plus a code or security key when two-step verification is active.
/registrierenCreate accountCreate a new account together with your login.
/bestaetigenConfirm your addressRedeem the link from the confirmation email.
/kennwortReset passwordRequest a link for a new password.
/kennwort/neuNew passwordSave a new password using the link from the email.
/einladungAccept invitationFollow a team invitation.
/barrierefreiheitAccessibility statementLinked as Accessibility below the sign-in form.

The Sign in and Create account entries in the header of xicbot.de lead to /anmelden and /registrieren and pass on the language of the page you were reading. The links in the emails carry a language as well: the confirmation email uses the language of the account, the reset email the language of the page where the link was requested, and the invitation the language of the person who sent it. A language counts as chosen on this device if it was set with the language button, through an address with ?sprache=de or ?sprache=en as used by these entries, or earlier on this device. Only that language is sent by the sign-in page, German or English, and every successful sign-in sets it as the account language. Without a choice on this device the page sends no language; the account keeps its own, and the application takes it over after sign-in. The confirmation email, the email after a password change and the invitations the person sends follow it.

Which language the app shows and how an address can set it is described under Interface language.

Creating an account

The Create account page opens with the line “Create an account. The address is confirmed via a link before the first assistant is built.” Below the form, “Already have an account?” with Sign in leads to the sign-in page.

FieldRequiredRules
Company or projectyesAt most 160 characters. Becomes the name of the account.
Your nameno, marked “optional”At most 120 characters.
Email addressyesA valid address of at most 190 characters that is not taken yet; how it is stored is explained below the table. It also serves as the email address for invoices.
PasswordyesAt least 12 characters, including at least one letter and one digit. The note below the field reads “At least 12 characters, including letters and digits.”
Repeat passwordyesMust match the password, otherwise the page shows “The two passwords do not match.”

What is kept is the base form of your address: without surrounding spaces, in lower case and without any suffix after a plus sign, and for some large mailbox providers also without dots before the @. Max.Muster+shop@example.com thus becomes max.muster@example.com. A domain with umlauts is kept in its ASCII form, so info@müller-bau.invalid becomes info@xn--mller-bau-q9a.invalid; you can sign in with either spelling. XICBOT does not accept umlauts before the @ or a domain without a dot, because no message can be delivered to such an address; the field reports it as invalid. An address whose part before the @ is in quotation marks stays as it is. If the base form is already taken, no second account can be created. You can sign in with any spelling that leads to the same base form; the confirmation goes to the base form.

  1. Step 1

    Check in the browser

    If a required field is empty or the passwords differ, the page marks the fields and reports “Please check the marked fields.” Nothing is sent in that case.

  2. Step 2

    Account and login are created

    The server checks the fields again. It creates an account named after Company or project and your login with the Owner role. What each role may do is described under Team and roles.

  3. Step 3

    Confirmation email

    A confirmation link valid for 48 hours is sent to the address. If sending fails, the account is kept anyway and the next page says so; you can request a new message after signing in.

  4. Step 4

    Confirm your address page

    The app switches to Confirm your address with the text “We sent you a confirmation link. Open it to activate your account.” At this point you are not signed in yet.

Sign-up messages

If the server rejects a field, the message appears at that field and combines the field name with a rule, for example “Email address is already taken.” or “Password must contain at least one digit.” Above the form the page then shows “Please check the marked fields.” The rules read:

  • “is required.” - the field is empty.
  • “is not a valid email address.”
  • “is already taken.”
  • “is too long.” and “is too short.” - the length limit from the table is exceeded or not reached.
  • “must contain at least one letter.” and “must contain at least one digit.” - the password rule is not met.

If the service does not respond, the page shows “The service is not responding right now.” More than 5 attempts per minute or 20 per hour from the same connection are answered with “Too many attempts. Please wait a moment.” A connection means the single address for IPv4 and the /64 network for IPv6.

Confirming your address

The link in the email opens Confirm your address with the line “We check the link from the email and unlock the account.” It is valid for 48 hours and works once. Once a newly requested message goes out, older links that have not been used become invalid.

StateDisplay
Opened without a link token“We sent you a confirmation link. Open it to activate your account.”
After registration, when the message did not go out“Your account has been created, but the message with the confirmation link did not go out. Sign in and have it sent again from there.”
Link being checked“Checking …”
Link valid“Your address is confirmed. You can sign in now.”
Link expired or used“This link has expired or was already used.” followed by “Sign in: if your address is not confirmed yet, you can request a new message there.”
Check failed, for example without a connection, after too many attempts or on a service errorThe cause, for example “The service is not responding right now.”, “Too many attempts. Please wait a moment.” or “The service reported an error. Please try again later.”, plus the Check again button, which checks the link once more.

Every state shows Sign in below it. Confirming does not sign you in by itself. More than 30 requests per minute from the same connection are rejected; this limit is shared with saving a new password.

Before confirmation

You can sign in before confirming. The app then shows the banner Email address not confirmed yet with the text “Until you confirm, assistants, knowledge, conversations and analytics stay locked. Open the link from our message - or have it sent again.” All other work areas are locked as well, such as setup, tools, team and billing; there the app shows “This area stays locked until the email address is confirmed.” Sign out and the account settings under Account security remain available: password, two-step verification, Signed-in devices and Recent sign-ins. From the Administration role upward, API keys and webhooks can be created and changed as well, provided the plan includes the API; existing ones can be revoked and deleted even without it. A team invitation can also be accepted before confirming; the address then counts as confirmed.

CaseBanner shows
Send the message again pressed“Sending …”, the button is disabled meanwhile.
Request accepted“The message is on its way. Check your spam folder too.” in place of the button.
Request failed, for example without a connection or when the message cannot be sent“The message did not go out. Please try again later.”, the button stays.
More than 3 requests per minute for the same account“Too many attempts. Please wait a moment.”, the button stays.
Address confirmed in the meantimeNo message is sent, the app reloads its state and the banner disappears.

Each new link is valid for another 48 hours; older unused links expire at the same moment. If the message does not go out, no new link is created and a previous link that is still valid stays valid.

Signing in

The Sign in page opens with “Sign in with your email address. If two-step verification is active, the one-time code follows.”

Field or buttonWhen visibleRules
Email addressin both stepsRequired. Upper and lower case and a suffix after a plus sign make no difference. Read-only in the second step.
Passwordfirst stepRequired. The Forgot your password? link at the field leads to /kennwort.
Six-digit codesecond step, when an authenticator app is set upRequired, at most 6 characters. Touch devices show the numeric keypad.
Sign infirst step; in the second step only together with the code fieldShows “Sending …” while the request runs. Another click during that time sends nothing.
Sign in with a security keysecond step, when a security key is set upStarts the confirmation on the key through the browser.
Back to passwordsecond stepReturns to the first step: the address can be changed again, the password field is empty and the focus is in the address field. Disabled while a request is being sent.

Below the form come “or”, “No account yet?” with the Create account button and the Accessibility link. After a successful sign-in the app opens the page you came from: an address you opened, for example from an email or a bookmark, the page on which the session ended, or an open invitation. The ?sprache= addition is dropped. After signing out yourself and when a takeover ends there is no return; without a target the app opens its start page.

The second step

  1. Step 1

    Password checked

    If the login has a second step set up, the server first checks address and password. If both match, the password field disappears and the password is not sent again.

  2. Step 2

    Code or key

    The page asks “Please enter the code from your authenticator app.” or, when only a security key is set up, “Please confirm the sign-in on your security key.” With both set up, the code prompt appears and both ways are offered.

  3. Step 3

    Time limit

    The second step is valid for 10 minutes, only from the same connection and for at most 5 failed attempts. After that the page shows “The sign-in has expired. Please enter your password again.” and sign-in starts over.

  4. Step 4

    Without the device

    Below the form it says “Device not at hand?”. If the account still has recovery codes, the hint names that route and, for when none are left, the address mail@xicbot.de; otherwise only the address. After a check, two-factor authentication for the account can be reset.

You set up the authenticator app and security keys under Account security.

Sign-in messages

MessageCause
“Please check the marked fields.”Address or password is missing; the field shows “… is required.”
“Email address or password is not correct.”The address is unknown or the password is wrong. Both cases get the same answer, so nobody can probe which addresses have a login.
“That code is not correct. Please try again.”Wrong code; the code field is cleared.
“The sign-in has expired. Please enter your password again.”The second step expired, came from a different connection or reached 5 failed attempts.
“The security key could not be confirmed.”The key was not accepted.
“Confirmation on the security key was cancelled.”The browser cancelled the request to the key, for example because the dialog was closed.
“Signing in with a security key is currently unavailable. Please sign in with the code from your authenticator app.”The service is not accepting the security key at confirmation right now, but the login also has a code. The Sign in with a security key button disappears and the Six-digit code field stays.
“Signing in with a security key is currently unavailable. Please write to mail@xicbot.de.”The service is not accepting security keys right now, and the login only has keys as its second step. Sign-in starts over.
“Too many attempts. Please wait a moment.”One of the limits in the next section has been reached.
“This account is locked. Please write to mail@xicbot.de.”The account is not active.
“Your session has expired. Please sign in again.”The server no longer accepts the sign-in, for example after the 30 days, no matter in which tab of the same browser this was noticed; see the session section.
“The session was ended in another window. Please sign in again.”In another tab of the same browser you signed out or set a new password through the link, see the session section.
“The service is not responding right now.”No connection to the service.

Limits on failed attempts

  • Per address and connection: 5 failed attempts per minute and 20 per hour. Wrong codes count too. A successful sign-in resets this counter.
  • Per connection across all addresses: 30 failed attempts per minute and 300 per hour. Wrong passwords and unknown addresses count here. A successful sign-in does not reset this counter.
  • A connection means the single address for IPv4 and the /64 network for IPv6.

The lock applies to the connection the failed attempts come from, not to the login: someone on a different connection with the correct password can still sign in. The API states the waiting time in seconds in the retry_in field.

Session and signing out

Each sign-in lasts 30 days. Sign out sits at the right of the header bar; what else the bar holds is described under Header bar.

  • The sign-in is kept in the browser's storage and survives closing the tab and the browser. It ends after 30 days, when you choose Sign out, when the password is reset or when the password is changed on another device.
  • Sign out ends only the sign-in in this browser; other devices stay signed in. The browser removes the sign-in even if the server has already discarded it. The Sign in page opens afterwards.
  • All tabs of the same browser share one sign-in. If you sign out in one tab or set a new password there through the link for the login that is signed in, the others show “The session was ended in another window. Please sign in again.”; if one tab signs in, the others adopt that sign-in.
  • If the server rejects a sign-in, for example after the 30 days have passed, “Your session has expired. Please sign in again.” appears on the Sign in page, in that tab and in the other tabs of the same browser as well. The rejection ends only the sign-in the request was made with: if a new sign-in has happened in another tab in the meantime, that new sign-in stays.
  • The account status is checked on every request. If the account is locked, the app shows “This account is locked. Please write to mail@xicbot.de.”
  • An hourly maintenance run deletes expired sign-ins, expired reset links and expired confirmation links that were not redeemed. A redeemed confirmation is kept as proof.

Account security shows which devices are signed in.

Switching accounts

If your login belongs to more than one account, you switch via Switch account in the header bar. The role applies per account, and a switch applies to the whole login, on other devices too. What the list looks like, what happens on a switch and which limits apply is described under Switching accounts.

How roles are assigned is described under Team and roles.

Forgotten password

Forgot your password? on the sign-in page leads to Reset password: “We send a link to the stored address that lets you set a new password.”

  1. Step 1

    Enter the address

    “Enter the email address you sign in with.” The Email address field is required, and the button is called Request link.

  2. Step 2

    Confirmation

    The page answers “If an account exists for this address, the link is on its way. It is valid for 60 minutes and can be used once.” whether an account exists or not. When a new email goes out, it replaces the previous link.

  3. Step 3

    Limits

    More than 3 requests per hour for the same address from the same connection, or more than 20 per hour from the same connection across all addresses, are answered with “Too many attempts. Please wait a moment.” Each mailbox receives at most 10 emails per hour; beyond that the page answers as usual but sends nothing, and the last link delivered stays valid.

Back to sign-in returns to Sign in.

Setting a new password

The link in the email opens New password: “Choose a new password. All open sessions of this account are ended in the process.” The fields are Password and Repeat password, the same rule as at sign-up applies, and the button is called Save password.

CaseDisplay
Saved“Your password is saved. All existing sessions of this login have been ended.” All devices of this login are signed out, including this browser and all its tabs if it was signed in with the same login. A session of a different login in this browser stays signed in.
Link expired, used or unknown“This link has expired or has already been used. Please request a new one.”
Opened without a link tokenThe same text plus the Reset password link.
Passwords differ“The two passwords do not match.”
Rule not metThe message at the field, for example “Password must contain at least one digit.”
More than 30 attempts per minute from the same connection“Too many attempts. Please wait a moment.” The limit is shared with confirming the address.

Back to sign-in is shown below the form in every state.

Accepting a team invitation

Invited people receive an email with a link to /einladung. The invitation is valid for 7 days and carries one of the roles Read, Edit or Administration; Owner is transferred, not invited. The Accept invitation page opens with “This link leads into a team. Choose a password - your address is already set and cannot be changed here.” Below it a line shows the team, the invited address and the role; if the team name is missing, it reads Team.

CaseWhat the page showsWhat happens
No login for this addressThe fields Your name (optional), Password (at least 12 characters, letters and digits) and Repeat password plus the Accept invitation button. The address is not a field.The login is created with the role from the invitation, the address counts as confirmed and the sign-in lasts 30 days. Team opens afterwards. A login that was closed after being removed from its last team does not count as existing here: it is reopened with the new password, without two-step verification and without security keys.
Login exists, not signed in“An account already exists for this address. Sign in and you will be brought back here to accept the invitation.” and Sign inSee the note below the table.
Signed in with the invited addressThe Accept invitation button“You are now part of the team.”, then the application switches into the inviting account and rebuilds on the Overview; if that is already the active account, Team opens. You reach your previous account through Switch account. If your own address is not confirmed yet, it counts as confirmed once you accept, and open confirmation links expire.
Signed in with a different addressThe Accept invitation buttonAfter the click: “This invitation belongs to a different address. Sign in with the invited account.”
Audit log entry cannot be written, no existing login“Not saved: the entry in the audit log could not be written. Please try again.”Neither the login nor the membership is created; the invitation stays open.
Audit log entry cannot be written, signed in“Not saved: the entry in the audit log could not be written. Please try again.”The invitation stays open, and you do not belong to the team yet.
Invitation expired, withdrawn or already accepted“This invitation has expired or was withdrawn. Please ask for a new one.” and Sign inNothing.
Checking the invitation failed, for example without a connection, after too many attempts or on a service errorThe cause, for example “The service is not responding right now.”, and the Check again buttonNothing; Check again looks up the invitation once more.
Opened without a link token“This link carries no invitation.” and Sign inNothing.

If, after accepting, switching into the inviting account fails, or loading the session fails where Team would open next, “You are now part of the team.” stays on screen and Overview leads on; the link reloads the application. The invitation has then already been accepted and cannot be accepted a second time. More than 20 requests per minute from the same connection are rejected. Sending and withdrawing invitations is described under Team and roles.

Via the API

Every step on this page runs through the API at https://app.xicbot.de/api/v1/. Signed-in calls carry the token in the header Authorization: Bearer …. Details are under API authentication, API: account and API limits.

POST /api/v1/register

Creates the account and login. Fields: company (required, up to 160 characters), name (up to 120), email (required, up to 190), password and password_confirmation (at least 12 characters, letters and digits), locale (de or en). Response 201 with tenant, user, confirmation_pending: true and mail_sent, which tells whether the message with the confirmation link is queued. email must be a deliverable address: a domain with umlauts is stored in ASCII form, while umlauts before the @ and a domain without a dot return 422 with validation.email. An address already in use returns 422 with validation.unique on the email field.

Authentication
None
Rate limit
5 per minute and 20 per hour per connection

POST /api/v1/verify

Redeems the confirmation link. Field token. Response with confirmed: true; an expired, used or unknown link returns 422 invalid_token.

Authentication
None
Rate limit
30 per minute per connection, shared with /api/v1/password/reset

POST /api/v1/login

Fields email and password, optionally totp (up to 10 characters) and locale. A locale of de or en in the call that completes the sign-in becomes the account language; if it is missing or has another value, the previous language stays and the sign-in does not fail because of it. Without a second step the server responds with token, expires_at (30 days) and user. With a second step it returns 428 totp_required or webauthn_required with challenge, expires_in (600 seconds) and methods; the second call sends email, challenge and totp or webauthn instead of the password. Errors: 422 bad_credentials, bad_totp, bad_webauthn or challenge_expired, 403 tenant_… for a locked account, 429 too_many_attempts with retry_in in seconds, 503 webauthn_unconfigured as long as the service does not accept security keys: in the first call for a login whose second step consists of keys only, in the second call with webauthn. 422 webauthn_not_offered in the second call with webauthn if the service accepts keys but methods did not contain webauthn. Neither refusal in the second call counts as a failed attempt; the challenge stays valid.

Authentication
None
Rate limit
Failed attempts: 5 per minute and 20 per hour per address and connection, 30 per minute and 300 per hour per connection

POST /api/v1/password/forgot

Requests the reset link. Field email (required, up to 190), plus locale. Response ok: true whether an account exists or not, and also when the per-mailbox cap has been reached.

Authentication
None
Rate limit
3 per hour per address and connection, 20 per hour per connection; at most 10 emails per hour per mailbox

POST /api/v1/password/reset

Sets the new password. Fields token, password and password_confirmation. Response with ok and sessions_ended; all tokens of the login are deleted. An expired or unknown link returns 422 invalid_token.

Authentication
None
Rate limit
30 per minute per connection, shared with /api/v1/verify

GET /api/v1/invitation/{token}

Shows an open invitation with tenant, email, role, expires_at and account_exists. An unknown invitation or one that is no longer open returns 404 invalid_token.

Authentication
None
Rate limit
20 per minute per connection

POST /api/v1/invitation/accept

Accepts an invitation without an existing login. Fields token, password, password_confirmation, optionally name (up to 120) and locale. Response 201 with a token valid for 30 days, expires_at, user and tenant. If a usable login already exists for the address, the response is 409 login_required with email. A login that was closed after being removed from its last team is reopened instead and starts like a new one: with the password from this request, without two-step verification and without security keys. An invalid invitation returns 422 invalid_token. Without a log entry the acceptance does not take effect: neither the login nor the membership is created, and the service responds with 500 not_logged.

Authentication
None
Rate limit
20 per minute per connection

POST /api/v1/team/invitations/accept

Accepts an invitation with the signed-in login, also before your own address is confirmed. Field token. Response with joined, the inviting account in tenant (id, name) and the role in role; if the login already belongs to the team, it keeps its current role and role reports that one. An address that is not confirmed yet counts as confirmed afterwards, and open confirmation links expire. The service does not switch the active account; if the inviting account is not already the active one, the application then calls /api/v1/tenant/switch. 403 wrong_account if the invitation belongs to a different address, 422 invalid_token for an invalid invitation, including when the inviting account has been deleted. Without a log entry the acceptance does not take effect, and the service responds with 500 not_logged.

Authentication
Signed in

POST /api/v1/logout

Deletes only the token of this call; other sign-ins remain. Response logged_out: true.

Authentication
Signed in

POST /api/v1/confirmation/resend

Sends a new confirmation link; once the message is on its way, older links become invalid. Response confirmed: false and sent: true; if the address is already confirmed, confirmed: true and sent: false. If the message does not go out, the service responds with 503 mail_failed, confirmed: false and sent: false; older links that are still valid then stay valid.

Authentication
Signed in
Rate limit
3 per minute per account

POST /api/v1/tenant/switch

Switches the active account. Field tenant. The target has to be active; the current account does not.

Authentication
Signed in
Rate limit
20 per minute

Frequent questions

The confirmation email does not arrive. What can I do?

Look in your spam folder. Sign in and choose Send the message again in the banner; the new link is valid for 48 hours and older ones expire. Signing in works without confirmation.

Can I sign in before confirming my address?

Yes. Until then the work areas are locked, such as assistants, knowledge, conversations, team and billing. Sign out and the account settings under Account security remain available.

Why does sign-in not say whether the address or the password is wrong?

So nobody can probe which addresses have a login. For the same reason Request link gives the same answer when resetting, whether an account exists or not.

Why am I signed out everywhere after resetting my password?

A new password ends all sessions of the login, including this browser if it was signed in with that login. Anyone who was signed in with the old password is signed out as well. Sign in again with the new password.

How long do I stay signed in?

30 days per sign-in, even if you close the browser in between. It ends earlier when you choose Sign out in this browser, when the password is reset or when the password is changed on another device.

I already have a login and was invited. How do I accept?

Open the link from the invitation email and choose Sign in. After signing in with the invited address you come back to the invitation and choose Accept invitation; if you are already signed in, the button is there right away. The application then switches into the inviting account; you reach your previous account through Switch account. An address that is not confirmed yet counts as confirmed once you accept.

Something still unclear?

Tell us which page and which step you mean. We reply personally.

Enquiry in three steps

  1. 1. Topic
  2. 2. Your case
  3. 3. Contact

What is this about?

One click is enough, everything else is optional.

Tell us briefly about your case

Everything in this step is optional. It helps us reply with something concrete straight away instead of asking back.

Enquiries per month, roughly (optional)
When should it start? (optional)
How can we reach you?

Name and email address are enough. We reply personally.

We use your details to handle your enquiry. More on this in the privacy policy.