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

# Overview

> One API to grant access across smart locks and access control systems — PIN codes, mobile keys, key cards, and cloud keys.

**Access Grants** are a single API for granting access to any physical space. Whether you're working with standalone smart locks, enterprise access control systems, or both — one call handles it all.

* **One integration** for smart locks (August, Yale, Schlage, TTLock, igloohome, and more) and access control systems (Salto, ASSA ABLOY Visionline, dormakaba, Brivo, and more).
* **Every access method** — PIN codes, mobile keys, Instant Keys, key cards, and cloud keys — through the same `requested_access_methods` parameter.
* **Automatic lifecycle management** — Seam propagates credentials to devices, re-materializes them as hardware comes online, and cleans up when access expires.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    await seam.accessGrants.create({
      user_identity: {
        full_name: 'Jane Doe',
        email_address: 'jane@example.com',
      },
      device_ids: ['6ba7b811-9dad-11d1-80b4-00c04fd430c8'],
      requested_access_methods: [{ mode: 'code' }],
      starts_at: '2025-07-13T15:00:00.000Z',
      ends_at: '2025-07-16T11:00:00.000Z',
    })
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    seam.access_grants.create(
        user_identity={
            "full_name": "Jane Doe",
            "email_address": "jane@example.com",
        },
        device_ids=["6ba7b811-9dad-11d1-80b4-00c04fd430c8"],
        requested_access_methods=[{"mode": "code"}],
        starts_at="2025-07-13T15:00:00.000Z",
        ends_at="2025-07-16T11:00:00.000Z",
    )
    ```
  </Tab>

  <Tab title="Ruby">
    ```ruby theme={null}
    seam.access_grants.create(
      user_identity: {
        full_name: "Jane Doe",
        email_address: "jane@example.com",
      },
      device_ids: %w[6ba7b811-9dad-11d1-80b4-00c04fd430c8],
      requested_access_methods: [{ mode: "code" }],
      starts_at: "2025-07-13T15:00:00.000Z",
      ends_at: "2025-07-16T11:00:00.000Z",
    )
    ```
  </Tab>

  <Tab title="PHP">
    ```php theme={null}
    $seam->access_grants->create(
        user_identity: [
            "full_name" => "Jane Doe",
            "email_address" => "jane@example.com",
        ],
        device_ids: ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"],
        requested_access_methods: [
            ["mode" => "code"],
        ],
        starts_at: "2025-07-13T15:00:00.000Z",
        ends_at: "2025-07-16T11:00:00.000Z",
    );
    ```
  </Tab>

  <Tab title="C#">
    ```csharp theme={null}
    // Coming Soon!
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl --include --request POST "https://connect.getseam.com/access_grants/create" \
      --header "Authorization: Bearer $SEAM_API_KEY" \
      --json @- <<EOF
    {
      "user_identity": {
        "full_name": "Jane Doe",
        "email_address": "jane@example.com"
      },
      "device_ids": ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"],
      "requested_access_methods": [{"mode": "code"}],
      "starts_at": "2025-07-13T15:00:00.000Z",
      "ends_at": "2025-07-16T11:00:00.000Z"
    }
    EOF
    ```
  </Tab>
</Tabs>

You specify *where* to grant access using `device_ids` (smart locks), `acs_entrance_ids` (ACS entrances), or `space_ids` (groups of access points). You can combine them in a single grant.

***

## Access Methods

Each Access Grant can issue one or more **access methods** — the credentials your user actually uses to get through a door. Request them via the `requested_access_methods` parameter.

| Mode         | What it is                                                                                                           | Best for                                                         |
| ------------ | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `code`       | A PIN code programmed on the lock.                                                                                   | Simple keypad entry — share a code via text, email, or your app. |
| `mobile_key` | A BLE credential delivered through the [Seam mobile SDK](/capability-guides/mobile-access/mobile-device-sdks/index). | Building a custom app with native mobile unlock.                 |
| `card`       | A credential on a physical plastic card — either encoded fresh or assigned from an existing card.                    | Hotels and offices with existing card infrastructure.            |
| `cloud_key`  | An API endpoint for unlocking the door on behalf of a user, with access logs.                                        | Building a web app that unlocks doors for users.                 |

When you request `mobile_key`, Seam also generates an **Instant Key** — a shareable URL that gives your user mobile access without downloading an app. Useful for quick delivery via text or email.

You can request multiple modes in one call — for example, a PIN code *and* a mobile key — and Seam issues all of them under the same Access Grant.

***

## Hotel and Offline Lock Systems

Some hotel access systems (Dormakaba Ambiance, Dormakaba Community, Visionline, Salto Space, and Vostio) **require** a `reservation_key` when creating an Access Grant so Seam can coordinate credential sequencing across grants. Without it, credentials can conflict.

See [Reservation Access Grants](/use-cases/granting-access/reservation-access-grants) for the full guide.

***

## Next Steps

* [Creating an Access Grant](/use-cases/granting-access/creating-an-access-grant) — step-by-step guide
* [Access Grants API Reference](/api/access_grants/object)
* [Access Methods API Reference](/api/access_methods/object)
