Skip to content

RESTful API for application and project management. Used for querying data, managing projects, members, and accessing analytics.

Contact

Servers

https://api.prod.trstinc.ca/v1

List Organization API Keys

GET
/organization/{org_id}/api-keys

Returns all API keys for the organization, including:

  • Organization-wide keys
  • Project-scoped keys

Note: Plaintext keys are never included in list responses.

Authentication: Requires Firebase token (organization admin only)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

org_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"prefix": "string",
"organization_id": "string",
"name": "string",
"created_by_user_id": "string",
"project_ids": [
"string"
],
"created_at": "string",
"last_used_at": "string",
"revoked_at": "string"
}
]

Playground

Authorization
Variables
Key
Value

Samples


Create Organization API Key

POST
/organization/{org_id}/api-keys

Creates a new API key for the organization. The key can be:

  • Organization-wide: Set project_ids to null (can access all projects)
  • Project-scoped: Set project_ids to an array of project UUIDs

IMPORTANT: The plaintext API key is only shown once in the response!
Make sure to save it securely - it cannot be retrieved again.

Authentication: Requires Firebase token (organization admin only)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

org_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"name": "string",
"project_ids": [
"string"
]
}

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"prefix": "string",
"name": "string",
"key": "string",
"project_ids": [
"string"
],
"created_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Revoke Organization API Key

DELETE
/organization/{org_id}/api-keys/{key_id}

Revokes (soft deletes) an API key. The key will immediately stop working.
This operation cannot be undone.

Authentication: Requires Firebase token (organization admin only)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

org_id*
Typestring
Required
Format"uuid"
key_id*
Typestring
Required
Format"uuid"

Responses

Playground

Authorization
Variables
Key
Value

Samples


List Project API Keys

GET
/projects/{project_id}/api-keys

Returns all API keys that can access this project, including:

  • Organization-wide keys
  • Keys specifically scoped to this project

Note: Plaintext keys are never included in list responses.

Authentication: Requires Firebase token (organization admin only)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"prefix": "string",
"organization_id": "string",
"name": "string",
"created_by_user_id": "string",
"project_ids": [
"string"
],
"created_at": "string",
"last_used_at": "string",
"revoked_at": "string"
}
]

Playground

Authorization
Variables
Key
Value

Samples


Create Project-Scoped API Key

POST
/projects/{project_id}/api-keys

Creates a new API key scoped to THIS project only.
The key will not be able to access other projects in the organization.

IMPORTANT: The plaintext API key is only shown once in the response!
Make sure to save it securely - it cannot be retrieved again.

Authentication: Requires Firebase token for an organization admin

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"name": "string"
}

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"prefix": "string",
"name": "string",
"key": "string",
"project_ids": [
"string"
],
"created_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Identify User by Palm Biometric

POST
/projects/{project_id}/biometrics/identify

Identifies a user by their palm biometric data and returns their member_id.
This endpoint only works for tenant-managed environments.

Authorizations

ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"palm": {
"identify_capture": "string",
"silhouette": "string",
"palm_position": {
"x": 0,
"y": 0,
"z": 0,
"pitch": 0,
"roll": 0,
"yaw": 0
}
}
}

Responses

application/json; charset=utf-8
JSON
{
"status": "Found",
"member_id": "string",
"match_score": 0
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Enroll Member's Palm Biometric

POST
/projects/{project_id}/biometrics/enroll

Enrolls a member's palm biometric data in the biometric system.
This endpoint only works for tenant-managed environments.

Authorizations

ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"member_id": "string",
"left_hand": {
"enroll_capture": "string",
"identify_capture": "string",
"silhouette": "string",
"palm_position": {
"x": 0,
"y": 0,
"z": 0,
"pitch": 0,
"roll": 0,
"yaw": 0
}
},
"right_hand": {
"enroll_capture": "string",
"identify_capture": "string",
"silhouette": "string",
"palm_position": {
"x": 0,
"y": 0,
"z": 0,
"pitch": 0,
"roll": 0,
"yaw": 0
}
}
}

Responses

