Access Grants

The Universal Way to Grant Access Across Every Brand of Locks

Use one API and Dashboard to decide who gets in, where, and when. Seam issues mobile keys, PIN codes, and key cards across 1,000+ smart locks, intercoms, and access systems.

Level Lock Pro with Apple Home
Nuki Smart Lock Pro
Module Mortise M3 smart lock
Yale smart lock keypad
KeyNest key drop and pickup station
Swiftlane access reader
1000+ companies use Seam to control access devices. Across 1K+ supported devices from leading smart lock and access control brands.
YaleAugustSchlageKwiksetNukiSaltoAkilesTedeeLocklyWyzeTTLockSmartThings
Seamless Access Integration

Everything You Need to Grant Access to Spaces

One API for every lock and access system
Issue PINs, mobile keys, cards & Instant Keys
Drop-in UI for connecting devices & managing access
Test grants in a virtual device sandbox
Normalized webhooks for every door event

Industry leaders like Hostaway, Guesty, Operto, Checkin, MyQ, and others use Seam every day.

Igloohome Smart Lock with Handle
Igloohome Smart Lock
Alfred Smart Lock
Smart Lock
Supported credentials

One grant, every kind of credential

A single Access Grant can issue one access method — or several at once. Seam encodes each on the right device and keeps them in sync.
How it works

Grant access in three steps

Connect your lock or access system
Embed Seam's Connect Webview and your users link their devices in a few taps — across 1,000+ smart locks, intercoms, and access systems.
Issue an API call, or connect your software
Create an Access Grant with one API call — or skip the code and grant access right from the Seam dashboard.
Pass the credential to your user
Deliver it however your user prefers: text an Instant Key link, email a PIN code, or push a mobile key into your app.
One API for every provider

Grant access and track events in a few lines

The same Access Grant API works across every lock and access system — issue credentials, then subscribe to normalized events.
Create an Access Grant
Define who, where, when, and how in a single call — request a PIN, a mobile key, and a card together. Seam encodes each on the right device and returns an Instant Key URL to share.
1const accessGrant = await seam.accessGrants.create({
2  user_identity: {
3    full_name: "Jane Smith",
4    email_address: "jane@example.com",
5  },
6  space_ids: [room_101_space_id, gym_space_id],
7  // Request a PIN, a mobile key, and a card together
8  requested_access_methods: [
9    { mode: "code" },
10    { mode: "mobile_key" },
11    { mode: "card" },
12  ],
13  starts_at: "2026-05-15T15:00:00.000Z",
14  ends_at: "2026-05-17T11:00:00.000Z",
15});
16
17// Seam encodes each credential on the right device and returns an
18// Instant Key URL to share — no app required
19const instantKey = accessGrant.access_methods.find(
20  (m) => m.instant_key_url,
21);
22console.log(instantKey?.instant_key_url);
Receive access events
Subscribe to normalized webhooks (or poll the events API) for everything that happens at the door.
1const events = await seam.events.list({
2  event_types: [
3    "lock.unlocked",
4    "lock.access_denied",
5    "access_method.issued",
6  ],
7  since: "2026-05-15T00:00:00.000Z",
8});
9
10// Example webhook payload:
11// {
12//   "event_type": "lock.unlocked",
13//   "method": "keycode",
14//   "device_id": "...",
15//   "access_method_id": "...",
16//   "occurred_at": "2026-05-15T15:04:32.737Z"
17// }
No code required

Grant access without writing a line of code

Not every team wants to build an access app — and they don't have to.

Customer Portal

Give your customers a hosted, your-branded portal to connect their devices and manage their own access and reservations. Embed it with an iFrame or a reservation deep-link — no UI to build.

Explore the Customer Portal

Seam Dashboard

Connect your locks and access systems and grant access yourself, right in the Seam dashboard. Just log in and go.

See the dashboard
Events & webhooks

See every access event in real time

Seam emits one normalized event for everything that happens at the door — across every brand — via webhooks or the events API. No polling, no per-vendor formats.
{
  "event_type": "lock.unlocked",
  "method": "keycode",
  "device_id": "...",
  "access_method_id": "...",
  "occurred_at": "2026-05-15T15:04:32.737Z"
}
  1. lock.unlocked

    Front door unlocked · keycode

  2. lock.access_denied

    Access denied · 3 invalid attempts

  3. access_method.issued

    Mobile key issued to Jane

Built-in reliability

Access that heals itself

Hardware fails, locks drop offline, accounts expire. Seam keeps your credentials working anyway.
Automatic retries
If a lock is offline at issuance, Seam keeps trying and provisions the moment it's back.
Per-device status
Partial issuance returns the exact devices that didn't get a credential, so you're never guessing.
Self-updating grants
Add a device to a space or change a booking, and grants re-materialize on their own.
One API for All Devices
Global Infrastructure for Controlling the Physical World
Seam makes controlling IoT devices seamless and programmable. Our teams operate globally,
enabling businesses of all sizes.
Smart Locks
Access Systems
Knowledge
Thermostats
Sensors
© 2026 Seam Labs, Inc.