Unlock a Door/Gate Controller
Sends an unlock command to the Door/Gate Controller and waits for the physical relay to confirm it has unlocked.
Your system must decide whether the person is authorised before calling this endpoint. Performance Hub only verifies the partner key, facility access, door ownership, and device state.
Parameters
-
door_id
stringrequiredDoor/Gate Controller ID returned by the list endpoint.
-
facility_id
stringeither/orProvide the facility identifier type configured for your integration: use facility_id for direct-link integrations, or linking_identifier for linking-identifier integrations. Do not send both; the API uses the identifier type configured for your partner account and ignores the other one. Learn morePerformance Hub facility ID. Required for direct-link integrations.
-
linking_identifier
stringeither/orProvide the facility identifier type configured for your integration: use facility_id for direct-link integrations, or linking_identifier for linking-identifier integrations. Do not send both; the API uses the identifier type configured for your partner account and ignores the other one. Learn morePartner facility identifier. Required for linking-identifier integrations.
-
member_id
stringrequiredPartner member ID. This is used for audit logging and later data linking.
-
first_name
stringrequiredFirst name of the person opening the door.
-
last_name
stringrequiredLast name of the person opening the door.
-
full_name
stringoptionalOptional. If omitted, Performance Hub combines
first_nameandlast_name. -
check_in_id
stringoptionalOptional check-in ID from your system for correlation.
-
idempotency_key
stringoptionalOptional replay-protection key. Reusing the same key for the same partner, facility, and door returns the existing result when available.
Returns
Returns 200 only when the device confirms the relay physically unlocked. The door uses the hold time configured in Performance Hub Device Management; partners cannot override relay timing per request. Most confirmations should complete in 3-5 seconds. Treat the documented timeout as an explicit failed unlock and retry only according to your own safety rules.
Common failures:
403 integration_not_enabled- your integration is not enabled for the facility.409 maintenance_mode_active- facility staff have enabled maintenance mode for the door.503 device_offline- the Door/Gate Controller is offline or stale.504 unlock_confirmation_timeout- the command was sent but no matching confirmation was received before timeout.
Request
curl -X POST https://partner-api.performancehub.co/partner/v1/access-control/doors/00000000000000000000000000000007/unlock \
-u sk_live_YOUR_PARTNER_SECRET_KEY: \
-H "Content-Type: application/json" \
-d '{
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"member_id": "mem_12345",
"first_name": "Jane",
"last_name": "S.",
"full_name": "Jane S.",
"source": "door_reader",
"idempotency_key": "unlock_20260501_0001"
}'
Response
{
"status": "unlocked",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"event_id": "00000000-0000-0000-0000-000000000045",
"command_id": "00000000-0000-0000-0000-000000000049",
"hold_time_seconds": 10,
"confirmed_at": "2026-05-01T04:30:00.000Z"
}
Failure response
{
"status": "failed",
"reason": "device_offline",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"event_id": "00000000-0000-0000-0000-000000000045"
}