application/json; charset=utf-8
JSON
{
"member_id": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


List Devices

GET
/projects/{project_id}/devices

Returns a paginated list of devices for the project.

Pagination:

  • page: Page number (minimum 1)
  • per_page: Results per page (minimum 10, maximum 100)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Query Parameters

page*
Typeinteger
Required
Format"uint32"
Minimum1
per_page*
Typeinteger
Required
Format"uint32"
Maximum100
Minimum10

Responses

application/json; charset=utf-8
JSON
{
"devices": [
{
"id": "string",
"name": "string",
"address_city": "string",
"address_state": "string",
"address_country": "string",
"last_auth_at": "string",
"last_activity_at": "string",
"mode": "string",
"hardware_platform": "string",
"enabled": true
}
],
"total": 0
}

Playground

Authorization
Variables
Key
Value

Samples


Complete Android terminal registration

POST
/projects/{project_id}/device/android/complete_registration

Connect a proto-terminal to a merchant using the registration code.
Requires Firebase authentication. Merchant must be in a sandbox.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"registration_code": "string",
"device_name": "string",
"device_mode": "string"
}

Responses

application/json; charset=utf-8
JSON
{
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Update device properties

PATCH
/device/{device_id}

Update properties of a device such as name and enabled status. Requires authentication and access to the device.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

device_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"name": "string",
"enabled": true
}

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"name": "string",
"address_city": "string",
"address_state": "string",
"address_country": "string",
"last_auth_at": "string",
"last_activity_at": "string",
"mode": "string",
"hardware_platform": "string",
"enabled": true
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Start Member Enrollment

POST
/devices/{device_id}/enroll/member/start

Initiates a palm enrollment session for a member on a specific device.
The device polling should have it immediately start accepting the end-users
palm for enrollment.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

device_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"member_id": "string"
}

Responses

application/json; charset=utf-8
JSON
{
"device_id": "string",
"session": {
"enroll_id": "string",
"state": "string",
"nbf": 0,
"iat": 0,
"exp": 0,
"user_id": "string",
"challenge": "string",
"mobile_challenge_response": true,
"terminal_challenge_response": true
}
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Get Enrollment Status

GET
/devices/{device_id}/enroll/status

Returns the current enrollment session for a device, if any.

Query Parameters:

  • session_id (optional): Filter by specific session ID

Returns:

  • Active session if one exists
  • None if no active session or session_id doesn't match

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

device_id*

Device UUID

Typestring
Required
Format"uuid"

Query Parameters

session_id

Optional session ID to filter by

Typestring
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"session": {
"enroll_id": "string",
"state": "string",
"nbf": 0,
"iat": 0,
"exp": 0,
"user_id": "string",
"challenge": "string",
"mobile_challenge_response": true,
"terminal_challenge_response": true
}
}

Playground

Authorization
Variables
Key
Value

Samples


Poll Enrollment Status

POST
/devices/{device_id}/enroll/status

Polls the given enrollment session for updates. This requires an existing
enrollment session to be available from the device.

Returns:

  • An updated enrollment session, if one is avaialble
  • None If the device has a new active session or the session is removed

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

device_id*

Device UUID

Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"session": {
"enroll_id": "string",
"state": "string",
"nbf": 0,
"iat": 0,
"exp": 0,
"user_id": "string",
"challenge": "string",
"mobile_challenge_response": true,
"terminal_challenge_response": true
}
}

Responses

application/json; charset=utf-8
JSON
{
"session": {
"enroll_id": "string",
"state": "string",
"nbf": 0,
"iat": 0,
"exp": 0,
"user_id": "string",
"challenge": "string",
"mobile_challenge_response": true,
"terminal_challenge_response": true
}
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Cancel Enrollment

DELETE
/devices/{device_id}/enroll/cancel

Cancels the active enrollment session on a device. The session id must be provided
to ensure another session is not accidentally cancelled.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

device_id*

Device UUID

Typestring
Required
Format"uuid"

Query Parameters

session_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"enroll_id": "string",
"state": "string",
"nbf": 0,
"iat": 0,
"exp": 0,
"user_id": "string",
"challenge": "string",
"mobile_challenge_response": true,
"terminal_challenge_response": true
}

Playground

Authorization
Variables
Key
Value

Samples


List Members

GET
/projects/{project_id}/members

Returns all members associated with the project.

