API Documentation

Everything you need to interact with AccessGrid.

Authentication

We use a dual authentication mechanism, it consists of two parts:

  1. A static account id to be sent in the X-ACCT-ID header
  2. A shared secret scheme to authenticate every API request with a signed payload in the X-PAYLOAD-SIG header

You can find both keys in your AccessGrid console on the API keys page. If you're logged in, they're automatically embedded into this documentation.

List Access Passes

Retrieve a paginated list of Access Passes. Optionally provide a template_id to list passes for a specific card template, or omit it to list all passes across all templates in your account. You can also filter by current state.

template_id

nullable string

All

state

nullable string

All

page

nullable integer

All

per_page

nullable integer

All

Request

Response

{ "status": "success", "count": 2, "total_count": 2, "page": 1, "per_page": 20, "total_pages": 1, "keys": [ { "id": "key_9f3a12bc", "full_name": "John Doe", "employee_id": "EMP-10234", "state": "active", "install_url": "https://install.accessgrid.io/pass/key_9f3a12bc", "card_template_id": "0xd3adb00b5", "expiration_date": "2026-03-31T23:59:59Z", "created_at": "2025-01-15T10:22:11Z", "metadata": { "department": "Engineering", "location": "HQ" }, "card_number": "4920-8833-1122", "site_code": "NYC-HQ", "direct_install_url": "https://pay.google.com/gp/v/save/abcdef123456" }, { "id": "key_b81d77ef", "full_name": "Jane Smith", "employee_id": "EMP-10891", "state": "inactive", "install_url": "https://install.accessgrid.io/pass/key_b81d77ef", "card_template_id": "0xhotel98765", "expiration_date": "2025-12-31T23:59:59Z", "created_at": "2024-11-03T08:45:00Z", "metadata": { "department": "Operations", "role": "Manager" }, "file_data": { "file_name": "hotel_pass.pkpass", "file_size": 24576 }, "is_pass_ready_to_transact": true } ] }

Issue Access Pass

Enable a pass to be added to be created and installed on their mobile device with the constraints set in the AccessGrid console and this API call. Returns a landing page for installing the access pass.

card_template_id

string

All

employee_id

string

Corporate

tag_id

nullable string

All

site_code

nullable string

All

card_number

string

All

file_data

nullable string

All

full_name

string

All

email

nullable string

All

phone_number

nullable string

All

classification

string

Corporate
Apple

start_date

string

All

expiration_date

string

All

employee_photo

string

Corporate
Apple

title

nullable string

Corporate
Apple

member_id

nullable string

Hotel
Apple

membership_status

nullable string

Hotel
Apple

is_pass_ready_to_transact

nullable boolean

Hotel
Apple

tile_data

nullable object

Hotel

checkInAvailableWindowStartDateTime

nullable string

Hotel
Apple

checkInAvailableWindowEndDateTime

nullable string

Hotel
Apple

checkInDateTime

nullable string

Hotel
Android

checkInURL

nullable string

Hotel
All

isCheckedIn

nullable boolean

Hotel
All

numberOfRoomsReserved

nullable integer

Hotel
All

roomNumbers

nullable array

Hotel
All

reservations

nullable object

Hotel
Apple

checkInDateTime

nullable string

Hotel
Apple

isCheckedIn

nullable boolean

Hotel
Apple

numberOfRoomsReserved

nullable integer

Hotel
Apple

propertyLocation

nullable string

Hotel
Apple

propertyName

nullable string

Hotel
Apple

propertyMapUrl

nullable string

Hotel
Apple

propertyCategory

nullable string

Hotel
Apple

restaurantVoucher

nullable string

Hotel
Apple

reservationEndDateTime

nullable string

Hotel
Apple

reservationNumber

nullable string

Hotel
Apple

reservationStartDateTime

nullable string

Hotel
Apple

roomNumbers

nullable array

Hotel
Apple

metadata

nullable object

All

credential_pool_id

nullable string

All

Request

Response

{ "status": "success", "install_url": "https://install.accessgrid.io/pass/key_a91c7e23", "id": "key_a91c7e23", "state": "active", "full_name": "Employee name", "expiration_date": "2026-03-29T15:34:40.072Z", "metadata": { "department": "engineering", "badgeType": "contractor" }, "card_number": "8472-1093-5561", "site_code": "ENG-HQ-01", "file_data": { "file_name": "access_pass.pkpass", "file_size": 31245, "content_type": "application/vnd.apple.pkpass" }, "devices": [ { "id": "dev_7f3b2a9c", "platform": "ios", "device_type": "iphone", "status": "active" }, { "id": "dev_c91d88aa", "platform": "android", "device_type": "phone", "status": "pending_install" } ] }

