Issue a key card in 60 seconds
Create the grant, wait until the card is ready to encode, select your desk's encoder, then encode and confirm issuance. Set SEAM_API_KEY, SEAM_ACS_ENTRANCE_ID, SEAM_ACS_SYSTEM_ID, and SEAM_ACS_ENCODER_ID. The CLI and cURL examples also require jq. The example stay starts now and lasts two days; use your reservation's dates in production.
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
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
What you can build
Front desk software that cuts keys
Check-in creates the grant and encodes the card in one flow, from your own UI. The desk agent taps one button; nobody re-types room numbers into the access system's console.
Kiosk and express check-in
A kiosk with an encoder issues keys with no staff at all: the reservation lookup creates the grant, the kiosk encodes, the guest walks to the elevator. Late arrivals stop depending on the night shift.
Cards that expire with the stay
The credential dies at ends_at whether or not the card comes back, and an extended stay is one update call, not a trip to the desk for new plastic. Lost cards are a deletion, not a re-key.
How it works
Create an Access Grant with a card access method
Create the guest's grant for the entrances and reservation window. Use user_identity_id instead of the inline user_identity for an existing guest. Poll until the card access method has is_ready_for_encoding true; is_issued remains false until encoding completes. These steps reuse the client, imports, dates, and selected entrance from the quickstart.
Find the encoder at the desk
List the encoders on your access system and select the one at this desk. The example matches SEAM_ACS_ENCODER_ID so it writes to the intended hardware. This guide covers encodable cards; systems with pre-registered cards use the card-assignment flow instead.
Encode the card
Place a blank card on the encoder and call /access_methods/encode with the access method and the encoder. Confirm the result before handing plastic to a guest: is_issued flips to true once the write lands, and the common failures are a missing card on the encoder or a card type the system does not accept.
Let checkout happen on its own
No return step. The credential expires at ends_at, so an unreturned card is dead plastic, and revoking early is deleting the grant. Reuse returned cards by encoding a fresh access method onto them; one access method writes to one card, so each card gets its own.
Frequently asked questions
Do I need a card encoder?
For systems that write credentials onto blank cards, yes: Seam drives the encoder hardware the property already has. Other systems assign the credential to a card that is already registered, and no encoder is involved. The capability page lists which systems work which way.
Can one card open several doors?
Yes. Put every entrance on the Access Grant, or pass a space that covers them, and the card is encoded for all of them at once. Adding a door later updates the credential.
What happens to a card at checkout?
The credential expires with the grant, so the card stops opening doors at ends_at whether or not it comes back to the desk. Revoking early is a deletion, not a trip to the lock.
Can I reuse cards between guests?
Yes. Re-encode the card with the next guest's access method. What you cannot do is write one access method onto two cards: a second card for the same guest gets its own access method on the same grant.
How do I check what is on a card?
Scan it on the encoder. The scan returns the card's encoded parameters, which is how a desk agent answers "why does this card not work" without guessing: wrong stay, expired credential and blank card all read differently.
Which access systems does this work with?
Card-based hotel and multifamily systems including ASSA ABLOY Visionline and Salto Space, with the full list on the plastic-card capability page. Support is per system, so check the system behind your doors, not the lock brand on them.
Related
- Access API overviewEvaluate credentials and supported systems before building your hotel access workflow.
- Access for hospitality softwareExplore the guest-access workflows and supported systems for your hotel software.
- Smart locks that support plastic card encodingEvery model and system Seam encodes cards for, with live per-system status.
- Working with card encoders and scannersThe full encoding flow, scanning, and the common encoding errors.
- How to add mobile keys to your appThe phone-based sibling of this flow, for guests who skip the desk entirely.
- How to generate temporary access codes programmaticallyPIN codes on the same grants, for doors with keypads.