Home/Smart Locks/Remote Lock

SMART LOCK CAPABILITIES

Smart Locks That Support Remote Lock

Seam supports remote lock on 541 smart lock models from 27 manufacturers, including Yale, TTLock and Assa Abloy.

Approach Lock with Wi-Fi
Yale
Basic
TTLock
nexTouch 2nd Generation Cylindrical Pushbutton Keypad Lock with Z-Wave Plus
Assa Abloy
Models
541
Brands
27
Systems
20

Live & beta integrations · Device database coverage

Every model, and the systems that cover it

541 models are live or in beta today. Status is per system, so one lock can be Live through one system and unavailable through another. Open a model to see which system covers it.
Systems that support remote lock · 20 systems
  • 33 LockLive
  • August AccessLive
  • Brivo APIBeta
  • DusawLive
  • igloohome APILive
  • Keyincode APILive
  • KwiksetLive
  • LatchLive
  • LocklyLive
  • Nuki WebLive
  • Omnitec Rent&PassLive
  • Schlage HomeLive
  • SmartThings CloudLive
  • Tedee Cloud APILive
  • TTLockLive
  • UltraloqLive
  • WyzeLive
  • Yacan APIBeta
  • Yale Access (US)Live
  • Yale HomeLive

541 compatible models · showing 8

Browse all 541 model links
Browse all 541 models by brand, connectivity and capability
On this page
Quickstart

Lock a door in 60 seconds

Call /locks/lock_door to request locking. Check the action attempt and result.was_confirmed_by_device, then read the reported lock state. A locked state does not establish that the door is closed.

1// Set SEAM_API_KEY on your server.
2import { Seam } from "seam"
3
4const seam = new Seam()
5
6// Replace with a connected lock's device_id.
7const device = await seam.devices.get({ device_id: "6ba7b811-9dad-11d1-80b4-00c04fd430c8" })
8if (device.can_remotely_lock !== true) {
9  throw new Error("This lock cannot remotely lock right now")
10}
11const action = await seam.locks.lockDoor({ device_id: device.device_id })
12console.log(action) // Check status and result.was_confirmed_by_device.
Fastest path

Build it with your AI agent

Install the Seam plugin and your coding agent picks up three integration skills: Reservation Automations, Access Grants and Access Codes. It then writes the calls the way we would. Paste the prompt below and let it build.

1. Install the plugin

/plugin marketplace add seamapi/seam-plugin
/plugin install seam@seamapi

The Claude Code install also adds our documentation MCP server, so the agent can look up endpoints and device capabilities while it works. Cursor, Codex and other agents get the skills through npx skills add and can add the MCP server there separately.

2. Paste this prompt

Prompt
Using the Seam docs, add remote locking to my app. In a sandbox workspace: connect a virtual lock, confirm can_remotely_lock is true on it, unlock it, then call /locks/lock_door and wait for the action attempt. Check result.was_confirmed_by_device and read properties.locked for the reported lock state. Keep command success, device confirmation and physical door position distinct. Show me a nightly job that checks the workspace's locks and requests locking for devices reported as unlocked.
Walkthrough

How it works

  1. Connect the lock and confirm support

    Your user links their lock or access system account through Seam Connect Webview. Seam returns the doors behind it as devices and entrances. Confirm can_remotely_lock is true on what comes back. False means the lock is capable but cannot use it right now, and a missing property means it never does this.

  2. Send the lock command

    Send a POST to /locks/lock_door with the device_id. The response is an action attempt: pending means it is still in progress, and error includes the failure reason. For success, also check result.was_confirmed_by_device because some providers cannot confirm the action on the physical lock.

    1// Set SEAM_API_KEY on your server.
    2import { Seam } from "seam"
    3
    4const seam = new Seam()
    5
    6// Replace with a connected lock's device_id.
    7const device = await seam.devices.get({ device_id: "6ba7b811-9dad-11d1-80b4-00c04fd430c8" })
    8if (device.can_remotely_lock !== true) {
    9  throw new Error("This lock cannot remotely lock right now")
    10}
    11const action = await seam.locks.lockDoor({ device_id: device.device_id })
    12console.log(action) // Check status and result.was_confirmed_by_device.
  3. Check the reported lock result

    Check action_attempt.result.was_confirmed_by_device: some providers report success without physical-device confirmation. Read properties.locked for the reported lock state, or subscribe to lock.locked events. A locked state does not prove the door is closed. Use a separate door-position sensor if your workflow needs that confirmation.

    1// Set SEAM_API_KEY on your server.
    2import { Seam } from "seam"
    3
    4const seam = new Seam()
    5
    6// Read after the action attempt completes. Expected locked: true; this does not report door position.
    7const device = await seam.devices.get({ device_id: "6ba7b811-9dad-11d1-80b4-00c04fd430c8" })
    8console.log(device.properties.locked)
FAQ

Frequently asked questions

Which smart locks support remote lock?

Seam supports remote lock on 541 smart lock models from 27 manufacturers, including Yale, TTLock and Assa Abloy. The table on this page comes from Seam's device database, and each model links to its own page with the per-system status and any hardware requirements.

Can I lock every door at once?

Loop over /locks/lock_door per device: there is no bulk endpoint. List devices with /devices/list, keep the ones where can_remotely_lock is true, and send the commands concurrently. Each returns its own action attempt, so you get a per-door result and can retry just the doors that failed.

What happens if the door is already locked?

The command succeeds and nothing moves. Locking a locked door is treated as a no-op, so a scheduled sweep does not need to read state first.

Does auto-relock make the API call unnecessary?

Many locks relock themselves after a timeout. An API call lets your app request locking at a specific moment, such as checkout. Check the action result and reported lock state; a locking request alone does not establish that the unit is secured.

Can the same locks be unlocked remotely?

Usually, and it is a separate capability with its own flag: can_remotely_unlock. Check both flags rather than assuming one implies the other, because a few systems expose locking without unlocking.

Who can trigger a remote lock?

Anything holding your API key. Seam does not add an approval flow in front of lock commands, so gate the endpoint inside your backend the way you gate any other privileged action, and keep the key out of client code.

Pricing

Ready to Scale With You

Seam lets developers and businesses connect apps to real-world IoT devices. The free trial is built for small teams to build and test, while enterprise pricing scales with the biggest device fleets out there.
Best Enterprise Solution

Custom Subscription for Your Business

Access tailored solutions, paying a fixed monthly rate that scales as you grow.
Enhanced Security
Beta Features Access
Dedicated Support Channel
Volume Discounts
No Usage Limits
Trusted by Over 1,000 Companies
Start Now

Try It for Free

Start with a free trial and explore the full API and related features.

Have questions? Talk to our team.

Chat with us to learn how Seam can power your access automation.
—“Discovering Seam was one of these Aha moments in the business. I couldn’t believe what I was seeing. I mean, it was exactly what we were looking for: a simple API that we could integrate and have access to all these devices in a matter of seconds.”
François Gouelo
CEO, Enso Connect
Company
How many devices you need to connect?
Name
Email
How did you find us?
Comment
We usually answer within 24 hours.
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
Lock Capabilities
Thermostats
Sensors
© 2026 Seam Labs, Inc.