Permissions: Only allowed for tenant managed environments

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
[
{
"member_id": "string",
"display_name": "string",
"metadata": "string",
"created_at": "string",
"updated_at": "string",
"palm_templates_enrolled": 0,
"last_enrolled_at": "string",
"last_used_at": "string"
}
]

Playground

Authorization
Variables
Key
Value

Samples


Create Member

POST
/projects/{project_id}/members

Creates a new member for the project.

Permissions: Only allowed for tenant managed environments

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"display_name": "string",
"metadata": null
}

Responses

application/json; charset=utf-8
JSON
{
"member_id": "string",
"display_name": "string",
"metadata": "string",
"created_at": "string",
"updated_at": "string",
"palm_templates_enrolled": 0,
"last_enrolled_at": "string",
"last_used_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Get Member

GET
/projects/{project_id}/members/{member_id}

Returns a specific member by member_id.

Permissions: Only allowed for tenant managed environments

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
member_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"member_id": "string",
"display_name": "string",
"metadata": "string",
"created_at": "string",
"updated_at": "string",
"palm_templates_enrolled": 0,
"last_enrolled_at": "string",
"last_used_at": "string"
}

Playground

Authorization
Variables
Key
Value

Samples


Update Member

PUT
/projects/{project_id}/members/{member_id}

Updates an existing member's information.

Permissions: Only allowed for tenant managed environments

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
member_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"display_name": "string",
"metadata": null
}

Responses

application/json; charset=utf-8
JSON
{
"member_id": "string",
"display_name": "string",
"metadata": "string",
"created_at": "string",
"updated_at": "string",
"palm_templates_enrolled": 0,
"last_enrolled_at": "string",
"last_used_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Delete Member

DELETE
/projects/{project_id}/members/{member_id}

Deletes a member from the project.
This will unlink biometric data and remove the member record.
Historical data (transactions, accesses) is preserved.

Permissions: Only allowed for tenant managed environments.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
member_id*
Typestring
Required
Format"uuid"

Responses

Playground

Authorization
Variables
Key
Value

Samples


Projects: Scans


Get Scan Results

GET
/projects/{project_id}/scans/results

Returns all biometric scan results for the project within the specified time range.
Results are paginated and ordered by creation time (newest first).

Each scan result includes an optional member_id field that is populated only for
successful identify operations where the user was successfully identified.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Query Parameters

from*
Typestring
Required
Format"date-time"
to*
Typestring
Required
Format"date-time"
page*
Typeinteger
Required
Format"uint32"
Minimum1
per_page*
Typeinteger
Required
Format"uint32"
Maximum10000
Minimum10

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"caller_type": "string",
"operation_type": "string",
"response_time_ms": 0,
"success": "string",
"created_at": "string",
"posture": {
"x": 0,
"y": 0,
"z": 0,
"pitch": 0,
"roll": 0,
"yaw": 0
},
"results": [
{
"match_score": 0,
"position": 0
}
]
}
]

Playground

Authorization
Variables
Key
Value

Samples


Get Transactions

GET
/projects/{project_id}/transactions

Returns all transactions for the project within the specified time range

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Query Parameters

from*
Typestring
Required
Format"date-time"
to*
Typestring
Required
Format"date-time"

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"transaction_type": "string",
"transaction_state": "string",
"amount": {
"base": 0,
"tip": 0,
"total": 0
},
"location": {
"latitude": 0,
"longitude": 0
},
"timestamp": "string",
"address": {
"line1": "string",
"line2": "string",
"city": "string",
"state": "string",
"country": "string",
"postal_code": "string"
},
"merchant": {
"name": "string",
"icon_path": "string"
},
"vendor_payment_reference": "string",
"fee": 0,
"currency": "string",
"vendor": "string",
"vendor_merchant_id": "string"
}
]

Playground

Authorization
Variables
Key
Value

Samples


Export Transactions as CSV

GET
/projects/{project_id}/transactions/export

Returns all transactions for the project within the specified time range as a downloadable CSV file

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Query Parameters

from*
Typestring
Required
Format"date-time"
to*
Typestring
Required
Format"date-time"

Responses

CSV export