Get Issued Pass

Retrieve details about a specific issued Access Pass, including its state, devices, and metadata

card_id

string

All

Request

Response

Empty

Update Access Pass

When you need to make an informational update to an Access Pass such as name, photo, etc

card_id

string

All

employee_id

nullable string

Corporate

full_name

nullable string

All

classification

nullable string

Corporate
Apple

expiration_date

nullable string

All

employee_photo

nullable string

Corporate
Apple

title

nullable string

Corporate
Apple

file_data

nullable string

Android

is_pass_ready_to_transact

nullable boolean

Hotel
Apple

tile_data

nullable object

Hotel

checkInAvailableWindowStartDateTime

nullable string

Hotel
Apple

checkInAvailableWindowEndDateTime

nullable string

Hotel
Apple

checkInDateTime

nullable string

Hotel
Android

checkInURL

nullable string

Hotel
All

isCheckedIn

nullable boolean

Hotel
All

numberOfRoomsReserved

nullable integer

Hotel
All

roomNumbers

nullable array

Hotel
All

reservations

nullable object

Hotel
Apple

checkInDateTime

nullable string

Hotel
Apple

isCheckedIn

nullable boolean

Hotel
Apple

numberOfRoomsReserved

nullable integer

Hotel
Apple

propertyLocation

nullable string

Hotel
Apple

propertyName

nullable string

Hotel
Apple

propertyMapUrl

nullable string

Hotel
Apple

propertyCategory

nullable string

Hotel
Apple

restaurantVoucher

nullable string

Hotel
Apple

reservationEndDateTime

nullable string

Hotel
Apple

reservationNumber

nullable string

Hotel
Apple

reservationStartDateTime

nullable string

Hotel
Apple

roomNumbers

nullable array

Hotel
Apple

metadata

nullable object

All

Request

Response

Empty

Suspend Access Pass

When you need to temporarily disable an Access Pass for a short period of time

card_id

string

All

Request

Response

Empty

Resume Access Pass

If you have previously suspended an Access Pass, you can re-enable it with the resume action

card_id

string

All

Request

Response

Empty

If you'd like to force the removal of an Access Pass from it's current holder - unlinking does not make a key uninstallable, it simply disables it on the users phone.

card_id

string

All

Request

Response

Empty

Delete Access Pass

If you'd like to delete Access Pass and prevent additional installs - deleting a key unlinks it and makes prevents any additional installs

card_id

string

All

Request

Response

Empty

Create Card Template

Enterprise only
Contact us

Only available for enterprise customers - allows you to create an empty card template using our console API.

name

string

All

platform

string

All

use_case

string

All

protocol

string

Apple

allow_on_multiple_devices

nullable boolean

All

watch_count

nullable integer

Apple

iphone_count

nullable integer

Apple

design

nullable object

All

background_color

nullable string

Apple

label_color

nullable string

Apple

label_secondary_color

nullable string

Apple

background_image

nullable string

All

logo_image

nullable string

All

icon_image

nullable string

Apple

support_info

nullable object

Apple

support_url

nullable string

Apple

support_phone_number

nullable string

Apple

support_email

nullable string

Apple

privacy_policy_url

nullable string

Apple

terms_and_conditions_url

nullable string

Apple

metadata

nullable object

All

Request

Response

{ "id": "tpl_0xd3adb00b5", "estimated_publishing_date": "2026-01-05T12:00:00Z", "metadata": { "version": "2.1", "approvalStatus": "approved" } }

Update Card Template

Enterprise only
Contact us

Only available for enterprise customers - allows you to update certain attributes of an existing card template using our console API.

card_template_id

string

All

name

string

All

allow_on_multiple_devices

nullable boolean

All

watch_count

nullable integer

Apple

iphone_count

nullable integer

Apple

support_info

nullable object

Apple

support_url

nullable string

Apple

support_phone_number

nullable string

Apple

support_email

nullable string

Apple

privacy_policy_url

nullable string

Apple

terms_and_conditions_url

nullable string

Apple

metadata

nullable object

All

Request

Response

{ "id": "tpl_0xd3adb00b5", "estimated_publishing_date": "2026-01-05T12:00:00Z", "metadata": { "version": "2.1", "approvalStatus": "approved" } }

Read Card Template

Enterprise only
Contact us

Only available for enterprise customers - allows you to read basic info about an existing card template using our console API.

card_template_id

nullable string

All

Request

Response

