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.














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.
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.
Grant access in three steps
1
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.
2
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.
3
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.
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.
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);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// }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 PortalSeam Dashboard
Connect your locks and access systems and grant access yourself, right in the Seam dashboard. Just log in and go.
See the dashboardSee 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"
}lock.unlocked
Front door unlocked · keycode
lock.access_denied
Access denied · 3 invalid attempts
access_method.issued
Mobile key issued to Jane
Access that heals itself
Hardware fails, locks drop offline, accounts expire. Seam keeps your credentials working anyway.
If a lock is offline at issuance, Seam keeps trying and provisions the moment it's back.
Partial issuance returns the exact devices that didn't get a credential, so you're never guessing.
Add a device to a space or change a booking, and grants re-materialize on their own.
Everything you need to start granting access
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.
enabling businesses of all sizes.