text/csv; charset=utf-8
JSON
{
"id": "string",
"transaction_type": "string",
"transaction_state": "string",
"timestamp": "string",
"base_amount": 0,
"tip_amount": 0,
"total_amount": 0,
"fee": 0,
"currency": "string",
"vendor": "string",
"vendor_payment_reference": "string",
"vendor_merchant_id": "string",
"merchant_name": "string",
"merchant_icon_path": "string",
"address_line1": "string",
"address_line2": "string",
"address_city": "string",
"address_state": "string",
"address_country": "string",
"address_postal_code": "string",
"latitude": 0,
"longitude": 0
}

Playground

Authorization
Variables
Key
Value

Samples


Get Project Details

GET
/projects/{project_id}

Returns details for the specified project

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"name": "string",
"mcc": 0,
"icon_path": "string",
"stripe_account_id": "string",
"phone_number": "string",
"website": "string",
"plan": {
"id": "string",
"name": "string",
"headcount": 0,
"daily_request_limit": 0
},
"environment_id": "string",
"enable_server_lookup": true,
"environment_enables_server_lookup": true
}

Playground

Authorization
Variables
Key
Value

Samples


List Projects

GET
/projects

Returns all projects accessible to the authenticated user or API key.

For users: Returns all projects in organizations where the user is an admin.
For API keys: Returns all projects the API key has access to (org-wide or scoped).

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"name": "string",
"mcc": 0,
"icon_path": "string",
"stripe_account_id": "string",
"phone_number": "string",
"website": "string",
"plan": {
"id": "string",
"name": "string",
"headcount": 0,
"daily_request_limit": 0
},
"environment_id": "string",
"enable_server_lookup": true,
"environment_enables_server_lookup": true
}
]

Playground

Authorization

Samples


Update Server Lookup Setting

PUT
/projects/{project_id}/server-lookup

Updates whether the project is allowed to use server lookup endpoints.
Can only be enabled if the project has an environment and that environment allows it.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"enable_server_lookup": true
}

Responses

Playground

Authorization
Variables
Key
Value
Body

Samples


List Webhook Subscriptions

GET
/projects/{project_id}/webhooks

Returns all webhook subscriptions for the project.

Note: The webhook secret is not included in list responses for security.
It is only shown when creating a new webhook.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"url": "string",
"event_types": [
"string"
],
"enabled": true,
"created_at": "string",
"updated_at": "string"
}
]

Playground

Authorization
Variables
Key
Value

Samples


Create Webhook Subscription

POST
/projects/{project_id}/webhooks

Creates a new webhook subscription for the project to receive event notifications.

Supported Events (allowlist):

  • enrollment.completed - Triggered when a member successfully completes enrollment
  • demo.scan.success - Triggered when a demo scan successfully identifies a user

URL Requirements:

  • Must use HTTPS (HTTP only allowed for localhost when WEBHOOK_ALLOW_LOCALHOST is set)
  • Cannot target private IP addresses or internal networks
  • Cannot target cloud metadata endpoints (e.g., 169.254.169.254)
  • HTTP redirects are NOT followed
  • DNS is resolved and validated before each delivery

Webhook Delivery:

  • Webhooks are delivered with HMAC-SHA256 signature for verification
  • Failed deliveries are retried with exponential backoff (up to 14 days)
  • Your endpoint MUST be idempotent (use event_id to deduplicate)
  • Response bodies are limited to 100 KB to prevent abuse

Limits:

  • Maximum 25 webhook subscriptions per project

IMPORTANT: The webhook secret is only shown once in this response!
Save it securely to verify webhook signatures.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"url": "string",
"event_types": [
"string"
]
}

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"url": "string",
"secret": "string",
"event_types": [
"string"
],
"enabled": true,
"created_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Get Webhook Subscription

GET
/projects/{project_id}/webhooks/{webhook_id}

Returns details for a specific webhook subscription.

Note: The webhook secret is not included in the response for security.
It is only shown when creating a new webhook.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"url": "string",
"event_types": [
"string"
],
"enabled": true,
"created_at": "string",
"updated_at": "string"
}

Playground

Authorization
Variables
Key
Value

Samples


Delete Webhook Subscription

DELETE
/projects/{project_id}/webhooks/{webhook_id}

Permanently deletes a webhook subscription. This action cannot be undone.

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"

Responses

Playground

Authorization
Variables
Key
Value

Samples


Update Webhook Subscription

PATCH
/projects/{project_id}/webhooks/{webhook_id}

