List signer factors
Use this endpoint to review the authentication factors configured for a signer, such as key pairs or OAuth credentials.
Supported filters:
data.public— public keydata.schema— factor schemameta.status— record statusmeta.labels— record labelsmeta.domain— domain scopedata.custom.<field>— any custom field (may be slower on large datasets)
Usage Examples
curl -X GET "http://localhost:3000/v2/signers/string/factors" \ -H "x-ledger: <YOUR LEDGER HANDLE>"{
"hash": "f1f9438adc85718d9ead3928951798246bcf303696ea7e66896af875b09ebd0b",
"data": [
{
"luid": "$snf.-01xK1rTtU2dS4wX3",
"hash": "82baa21c2f24351786a768bb66bf258cbbee9092f53549810ac2e9fdec809036",
"data": {
"handle": "signing-key",
"signer": "tesla-bank-admin",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"format": "ed25519-raw",
"schema": "key-pair",
"custom": {
"title": "Admin backup signing key"
}
},
"meta": {
"status": "created",
"moment": "2025-04-05T14:30:00.050Z",
"owners": [
"dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk="
],
"proofs": [
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "bcbc413a6415be50a9551e3c76f5c32bb00d20025cf5a3c1176ba04752484ddc",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "JonHuzyJ1iX1Kr9BYd3BxjZPJkZurFki/3XzMdgSU1HZk72LKYH5Jxoml+q7FytzCQ7h6z1Mg8Ghn9UVEUksDA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "a24ccbca89db875fe98ce4d1b3f0b9b286e7891cc8e1377b0252be3420e8423a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "0g5td5sn76a0LKm6rywjdmj8oldC42AqvvMMS90x4UEPln2BcNVx//9oyM0kwEpUs9hkxoibuVHDxX618577Bw==",
"custom": {
"luid": "$snf.-01xK1rTtU2dS4wX3",
"moment": "2025-04-05T14:30:00.050Z",
"status": "created"
}
}
]
}
},
{
"luid": "$snf.-01xG28V2qdcBt3fR",
"hash": "0c46a7a8abe9be9080ac15a754810bcda1eec6a6e61bfc27bad5e050422a2cae",
"data": {
"handle": "otp-factor",
"parent": "82baa21c2f24351786a768bb66bf258cbbee9092f53549810ac2e9fdec809036",
"signer": "tesla-bank-admin",
"schema": "totp",
"custom": {
"title": "Two-factor authentication"
}
},
"meta": {
"status": "created",
"moment": "2025-04-05T14:21:40.025Z",
"owners": [
"dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk="
],
"proofs": [
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "3b9e56ed7b7e7d458608a8ab960fb36b0264fabda8add4284845d329babc6cf4",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "X+v/Hcl5NzsgImYfOaTGVoq/jrgvX2mfcARpy4EAxDyjb+rszoJcSnd8TRWtYED5AO79VqLdh0ZlzV+c8cPMAg==",
"custom": {
"moment": "2025-04-05T14:21:40.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "96920b31532700a54de8eaaea4b9239841a11ae02bf14a7cd67ea0952b2cda01",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "jp+hiOVAeeqJHoNayVqK1ocgtatTQSa7l4aFlOjpZWuwSljAbYE0MO+XO/Fl5CoO3sAlTtNxooA9QicbZg57Bg==",
"custom": {
"luid": "$snf.-01xG28V2qdcBt3fR",
"moment": "2025-04-05T14:21:40.025Z",
"status": "created"
}
}
]
}
}
],
"page": {
"index": 0,
"limit": 20
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "1b2ca854741445350a09c741b39dd7002e0cefdbf660c52b6479b0ab1bc96db9",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "xx9HmIxSxyWUcKxjVPbGDuz7BjX8vKhsF7ocMOtpQVdt8HJFjba39q94Mtaf0aRLgPp8j/UFlfYUof9Hf+4KBA==",
"custom": {
"moment": "2025-04-05T14:30:00.100Z"
}
}
]
}
}{
"hash": "b7eb7ccf5ffc126951e13e29a8dcfdaf95db859715d4edfc2d16f59a79d4cd58",
"data": {
"reason": "auth.unauthorized",
"detail": "Invalid token."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "3acece870c4118bfe4223118e4d2f3cfd5b8947a7093785b66d49aa57fa2890a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "gnK63DqqWDY/UXvnZHixDKPKS6tfeGHgdARylnPiJLwQGyYxuD97TYbSg2wrzsf/bDrHwQYZaf8Gu5ryYP0UAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "9ec02726b50650add8acfd124c6defeb978a9ac252a5de888f9493ddc701e927",
"data": {
"reason": "auth.forbidden",
"detail": "Request is not authorized"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "4f8cbdc38d73348de0c31805c783c84a0fecc6be736d7e187004ba68cd00e675",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "P3hRnveehtuobb4AIO56XBmiduvmYJbpdmOHltG/IifBEH7QSWdv/0pqled4SO9x1Ne3oXuWxJy40DzMvx1MBA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "bd1e78b47e837376b7994e3e481aa547c110c4d6a1c1d8ecd047cc465edd33bd",
"data": {
"reason": "api.request-timeout",
"detail": "Processing of request on server timed out. Your request may or may not have been processed."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "cdf5b09c809ec52934cd76ca3b0aa59310049e3cae8b171aee3cf9e0f98bddb2",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "6h1lhq3TOccWrfIdtOa9pkz9pIHVAN9tyXuNaucvLpbspWACog6HpSAdr0FSwGzn0zAKwx8YppGOVjFhfeBLBw==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "1c084e8dcfb9bb84bc8ea96e9e137b149a34b2bbd85f8e60b4263f5aba980476",
"data": {
"custom": {
"errors": [
{
"instancePath": "/handle",
"schemaPath": "#/properties/handle/pattern",
"keyword": "pattern",
"params": {
"pattern": "^[a-zA-Z0-9_\\-+.]+$"
},
"message": "must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
}
]
},
"reason": "record.schema-invalid",
"detail": "Schema validator error: data.handle must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "7a5febb431719b6f43d7e88e79211308e16ac651b71b339276373fdb4e7c3760",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "2/1zYw4AaIzsIHfOIC6V/CHw6owbjYHt48cwmFOig0ibeT0IbojLmj1RCRi8W00ka0udPa9WsacWDd7ObMY8CA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "93a5f4d97a42c2df97f827c58ff7768d02568c15aca931e22b81fa3160ba0df3",
"data": {
"reason": "api.unexpected-error",
"detail": "An unexpected error occurred"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "efaf5360143b586917d9636779ad6e08571c5b06909a20dd0f5eba4bf3be7eae",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "hERh6Aecj59iR+Fb25OQsHJScOi4t8EiffKSfjlMQdjHMccTnfDlgZFdaJzXzUtpSwy/NHq0l+7ydh3HSWCoAg==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}Path Parameters
The unique identifier of the signer this factor belongs to it is luid or handle (address).
Query Parameters
Pagination options. Set limit and index to page through results.
Filter by field values using dot notation (e.g. data.handle=value). Operators like $in and $regex are optional — equality is the default.
Header Parameters
The unique identifier of ledger in context for multi tenant requests.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
Create signer factor POST
Supported factor types include `key-pair` for cryptographic key authentication and `oauth-client-credentials` for OAuth 2.0 token exchange. Each factor stores the credentials needed to verify the signer's identity. Secrets such as private keys and client secrets are encrypted at rest and never returned in API responses. Broadcasts the `signer-factor-created` signal. Use [effects](/ledger/reference/api/effect) to subscribe.
Get signer factor GET
Next Page