> For the complete documentation index, see [llms.txt](https://help.verkada.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.verkada.com/classic-alarms/configuration/configure-classic-alarms-site-settings/generate-a-user-or-general-keycode-with-classic-alarms.md).

# Generate a User or General Keycode

Learn the keycode differences and how to generate keycodes

{% hint style="success" %}
Verkada announced the global End of Sale (August 1, 2026) and End of Life (August 1, 2027) for Classic Alarms. Eligible customers can upgrade to New Alarms at no charge through January 31, 2027. Visit [Verkada.com/alarms/upgrade](https://www.verkada.com/alarms/upgrade) to get started.
{% endhint %}

{% hint style="success" %}
This article is a guide for classic Alarms. Refer to this [article](/new-alarms/configuration/alarm-sites/configure-new-alarms-site-settings.md) if you have new Alarms. See [New Alarms vs Classic Alarms](/new-alarms/getting-started/new-alarms-vs-classic-alarms.md) if you are unsure which version of Alarms you have.
{% endhint %}

***

**User keycodes** are associated to an individual account and have the advantage of controlling each user’s permissions to arm/disarm the alarm system through their unique keycode and site permissions.

**General keycodes** are not associated with an individual account; instead, they are given a generic name and are **used for one alarm site only**. The objective is to create a generic keycode for a group of people to use, such as janitorial staff or a master keycode in case of emergencies for that specific site.

***

## Generate a keycode

{% hint style="danger" %}
Before you can generate a keycode, you must be an Org Admin, and you must confirm your account permissions.
{% endhint %}

{% stepper %}
{% step %}
**In Verkada Command, go** **to** **All Products** > **Classic** **Alarms.**\
​

* Go to **All Products** > **Classic** **Alarms > Select site > Settings > Users & Keycodes > Search for User > Generate Code**.\
  ​
  {% endstep %}

{% step %}
**Select a site > Settings.**
{% endstep %}

{% step %}
**Under** **Users & Keycodes > Search for User > Generate Code**.
{% endstep %}

{% step %}
**Next to the code, click** <img src="https://2326462210-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9tIFgMOGbY4p9wWaKQhl%2Fuploads%2Fgit-blob-d56cc7620c09dfffbe1a2a938546edeacd143ca4%2Fb631e96aca20e0afbe37c36ed2548fd48f00a422.png?alt=media" alt="" data-size="line"> **to change the pre-generated code.**
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
User keycodes and general keycodes cannot conflict with one another. If you enter a code that already exists in your command account, an error appears.

<img src="https://2326462210-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9tIFgMOGbY4p9wWaKQhl%2Fuploads%2Fgit-blob-545c4277f9ad48f8613db9e47ef62d04b186baa3%2Fc61e120da28044902b7017dd50c3f7216d91d4bd.png?alt=media" alt="" data-size="original">
{% endhint %}

{% hint style="danger" %}
You **must** have the alarms user permission to use this code tied to a user account. However, if you are a Site Admin, you are an alarm user, by default, for that site. This allows you to give users permission to arm and disarm a site and limit camera viewing.
{% endhint %}

<div data-with-frame="true"><img src="https://2326462210-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9tIFgMOGbY4p9wWaKQhl%2Fuploads%2Fgit-blob-6c04d43118c02d11587f1ead5b9c66d93acf6da5%2F8e5b8fcb51edc27e9f872a3b7118eab0c8d561d9.png?alt=media" alt=""></div>

If there are many alarm sites that you need to arm/disarm, you can designate those permissions instead of configuring general keycodes for each site for a user.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.verkada.com/classic-alarms/configuration/configure-classic-alarms-site-settings/generate-a-user-or-general-keycode-with-classic-alarms.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
