RESTful API for application and project management. Used for querying data, managing projects, members, and accessing analytics.
Contact
Servers
List Organization 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid"Responses
Create Organization API Key
Creates a new API key for the organization. The key can be:
- Organization-wide: Set
project_idstonull(can access all projects) - Project-scoped: Set
project_idsto 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid"Request Body
Responses
Revoke Organization API Key
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid""uuid"Responses
List Project 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid"Responses
Create Project-Scoped API Key
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid"Request Body
Responses
Identify User by Palm Biometric
Identifies a user by their palm biometric data and returns their member_id.
This endpoint only works for tenant-managed environments.
Authorizations
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Enroll Member's Palm Biometric
Enrolls a member's palm biometric data in the biometric system.
This endpoint only works for tenant-managed environments.
Authorizations
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
List 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Query Parameters
"uint32"1"uint32"10010Responses
Complete Android terminal registration
Connect a proto-terminal to a merchant using the registration code.
Requires Firebase authentication. Merchant must be in a sandbox.
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Update device properties
Update properties of a device such as name and enabled status. Requires authentication and access to the device.
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Start Member Enrollment
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Get Enrollment 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
Device UUID
"uuid"Query Parameters
Optional session ID to filter by
"uuid"Responses
Poll Enrollment 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
Device UUID
"uuid"Request Body
Responses
Cancel Enrollment
Cancels the active enrollment session on a device. The session id must be provided
to ensure another session is not accidentally cancelled.
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
Device UUID
"uuid"Query Parameters
"uuid"Responses
List Members
Returns all members associated with the project.
Permissions: Only allowed for tenant managed environments
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Responses
Create Member
Creates a new member for the project.
Permissions: Only allowed for tenant managed environments
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Get Member
Returns a specific member by member_id.
Permissions: Only allowed for tenant managed environments
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Responses
Update Member
Updates an existing member's information.
Permissions: Only allowed for tenant managed environments
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Request Body
Responses
Delete Member
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Responses
Get Scan 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Query Parameters
"date-time""date-time""uint32"1"uint32"1000010Responses
Get Transactions
Returns all transactions for the project within the specified time range
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Query Parameters
"date-time""date-time"Responses
Export Transactions as CSV
Returns all transactions for the project within the specified time range as a downloadable CSV file
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Query Parameters
"date-time""date-time"Responses
CSV export
Get Project Details
Returns details for the specified project
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Responses
List 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Responses
Update Server Lookup Setting
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
Parameters
Path Parameters
"uuid"Request Body
Responses
List Webhook Subscriptions
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Responses
Create Webhook Subscription
Creates a new webhook subscription for the project to receive event notifications.
Supported Events (allowlist):
enrollment.completed- Triggered when a member successfully completes enrollmentdemo.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_idto 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid"Request Body
Responses
Get Webhook Subscription
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Responses
Delete Webhook Subscription
Permanently deletes a webhook subscription. This action cannot be undone.
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Responses
Update Webhook Subscription
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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Request Body
Responses
Send Test Webhook
Triggers a test webhook event to verify your integration is working correctly.
Test Event:
- Event type:
webhook.test - Includes a unique
test_idin the payload for tracking - Signed with HMAC-SHA256 like production webhooks
- Subject to the same retry logic as real events
Usage:
- Call this endpoint to send a test webhook
- Verify your endpoint receives the webhook
- Check the signature matches using your webhook secret
- Use the delivery history endpoint to track delivery status
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Responses
List Webhook 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 attemptsuccess- Successfully delivered (received 2XX response)failed- Permanently failed after max retry attempts
Authorizations
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid"Query Parameters
"date-time""date-time""uint32"1"uint32"100010Responses
List Delivery 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
Firebase Token authorization
This identifies the user from the JWT token passed as a bearer token
API Key authorization
Identifies the organization and allowed projects from the API key
Parameters
Path Parameters
"uuid""uuid""uuid"Responses
Liveness probe
Health probe
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.