> ## Documentation Index
> Fetch the complete documentation index at: https://developers.vizito.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> From no credential to your first visitor list in five minutes.

## 1. Create an API key

API keys are managed in the Backoffice by a **global admin**.

<Steps>
  <Step title="Open the Integrations page">
    Go to [backoffice.vizito.be → Integrations](https://backoffice.vizito.be/#/app/integrations) and open the **API keys** section.
  </Step>

  <Step title="Create the key">
    Give it a name that says which integration it is for, tick the locations it may reach, and optionally set an expiry date and a list of IP addresses it may be used from.
  </Step>

  <Step title="Copy the key">
    The key is shown **once**. Store it in your secret manager right away — Vizito only keeps a hash of it and cannot show it again.

    <Warning>
      A key looks like `vzk_1a2b3c4d5e6f7890_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`. Treat it like a password: it is a global admin on the locations you picked.
    </Warning>
  </Step>
</Steps>

More detail — expiry, IP restrictions, Microsoft Entra ID — in [Authentication](/api-reference/authentication).

## 2. Check that it works

```bash theme={null}
curl https://api.vizito.eu/api/companiesList \
  -H "Authorization: Bearer $VIZITO_API_KEY"
```

```json Response theme={null}
[
  {
    "_id": "5f2a1b9c4d3e2f0011223344",
    "name": "Head office",
    "location_code": "HQ",
    "tier": "Enterprise",
    "mod_date": "2026-08-01T09:12:44.000Z"
  }
]
```

This is the one endpoint that needs no location id, and it tells you exactly which locations your key covers. Keep the `_id` — it is the `company_id` every other endpoint asks for.

<Tip>
  Nothing came back? An empty array means the key is valid but attached to no location you can see. A `403 Invalid API key` means the credential itself was refused — see [Errors](/api-reference/errors).
</Tip>

## 3. Read today's visitors

```bash theme={null}
curl -G https://api.vizito.eu/api/visitors/bycompany/5f2a1b9c4d3e2f0011223344 \
  -H "Authorization: Bearer $VIZITO_API_KEY" \
  -d count=25 \
  -d page=1 \
  --data-urlencode "sorting[signed_in]=desc"
```

```json Response theme={null}
{
  "total": 128,
  "visitors": [
    {
      "_id": "66b0f1a2c3d4e5f600112233",
      "first_name": "Ada",
      "last_name": "Lovelace",
      "company": "Analytical Engines Ltd",
      "email": "ada@example.com",
      "recipient": "Jane Doe",
      "visit_type": "5f2a1b9c4d3e2f0011223399",
      "signed_in": "2026-08-29T07:58:11.000Z",
      "signed_in_source": 1
    }
  ]
}
```

<Note>
  `count` and `page` are required on this endpoint. Pass `count=25&page=1` if you just want the most recent page.
</Note>

## 4. Sign someone in

```bash theme={null}
curl -X POST https://api.vizito.eu/api/visitors \
  -H "Authorization: Bearer $VIZITO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "5f2a1b9c4d3e2f0011223344",
    "first_name": "Ada",
    "last_name": "Lovelace",
    "company": "Analytical Engines Ltd",
    "email": "ada@example.com",
    "recipient": "Jane Doe",
    "recipient_mail": "jane.doe@example.com"
  }'
```

The visit is created exactly as if it happened on a kiosk: the host is notified, the badge is printed if the visit type prints one, and the sign-in email goes out.

## Where to go next

<CardGroup cols={2}>
  <Card title="Core concepts" icon="diagram-project" href="/documentation/concepts">
    What a visit type is, and why almost everything hangs off a location.
  </Card>

  <Card title="Sign in a visitor" icon="user-check" href="/documentation/signing-in-a-visitor">
    The full sign-in flow, custom fields included.
  </Card>

  <Card title="Pre-register visitors" icon="calendar-plus" href="/documentation/pre-registering-visitors">
    Create the visit up front and send the invitation.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/introduction">
    Every endpoint in detail.
  </Card>
</CardGroup>


## Related topics

- [Introduction](/index.md)
