Basic authentication with a Backoffice login still works and existing integrations keep running. It is no longer the recommended way: it hands out a person’s password, it cannot be rotated without locking that person out, and it dies with their account. Use an API key instead.
Creating an API key
1
Open the Integrations page as a global admin
backoffice.vizito.be → Integrations. Only global admins can manage keys — a key can span several locations and outlives whoever created it, so issuing one is an account-wide decision.
2
Fill in the form
- Name — say which integration it is for. It is what you will read on the “last used” list a year from now.
- Locations — tick every location this integration needs. It gets nothing outside them.
- Expiry — never, 30 days, 90 days or a year.
- IP addresses (optional) — single addresses or CIDR ranges the key may be used from.
3
Copy the key
It is shown once. Vizito stores only a SHA-256 hash and cannot show it again — lose it and you create a new one.
Manage your API keys
Create, revoke and delete keys on the Backoffice Integrations page.
Using the key
A key looks likevzk_<key id>_<secret>. Send it as a bearer token:
X-API-Key header.
What a key may do
A key is its own principal, not a stand-in for the admin who created it. On the locations it was granted it has full administrator access; outside them it has none at all. It keeps working when that admin is demoted, moved or leaves — an integration should not break because somebody changed jobs. There are three things a key deliberately cannot do, so that a leaked key cannot escalate into an account:Create locations
It works inside the locations it was given; it does not hand out new ones.
Manage users
No creating Backoffice logins, changing roles or resetting passwords.
Manage API keys
No minting replacements, so revoking one actually means something.
403 for a key, whatever it covers. Do them in the Backoffice.
Every restriction is checked per request
Revoking a key, letting it expire, narrowing its locations or changing its IP list takes effect on the very next call. There is no cache to wait out. When debugging a403, work down this list:
- Is the header exactly
Authorization: Bearer <key>, one space, nothing truncated? - Is the key still active and not past its expiry date? Both are visible in the Backoffice.
- Is the calling server’s IP address in the key’s whitelist — including the new one you deployed to last week?
- Does the key cover the location you are addressing? Check against
GET /companiesList.
429 for the rest of the window. Successful requests never count towards it.
Microsoft Entra ID
If you would rather not store a Vizito secret at all, register your application in your own Entra ID directory and let Vizito trust tokens it issues.1
Register the application in Azure
Add a client secret or a certificate, and note the Directory (tenant) ID and the Application (client) ID.
2
Register it in Vizito
On the Integrations page, create a credential with authentication type Microsoft Entra ID and enter both ids. Pick its locations exactly as you would for an API key.
3
Get a token
4
Call the API with it
Authorization: Bearer <access token>. Tokens are valid for about an hour; ask for a fresh one when it expires.Keeping keys healthy
One key per integration
One key per integration
Sharing a key across two systems means revoking it breaks both, and “last used” tells you nothing. Keys are free — make one each.
Give it only the locations it needs
Give it only the locations it needs
A key for a badge printer at one site has no business reading the visitor log of another.
Restrict by IP where you can
Restrict by IP where you can
A server integration calls from a known address. Whitelisting it makes a leaked key useless anywhere else — just remember to update the list when you move servers.
Check 'last used' before revoking
Check 'last used' before revoking
The Integrations page shows when each key was last seen. It is the quickest way to tell a live integration from a forgotten experiment.

