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.

Rate Limits

API requests that provision Android passes (Google Wallet) are subject to rate limits based on Google's Wallet API guidelines. When issuing or updating Android passes, please observe the following limits:

  • Maximum of 5 concurrent connections per account
  • Maximum of 20 requests per second per account

These limits apply to operations that trigger Google Wallet API calls, including issuing new Android passes and updating existing ones. Requests exceeding these limits may be throttled or rejected.

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

nullable 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 } }

List Pass Template Pairs

Enterprise only
Contact us

Only available for enterprise customers - allows you to retrieve a paginated list of Pass Template Pairs. Pass Template Pairs link iOS and Android card templates together for unified pass issuance.

page

nullable integer

All

per_page

nullable integer

All

Request

Response

{ "pass_template_pairs": [ { "id": "pair_9f3a12bc", "name": "Corporate Access Badge", "created_at": "2025-12-01T09:15:30Z", "android_template": { "id": "tpl_android123", "name": "Android Corporate Badge", "platform": "android" }, "ios_template": { "id": "tpl_ios456", "name": "iOS Corporate Badge", "platform": "apple" } }, { "id": "pair_b81d77ef", "name": "Student ID", "created_at": "2025-11-15T14:22:11Z", "android_template": { "id": "tpl_android789", "name": "Android Student ID", "platform": "android" }, "ios_template": null } ], "pagination": { "current_page": 1, "per_page": 50, "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

card_number

nullable string

Access pass

site_code

nullable string

Access pass

file_data

nullable string

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

List Webhooks

Enterprise only
Contact us

Retrieve a paginated list of webhooks configured for your account.

page

nullable integer

All

per_page

nullable integer

All

Request

Response

Empty

Create Webhook

Enterprise only
Contact us

Create a new webhook to receive event notifications. URL must be reachable and at least one event must be subscribed.

name

string

All

url

string

All

auth_method

nullable string

All

subscribed_events

array

All

Request

Response

Empty

Delete Webhook

Enterprise only
Contact us

Delete a webhook by ID.

webhook_id

string

All

Request

Response

Empty

List Ledger Items

Retrieve a paginated list of ledger items (billing transactions) for your account. Supports filtering by date range. Each item includes the associated access pass and card template details when available.

page

nullable integer

All

per_page

nullable integer

All

start_date

nullable datetime

All

end_date

nullable datetime

All

Request

Response

{ "ledger_items": [ { "created_at": "2025-12-15T14:30:00Z", "amount": "1.50", "ex_id": "li_9f3a12bc", "kind": "debit", "metadata": { "access_pass_ex_id": "ap_a91c7e23", "pass_template_ex_id": "0xd3adb00b5", "template_name": "Corporate Access Badge" }, "access_pass": { "ex_id": "ap_a91c7e23", "full_name": "John Doe", "state": "active", "metadata": { "employee_id": "EMP-001" }, "pass_template": { "ex_id": "0xd3adb00b5", "name": "Corporate Access Badge", "protocol": "desfire", "platform": "apple", "use_case": "corporate_id" }, "unified_access_pass_ex_id": "uap_b81d77ef" } }, { "created_at": "2025-12-14T09:15:00Z", "amount": "1.50", "ex_id": "li_c83d19aa", "kind": "debit", "metadata": { "access_pass_ex_id": "ap_d72f91bb", "pass_template_ex_id": "0xd3adb00b5", "template_name": "Corporate Access Badge" }, "access_pass": { "ex_id": "ap_d72f91bb", "full_name": "Jane Smith", "state": "active", "metadata": {}, "pass_template": { "ex_id": "0xd3adb00b5", "name": "Corporate Access Badge", "protocol": "desfire", "platform": "apple", "use_case": "corporate_id" } } } ], "pagination": { "current_page": 1, "per_page": 50, "total_pages": 1, "total_count": 2 } }