Skip to content

Get Active Signing Credential ​

Lists a device's ACTIVE signing credentials — for example to decide which key to revoke with Revoke Signing Credential. It is a backend lookup: the SDK's getStatus only reports the key stored on the device and never calls it.

Endpoint ​

http
POST /v1/signing-credential/get-active
Content-Type: application/json
json
{
  "device_id": "device_00000001"
}

Parameters:

ParamTypeRequiredDefaultDescription
device_idstringYes—The device ID sent to Init. Must not be blank, must not start or end with whitespace, and must be at most 128 characters.

Returns: GetActiveSigningCredentialResponse

Sample Request ​

bash
curl --location '<BASE_URL>/v1/signing-credential/get-active' \
  --header 'Authorization: ATV <ACCESS_ID>:<SIGNATURE>' \
  --header 'X-TV-Timestamp: <TIMESTAMP>' \
  --header 'Content-Type: application/json' \
  --data '{
    "device_id": "device_00000001"
  }'

Response ​

json
{
  "success": true,
  "code": 0,
  "message": "Success",
  "data": {
    "request_id": "9a7c1e52-0d4b-4f3a-8c6e-2b1f0e9d8c7a",
    "credentials": [
      {
        "key_id": "<KEY_ID>",
        "status": "ACTIVE",
        "key_attestation": "TEE",
        "created_at": "2026-09-30T02:00:00Z",
        "metadata": {
          "device_model": "Pixel 8",
          "os_version": "15",
          "platform": "android",
          "sdk_version": "1.4.0"
        }
      }
    ]
  },
  "errors": []
}
FieldTypeDescription
data.request_idstringThe request ID, used for tracing.
data.credentialsarrayThe device's ACTIVE credentials, newest first. Empty when the device has none. A device can hold several, because earlier keys stay ACTIVE until revoked.
data.credentials[].key_idstringSigning key ID (UUID) — the value the SDK sends in X-Device-Key-Id.
data.credentials[].statusstringAlways ACTIVE in this response.
data.credentials[].key_attestationstringHow the key is protected: STRONGBOX or TEE (Android, verified), SECURE_ENCLAVE (iOS), or NONE (Android, could not be verified).
data.credentials[].created_atstringRegistration time (RFC 3339).
data.credentials[].metadataobjectDevice information recorded at Confirm from the Device-Model, Os-Version, Platform and Sdk-Version headers. The key is absent when no metadata was recorded; it is never null. When present, all four fields are returned, and a header that was not sent is "".
data.credentials[].metadata.device_modelstringDevice model.
data.credentials[].metadata.os_versionstringOS version.
data.credentials[].metadata.platformstringThe Platform header as sent (trimmed), e.g. android; not normalised.
data.credentials[].metadata.sdk_versionstringFaceAuthen SDK version.
errorsarrayDetail of each failure. Empty on success.

An empty credentials array is a successful lookup, not an error.

WARNING

Call this endpoint from your backend only, with your Access Key. The SDK's Bearer token is rejected with 403101.

Errors ​

CodeMessage
2001010Access ID not found in the system.
401100Unauthorized action. You do not have permission to perform this action.
403101Permission denied. You do not have permission to perform this action.
4001000Input parameter violates a constraint.
4001001The X-TV-Timestamp header is expired. Please provide a newer timestamp.
5001000Some unexpected error occurs while processing the request.
CodeDescription
access_id_not_foundAccess ID not found in the system.
access_denied_exceptionMissing or invalid Access Key or signature.
permission_denied_exceptionCalled with an SDK Bearer token; only the Access Key is allowed.
invalid_parameter_exceptiondevice_id is missing, blank, longer than 128 characters, or starts or ends with whitespace.
request_time_too_skewedThe X-TV-Timestamp header is expired, need a newer one.
internal_server_errorSome unexpected error occurs while processing the request.

Next Steps ​

Developers