Allegion Access Codes API

Create, schedule, update, and delete numeric access codes per device

Operations 5

GET /devices/{deviceId}/access-codes List Access Codes #
POST /devices/{deviceId}/access-codes Create Access Code #
GET /devices/{deviceId}/access-codes/{accessCodeId} Get Access Code #
PUT /devices/{deviceId}/access-codes/{accessCodeId} Update Access Code #
DELETE /devices/{deviceId}/access-codes/{accessCodeId} Delete Access Code #

Documentation

Specifications

Schemas & Data

Other Resources

🔗
Blog
https://developer.allegion.com/en/products/schlage-home/schlage-home-api-blog.html
🔗
Webhooks
https://developer.allegion.com/en/products/schlage-home/best-practices.html
🔗
ReleaseNotes
https://developer.allegion.com/en/release-notes.html
🔗
SpectralRules
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/rules/schlage-home-rules.yml
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-list-devices-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-create-access-code-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-webhook-subscription-example.json
🔗
Tutorials
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
SDKs
https://developer.allegion.com/en/products/schlage-mobile-credentials/mobile-sdk.html
🔗
SDKs
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
TermsOfService
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
SpectralRules
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/rules/engage-credentialing-rules.yml
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/engage-upload-credential-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/engage-list-credentials-example.json
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/apis.yml

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/allegion-access-codes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

allegion-access-codes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Schlage Home Access Codes API
  version: '2.0'
  description: 'Schlage Home API V2 - REST + webhook API for the Schlage Home residential

    smart-lock platform (Schlage Encode, Encode Plus, Encode Lever).'
  contact:
    name: Allegion Developer Support
    url: https://developersupport.allegion.com/hc/en-us
  termsOfService: https://developer.allegion.com/en/index.html
  license:
    name: Allegion Developer Terms
    url: https://developer.allegion.com/en/index.html
servers:
- url: https://api.allegion.com/schlage-home
  description: Production
- url: https://api.allegion.com/schlage-home/v2
  description: Production (v2 path prefix)
security:
- OAuth2: []
tags:
- name: Access Codes
  description: Create, schedule, update, and delete numeric access codes per device
paths:
  /devices/{deviceId}/access-codes:
    get:
      tags:
      - Access Codes
      summary: List Access Codes
      description: List access codes currently stored on the device.
      operationId: listAccessCodes
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      responses:
        '200':
          description: Access codes returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  accessCodes:
                    type: array
                    items:
                      $ref: '#/components/schemas/AccessCode'
    post:
      tags:
      - Access Codes
      summary: Create Access Code
      description: Create a numeric access code on the device with an Always, Temporary, or Recurring schedule. Returns 202 ACCEPTED.
      operationId: createAccessCode
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessCodeCreate'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
  /devices/{deviceId}/access-codes/{accessCodeId}:
    get:
      tags:
      - Access Codes
      summary: Get Access Code
      operationId: getAccessCode
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/AccessCodeId'
      responses:
        '200':
          description: Access code returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessCode'
    put:
      tags:
      - Access Codes
      summary: Update Access Code
      description: Update an access code name or schedule. The numeric code itself is not changed by name updates.
      operationId: updateAccessCode
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/AccessCodeId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessCodeUpdate'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
    delete:
      tags:
      - Access Codes
      summary: Delete Access Code
      operationId: deleteAccessCode
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/AccessCodeId'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
components:
  schemas:
    RecurringSchedule:
      type: object
      properties:
        type:
          type: string
          enum:
          - Recurring
        daysOfWeek:
          type: array
          items:
            type: string
            enum:
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
            - Sunday
        startTime:
          type: string
          example: 08:00
        endTime:
          type: string
          example: '17:00'
    AlwaysSchedule:
      type: object
      properties:
        type:
          type: string
          enum:
          - Always
    Command:
      type: object
      properties:
        commandId:
          type: string
        deviceId:
          type: string
        type:
          type: string
          enum:
          - Lock
          - Unlock
          - UpdateDevice
          - CreateAccessCode
          - UpdateAccessCode
          - DeleteAccessCode
        status:
          type: string
          enum:
          - Pending
          - InProgress
          - Completed
          - Failed
        errorMessage:
          type: string
          description: Populated when status is Failed (improved March 6, 2025).
        createdAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
    Schedule:
      oneOf:
      - $ref: '#/components/schemas/AlwaysSchedule'
      - $ref: '#/components/schemas/TemporarySchedule'
      - $ref: '#/components/schemas/RecurringSchedule'
      discriminator:
        propertyName: type
        mapping:
          Always: '#/components/schemas/AlwaysSchedule'
          Temporary: '#/components/schemas/TemporarySchedule'
          Recurring: '#/components/schemas/RecurringSchedule'
    AccessCodeCreate:
      allOf:
      - $ref: '#/components/schemas/AccessCode'
      required:
      - name
      - code
    AccessCodeUpdate:
      type: object
      properties:
        name:
          type: string
          maxLength: 12
        schedule:
          $ref: '#/components/schemas/Schedule'
    TemporarySchedule:
      type: object
      properties:
        type:
          type: string
          enum:
          - Temporary
        startDateTime:
          type: string
          format: date-time
          description: Includes DST offset since April 14, 2026.
        endDateTime:
          type: string
          format: date-time
          description: Includes DST offset since April 14, 2026.
    AccessCode:
      type: object
      properties:
        accessCodeId:
          type: string
        name:
          type: string
          minLength: 1
          maxLength: 12
          pattern: ^[a-zA-Z0-9]+$
          description: 1-12 character alpha-numeric label. Updating the name does not change the numeric code.
        code:
          type: string
          description: Numeric access code (length is per-device, changed by deleting all codes).
        schedule:
          $ref: '#/components/schemas/Schedule'
        accessorType:
          type: string
          description: Accessor classification (Owner, Guest, etc.). New accessor types added March 25, 2025.
  parameters:
    DeviceId:
      in: path
      name: deviceId
      required: true
      schema:
        type: string
      description: Unique identifier for a Schlage Home device.
    AccessCodeId:
      in: path
      name: accessCodeId
      required: true
      schema:
        type: string
      description: Unique identifier for an access code on a specific device.
  responses:
    CommandAccepted:
      description: 'Asynchronous command accepted. The response includes a commandId that can

        be polled at GET /devices/{deviceId}/commands/{commandId} or watched for

        via the corresponding command-status webhook event.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Command'
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://account.schlage.com/OAuth2/authorize
          tokenUrl: https://account.schlage.com/OAuth2/token
          scopes:
            devices.read: Read device state, battery, connectivity, and firmware
            devices.write: Issue lock, unlock, and configuration commands
            access_codes.read: Read access codes stored on devices
            access_codes.write: Create, update, and delete access codes
            webhooks.manage: Create, list, and delete webhook subscriptions