Updates an existing webhook subscription. You can update the URL,
event types, and enable/disable the webhook.

Validation:

  • Event types must be from the allowlist (enrollment.completed, demo.scan.success)
  • URLs must use HTTPS and cannot target private networks (same rules as creation)

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"

Request Body

application/json; charset=utf-8
JSON
{
"url": "string",
"event_types": [
"string"
],
"enabled": true
}

Responses

application/json; charset=utf-8
JSON
{
"id": "string",
"url": "string",
"event_types": [
"string"
],
"enabled": true,
"created_at": "string",
"updated_at": "string"
}

Playground

Authorization
Variables
Key
Value
Body

Samples


Send Test Webhook

POST
/projects/{project_id}/webhooks/{webhook_id}/test

Triggers a test webhook event to verify your integration is working correctly.

Test Event:

  • Event type: webhook.test
  • Includes a unique test_id in the payload for tracking
  • Signed with HMAC-SHA256 like production webhooks
  • Subject to the same retry logic as real events

Usage:

  1. Call this endpoint to send a test webhook
  2. Verify your endpoint receives the webhook
  3. Check the signature matches using your webhook secret
  4. Use the delivery history endpoint to track delivery status

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
{
"test_id": "string",
"message": "string"
}

Playground

Authorization
Variables
Key
Value

Samples


List Webhook Deliveries

GET
/projects/{project_id}/webhooks/{webhook_id}/deliveries

Returns delivery history for a webhook subscription within the specified time range,
including all attempts, responses, and delivery status. Results are paginated and
ordered by creation time (newest first).

Delivery Status:

  • pending - Waiting for next retry attempt
  • success - Successfully delivered (received 2XX response)
  • failed - Permanently failed after max retry attempts

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"

Query Parameters

from*
Typestring
Required
Format"date-time"
to*
Typestring
Required
Format"date-time"
page*
Typeinteger
Required
Format"uint32"
Minimum1
per_page*
Typeinteger
Required
Format"uint32"
Maximum1000
Minimum10

Responses

application/json; charset=utf-8
JSON
{
"items": [
{
"id": "string",
"subscription_id": "string",
"payload": {
"event_id": "string",
"timestamp": "string",
"project_id": "string",
"data": {
"event_type": "webhook.test",
"test_id": "string",
"message": "string",
"triggered_at": "string"
}
},
"attempt_count": 0,
"attempt_pending": true,
"response_status": 0,
"response_body": "string",
"status": "string",
"created_at": "string",
"last_attempt_at": "string"
}
],
"total_count": 0
}

Playground

Authorization
Variables
Key
Value

Samples


List Delivery Attempts

GET
/projects/{project_id}/webhooks/{webhook_id}/deliveries/{delivery_id}/attempts

Returns the full history of delivery attempts for a specific webhook delivery.
This shows every attempt made to deliver the webhook, including timing, status codes,
response bodies, and error messages.

Use this endpoint to:

  • Debug why a webhook is failing
  • See the full retry history
  • Analyze response times
  • Understand what errors occurred

Authorizations

FirebaseAuth

Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token

TypeHTTP (bearer)
or
ApiKeyAuth

API Key authorization
Identifies the organization and allowed projects from the API key

TypeHTTP (bearer)

Parameters

Path Parameters

project_id*
Typestring
Required
Format"uuid"
webhook_id*
Typestring
Required
Format"uuid"
delivery_id*
Typestring
Required
Format"uuid"

Responses

application/json; charset=utf-8
JSON
[
{
"id": "string",
"delivery_id": "string",
"attempt_number": 0,
"attempted_at": "string",
"response_status": 0,
"response_body": "string",
"error_message": "string",
"duration_ms": 0
}
]

Playground

Authorization
Variables
Key
Value

Samples


Health

Checks health of the server


Liveness probe

GET
/livez

Checks if the server is running and able to respond to an http request

Responses

text/html; charset=utf-8
JSON
"string"

Playground

Samples


Health probe

GET
/healthz

Checks if all the services are available for the server to process requests.
This may fail if a critical service is unavailable, but will report a warning
if non-critical services are down. This endpoint has a hard limit of 800ms
to finish its checks.

Responses

text/html; charset=utf-8
JSON
"string"

Playground

Samples


Powered by VitePress OpenAPI