{ "id": "tpl_0xd3adb00b5", "name": "Employee Access Pass", "platform": "apple", "use_case": "employee_badge", "protocol": "desfire", "created_at": "2025-12-01T09:15:30Z", "last_published_at": "2025-12-10T14:42:00Z", "issued_keys_count": 125, "active_keys_count": 118, "allowed_device_counts": { "allow_on_multiple_devices": true, "watch": 2, "iphone": 3 }, "support_settings": { "url": "https://help.yourcompany.com", "phone": "+1-555-123-4567", "email": "[email protected]" }, "terms_settings": { "privacy_policy_url": "https://yourcompany.com/privacy", "terms_and_conditions_url": "https://yourcompany.com/terms" }, "style_settings": { "background_color": "#FFFFFF", "label_color": "#000000", "label_secondary_color": "#333333" }, "metadata": { "version": "2.1", "approvalStatus": "approved" } }

Read Event Log

Enterprise only
Contact us

Only available for enterprise customers - allows you to read full event log for a given card template, including which passes were issued, how and by whom using our console API.

card_template_id

nullable string

All

filters

nullable object

All

device

nullable string

All

start_date

nullable datetime

All

end_date

nullable datetime

All

event_type

nullable string

All

Request

Response

{ "logs": [ { "id": "evt_91f2a7c3", "event": "install", "created_at": "2025-11-30T10:14:22Z", "ip_address": "192.168.1.24", "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X)", "metadata": { "device": "mobile", "platform": "ios", "card_id": "key_a91c7e23", "template_id": "0xd3adb00b5" } }, { "id": "evt_c83d19aa", "event": "install", "created_at": "2025-12-05T16:48:09Z", "ip_address": "10.0.0.88", "user_agent": "Mozilla/5.0 (Linux; Android 14; Pixel 8)", "metadata": { "device": "mobile", "platform": "android", "card_id": "key_b81d77ef", "template_id": "0xd3adb00b5" } } ], "pagination": { "current_page": 1, "per_page": 20, "total_pages": 1, "total_count": 2 } }

iOS Preflight

Enterprise only
Contact us

Only available for enterprise customers - provides the required identifiers for iOS mobile provisioning for an access pass associated with a given card template.

card_template_id

string

All

access_pass_ex_id

string

All

Request

Response

{ "provisioningCredentialIdentifier": "apple_cred_8f3c2a91", "sharingInstanceIdentifier": "apple_share_41d9be77", "cardTemplateIdentifier": "apple_tpl_a12bc9ef", "environmentIdentifier": "apple_access_env_production" }

Webhooks

AccessGrid can send webhook notifications to your server when events occur. Webhooks use the CloudEvents specification for event delivery.

Configure webhooks in your AccessGrid console.

We use simple bearer tokens for authentication, which is generated whenever you create a new webhook. In general if your server responds with either 200, or 201, then we will not send the event occurrence again.

If we cannot reach your server, or you respond with non 200/201 response code, we will try again for up to 6 hours before dropping the delivery attempts.

spec_version

string

All

id

string

All

source

string

All

type

string

All

data_content_type

string

All

time

string

All

data

object

All

access_pass_id

nullable string

Access pass

card_template_id

nullable string

Card template

landing_page_id

nullable string

Landing page

credential_profile_id

nullable string

Credential profile

account_id

nullable string

Account balance

organization_name

nullable string

Account balance

current_balance

nullable number

Account balance

threshold

nullable number

Account balance

amount_below_threshold

nullable number

Account balance

protocol

nullable string

Access pass
Card template

metadata

nullable object

Access pass
Card template

device

nullable object

Access pass

Request

Response

Empty

Create HID Org

Enterprise only
Contact us

Create a new HID org for your enterprise or partner account. Generates credentials and queues automation to finish HID setup.

name

string

All

full_address

string

All

phone

string

All

first_name

string

All

last_name

string

All

Request

Response

[ { "id": "91c2a7e4f8b", "name": "Acme Corporation", "slug": "acme-corp", "first_name": "John", "last_name": "Doe", "phone": "+1-415-555-0198", "full_address": "123 Market Street, San Francisco, CA 94105, USA", "status": "active", "created_at": "2024-08-12T11:32:45Z" }, { "id": "b73d9f21a3c", "name": "Globex Industries", "slug": "globex-industries", "first_name": "Jane", "last_name": "Smith", "phone": "+1-212-555-7744", "full_address": "456 Madison Avenue, New York, NY 10022, USA", "status": "pending", "created_at": "2025-02-03T09:18:10Z" } ]

List HID Orgs

Enterprise only
Contact us

List HID orgs created under the current enterprise or partner account.

Request

Response

Empty

Finish HID Org Registration

Enterprise only
Contact us

Complete the HID org registration process after creating an org. This is a follow-up step to 'Create HID Org' and should be called once you receive the HID registration email with credentials. The email and password are provided by HID during their registration process.

email

string

All

password

string

All

Request

Response

Empty