Profiles
User profile configuration and DID management.
Returns account information for the currently authenticated user (Bearer token). The username path segment is not used to choose whose profile is returned; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. For users with the Standard Registry role the response also includes address book and VC document information.
Present for URL compatibility with existing clients. The server does not use this value when resolving the resource—the response is always the profile of the user identified by the Bearer token.
usernameSuccessful operation.
usernameUSERPossible values: [{}]["POLICIES_POLICY_READ"]did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8200599did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.82005990.0.6046379truetrue0.0.60463790.0.6046379Whether the user account is local, remote, or custom.
localPossible values: Unauthorized request.
Forbidden
Internal server error.
GET /api/v1/profiles/{username} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"username": "StandardRegistry",
"role": "STANDARD_REGISTRY",
"permissions": [
"ACCOUNTS_STANDARD_REGISTRY_READ",
"DEMO_KEY_CREATE",
"IPFS_FILE_READ",
"IPFS_FILE_CREATE",
"PROFILES_USER_READ",
"PROFILES_USER_UPDATE",
"PROFILES_BALANCE_READ",
"ACCOUNTS_ACCOUNT_READ",
"ANALYTIC_POLICY_READ",
"ANALYTIC_MODULE_READ",
"ANALYTIC_TOOL_READ",
"ANALYTIC_SCHEMA_READ",
"ANALYTIC_DOCUMENT_READ",
"ARTIFACTS_FILE_READ",
"ARTIFACTS_FILE_CREATE",
"ARTIFACTS_FILE_DELETE",
"BRANDING_CONFIG_UPDATE",
"CONTRACTS_CONTRACT_READ",
"CONTRACTS_CONTRACT_CREATE",
"CONTRACTS_CONTRACT_DELETE",
"CONTRACTS_CONTRACT_MANAGE",
"CONTRACTS_WIPE_REQUEST_READ",
"CONTRACTS_WIPE_REQUEST_UPDATE",
"CONTRACTS_WIPE_REQUEST_DELETE",
"CONTRACTS_WIPE_REQUEST_REVIEW",
"CONTRACTS_WIPE_ADMIN_CREATE",
"CONTRACTS_WIPE_ADMIN_DELETE",
"CONTRACTS_WIPE_MANAGER_CREATE",
"CONTRACTS_WIPE_MANAGER_DELETE",
"CONTRACTS_WIPER_CREATE",
"CONTRACTS_WIPER_DELETE",
"CONTRACTS_POOL_READ",
"CONTRACTS_POOL_UPDATE",
"CONTRACTS_POOL_DELETE",
"CONTRACTS_RETIRE_REQUEST_READ",
"CONTRACTS_RETIRE_REQUEST_CREATE",
"CONTRACTS_RETIRE_REQUEST_DELETE",
"CONTRACTS_RETIRE_REQUEST_REVIEW",
"CONTRACTS_RETIRE_ADMIN_CREATE",
"CONTRACTS_RETIRE_ADMIN_DELETE",
"CONTRACTS_PERMISSIONS_READ",
"CONTRACTS_DOCUMENT_READ",
"LOG_LOG_READ",
"MODULES_MODULE_READ",
"MODULES_MODULE_CREATE",
"MODULES_MODULE_UPDATE",
"MODULES_MODULE_DELETE",
"MODULES_MODULE_REVIEW",
"POLICIES_POLICY_READ",
"POLICIES_POLICY_CREATE",
"POLICIES_POLICY_UPDATE",
"POLICIES_POLICY_DELETE",
"POLICIES_POLICY_REVIEW",
"POLICIES_POLICY_EXECUTE",
"POLICIES_POLICY_MANAGE",
"POLICIES_MIGRATION_CREATE",
"POLICIES_RECORD_ALL",
"SCHEMAS_SCHEMA_READ",
"SCHEMAS_SCHEMA_CREATE",
"SCHEMAS_SCHEMA_UPDATE",
"SCHEMAS_SCHEMA_DELETE",
"SCHEMAS_SCHEMA_REVIEW",
"SCHEMAS_SYSTEM_SCHEMA_READ",
"SCHEMAS_SYSTEM_SCHEMA_CREATE",
"SCHEMAS_SYSTEM_SCHEMA_UPDATE",
"SCHEMAS_SYSTEM_SCHEMA_DELETE",
"SCHEMAS_SYSTEM_SCHEMA_REVIEW",
"TOOLS_TOOL_READ",
"TOOLS_TOOL_CREATE",
"TOOLS_TOOL_UPDATE",
"TOOLS_TOOL_DELETE",
"TOOLS_TOOL_REVIEW",
"TOOL_MIGRATION_CREATE",
"TOKENS_TOKEN_READ",
"TOKENS_TOKEN_CREATE",
"TOKENS_TOKEN_UPDATE",
"TOKENS_TOKEN_DELETE",
"TOKENS_TOKEN_MANAGE",
"TAGS_TAG_READ",
"TAGS_TAG_CREATE",
"PROFILES_RESTORE_ALL",
"SUGGESTIONS_SUGGESTIONS_READ",
"SUGGESTIONS_SUGGESTIONS_UPDATE",
"SETTINGS_SETTINGS_READ",
"SETTINGS_SETTINGS_UPDATE",
"SETTINGS_THEME_READ",
"SETTINGS_THEME_CREATE",
"SETTINGS_THEME_UPDATE",
"SETTINGS_THEME_DELETE",
"PERMISSIONS_ROLE_READ",
"PERMISSIONS_ROLE_CREATE",
"PERMISSIONS_ROLE_UPDATE",
"PERMISSIONS_ROLE_DELETE",
"PERMISSIONS_ROLE_MANAGE",
"ACCESS_POLICY_ALL",
"SCHEMAS_RULE_CREATE",
"SCHEMAS_RULE_READ",
"SCHEMAS_RULE_EXECUTE",
"FORMULAS_FORMULA_CREATE",
"FORMULAS_FORMULA_READ",
"WORKER_TASKS_READ",
"WORKER_TASKS_EXECUTE",
"WORKER_TASKS_DELETE",
"POLICIES_EXTERNAL_POLICY_READ",
"POLICIES_EXTERNAL_POLICY_CREATE",
"POLICIES_EXTERNAL_POLICY_UPDATE",
"POLICIES_EXTERNAL_POLICY_DELETE",
"LOG_LOG_READ",
"LOG_SYSTEM_READ"
],
"did": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"hederaAccountId": "0.0.6046379",
"location": "local",
"confirmed": true,
"failed": false,
"topicId": "0.0.8361161",
"parentTopicId": "0.0.1960",
"didDocument": {
"createDate": "2026-03-24T17:54:47.965Z",
"updateDate": "2026-03-24T17:55:01.913Z",
"did": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"document": {
"id": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"@context": "https://www.w3.org/ns/did/v1",
"verificationMethod": [
{
"id": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key",
"type": "Ed25519VerificationKey2018",
"controller": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"publicKeyBase58": "QDui45JN8tAZyc8aNcgbjKH8DQDzgXYpNGD7wfpeqwSAsm3FJ5TymhXz7japEGMW"
},
{
"id": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key-bbs",
"type": "Bls12381G2Key2020",
"controller": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"publicKeyBase58": "sneuVgE8ZoiH9kJzG1uAZZ9Rgj1wcfWhJv2DACLzqvdPkVzgWRPKFQ2eZPZRKYoUyoZM44UXViXWQvpWAjaML739EuJXEcsanrKvKsaBUAN5GG3Zx82NP8c2pZd3rBCQnWM"
}
],
"authentication": [
"did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key"
],
"assertionMethod": [
"#did-root-key",
"#did-root-key-bbs"
]
},
"status": "CREATE",
"messageId": "1774374900.107419100",
"topicId": "0.0.8361161",
"verificationMethods": {
"Ed25519VerificationKey2018": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key",
"Bls12381G2Key2020": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key-bbs"
},
"id": "69c2cfe734d008dac2664379"
},
"vcDocument": {
"createDate": "2026-03-24T17:55:35.698Z",
"updateDate": "2026-03-24T17:55:48.545Z",
"hash": "8KKWiMe45XrgPpRsPa9bWJW5sqBNRdzH2ftYgG6TnDia",
"hederaStatus": "ISSUE",
"signature": 0,
"type": "STANDARD_REGISTRY",
"option": {
"status": "NEW"
},
"owner": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"topicId": "0.0.8361161",
"messageId": "1774374946.399537000",
"document": {
"id": "urn:uuid:e2b24cbd-f480-4675-8b68-b51fe72aadfd",
"type": [
"VerifiableCredential"
],
"issuer": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"issuanceDate": "2026-03-24T17:55:35.574Z",
"@context": [
"https://www.w3.org/2018/credentials/v1",
"ipfs://bafkreihj7gclc4qgem27tre5je6a3t7tpdrk4li6oamdl6bnflwnoyfs5i"
],
"credentialSubject": [
{
"OrganizationName": "OrgName",
"Website": "https://test.test",
"Tags": "Tag",
"@context": [
"ipfs://bafkreihj7gclc4qgem27tre5je6a3t7tpdrk4li6oamdl6bnflwnoyfs5i"
],
"id": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161",
"type": "StandardRegistry"
}
],
"proof": {
"type": "Ed25519Signature2018",
"created": "2026-03-24T17:55:35Z",
"verificationMethod": "did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8361161#did-root-key",
"proofPurpose": "assertionMethod",
"jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..TktKeCGVTYDA4qY67dN3Tbpy8ufbElVOcYdgAOsx1f1q50FWlMbqsTStESgDX0F-fmVWuuS_D-WSoGMBMqoLAA"
}
},
"documentFileId": "69c2d02434d008dac26643ca",
"tableFileIds": [],
"id": "69c2d01734d008dac26643c3"
}
}Applies to the currently authenticated user (Bearer token). The username path segment is not used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Sets Hedera credentials and related DID/VC data. For users with the Standard Registry role it also creates an address book.
Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.
usernameSchema entity label; often inferred from the user role when omitted.
Hedera topic id (e.g. restore / profile flows).
0.0.7813042Hedera private key (local signing). May be omitted for some remote flows.
falseNo content
Unauthorized request.
Unauthorized request.
Forbidden
Internal server error.
PUT /api/v1/profiles/{username} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 436
{
"hederaAccountId": "0.0.6059566",
"hederaAccountKey": "3030020100300706052b8104000a04220420dcfc59e2346b4f0cef1c9f11dee3af6c50be449a08badc55764498787e8a1899",
"vcDocument": {
"OrganizationName": "Another Org name",
"Website": "https://google.com",
"Tags": "AnotherTag"
},
"didDocument": null,
"useFireblocksSigning": false,
"fireblocksConfig": {
"fireBlocksVaultId": "",
"fireBlocksAssetId": "",
"fireBlocksApiKey": "",
"fireBlocksPrivateiKey": ""
},
"didKeys": []
}No content
Applies to the currently authenticated user (Bearer token). The username path segment is not used to choose whose profile is updated; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to connect Hedera credentials, publish DID/VC documents as required, and for Standard Registry users create an address book. Returns immediately with 202 Accepted and a task identifier—use the worker-tasks API or your client notifications to track completion or errors.
Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.
usernameSchema entity label; often inferred from the user role when omitted.
Hedera topic id (e.g. restore / profile flows).
0.0.7813042Hedera private key (local signing). May be omitted for some remote flows.
falseTask accepted for asynchronous processing. Poll or subscribe for task status.
Task Id
9db028d2-03ad-4d49-a178-cf4b67f8c147Expected count of task phases
8Task action
Create toolUser Id
69bcfd90c98df6ceb05e8a78Unauthorized request.
Forbidden
Internal server error.
PUT /api/v1/profiles/push/{username} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 436
{
"hederaAccountId": "0.0.6059566",
"hederaAccountKey": "3030020100300706052b8104000a04220420dcfc59e2346b4f0cef1c9f11dee3af6c50be449a08badc55764498787e8a1899",
"vcDocument": {
"OrganizationName": "Another Org name",
"Website": "https://google.com",
"Tags": "AnotherTag"
},
"didDocument": null,
"useFireblocksSigning": false,
"fireblocksConfig": {
"fireBlocksVaultId": "",
"fireBlocksAssetId": "",
"fireBlocksApiKey": "",
"fireBlocksPrivateiKey": ""
},
"didKeys": []
}{
"taskId": "415e6c71-7fc5-4c67-a40d-918ed0202bd4",
"expectation": 9,
"action": "Connect user",
"userId": "69c2cfc621d39e7b6d15e23f"
}Requests Hedera account balance.
The name of the user for whom to fetch the balance.
usernameSuccessful operation.
833.88244301 ℏUnauthorized request.
Forbidden
Unprocessable entity.
Internal server error.
GET /api/v1/profiles/{username}/balance HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
833.88244301 ℏApplies to the currently authenticated user (Bearer token). The username path segment is not used to choose whose data is restored; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to restore user data (policy, DID documents, VC documents). Returns immediately with 202 Accepted and a task identifier.
Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.
usernameSchema entity label; often inferred from the user role when omitted.
Hedera topic id (e.g. restore / profile flows).
0.0.7813042Hedera private key (local signing). May be omitted for some remote flows.
falseSuccessful operation.
Task Id
9db028d2-03ad-4d49-a178-cf4b67f8c147Expected count of task phases
8Task action
Create toolUser Id
69bcfd90c98df6ceb05e8a78Unauthorized request.
Forbidden
Internal server error.
PUT /api/v1/profiles/restore/{username} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 207
{
"topicId": "0.0.8310503",
"hederaAccountId": "0.0.6057669",
"hederaAccountKey": "302e020100300506032b657004220420efb6030ba3c022d16b6828a7cf826c88b1578bcf9d69fbcc4a548f5292b6068f",
"didDocument": null,
"didKeys": []
}{
"taskId": "de64235b-939b-47e5-99ed-2dbf7c4a3e61",
"expectation": 2,
"action": "Restore user profile",
"userId": "69c3a5b08c0ae8a3b1083e95"
}Applies to the currently authenticated user (Bearer token). The username path segment is not used to choose whose recovery topics are listed; authorization alone determines the subject. Clients often pass their own username in the path for URL compatibility. Starts a background task to list available recovery topics. Returns immediately with 202 Accepted and a task identifier.
Present for URL compatibility with existing clients. The server does not use this value when applying the update—the request always targets the user identified by the Bearer token.
usernameSchema entity label; often inferred from the user role when omitted.
Hedera topic id (e.g. restore / profile flows).
0.0.7813042Hedera private key (local signing). May be omitted for some remote flows.
falseSuccessful operation.
Task Id
9db028d2-03ad-4d49-a178-cf4b67f8c147Expected count of task phases
8Task action
Create toolUser Id
69bcfd90c98df6ceb05e8a78Unauthorized request.
Forbidden
Internal server error.
PUT /api/v1/profiles/restore/topics/{username} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 170
{
"hederaAccountId": "0.0.6057669",
"hederaAccountKey": "302e020100300506032b657004220420efb6030ba3c022d16b6828a7cf826c88b1578bcf9d69fbcc4a548f5292b6068f",
"didDocument": null
}{
"taskId": "b34f028a-16b5-4f5e-a75f-17c3da89bb7d",
"expectation": 2,
"action": "Get user topics",
"userId": "69c3a5b08c0ae8a3b1083e95"
}Checks the DID document and returns whether required Hedera verification methods (Ed25519 + BLS) are present. Response includes keys grouped by verification method type.
HTTP 200 for both valid and invalid documents; inspect valid and error.
Error message when valid is false; empty string when valid.
Unauthorized request.
Forbidden
Unprocessable entity.
Internal server error.
POST /api/v1/profiles/did-document/validate HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 978
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"@context": "https://www.w3.org/ns/did/v1",
"verificationMethod": [
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key",
"type": "Ed25519VerificationKey2018",
"controller": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"publicKeyBase58": "2vKLgbwo1DoxTebvSzmz1mk1H4tJTX3FaUt4RUFPCZ6p"
},
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key-bbs",
"type": "Bls12381G2Key2020",
"controller": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"publicKeyBase58": "24LRAHd2Dc7d2qziS9D6hXHFmc5uir2TDzowcxzprCd24ynNBjz5NP1kcpGoFbHdRLZo69ZvwdcsjNGSxEyDyCpgqe2Z1ihL8Ysy8Z9KA6wJmBUjEmTYdNNMur8mxgmapoq6"
}
],
"authentication": [
"did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key"
],
"assertionMethod": [
"#did-root-key",
"#did-root-key-bbs"
]
}{
"valid": true,
"error": "",
"keys": {
"Ed25519VerificationKey2018": [
{
"name": "#did-root-key",
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key"
}
],
"Bls12381G2Key2020": [
{
"name": "#did-root-key-bbs",
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key-bbs"
}
]
}
}For each entry in keys, checks that id matches a verification method in document and that key validates against it. Returns the same array with a valid flag per entry (HTTP 200 even when some keys fail).
Array of results in the same order as request keys.
Unauthorized request.
Forbidden
Unprocessable entity.
Internal server error.
POST /api/v1/profiles/did-keys/validate HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1220
{
"document": {
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"@context": "https://www.w3.org/ns/did/v1",
"verificationMethod": [
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key",
"type": "Ed25519VerificationKey2018",
"controller": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"publicKeyBase58": "2vKLgbwo1DoxTebvSzmz1mk1H4tJTX3FaUt4RUFPCZ6p"
},
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key-bbs",
"type": "Bls12381G2Key2020",
"controller": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734",
"publicKeyBase58": "24LRAHd2Dc7d2qziS9D6hXHFmc5uir2TDzowcxzprCd24ynNBjz5NP1kcpGoFbHdRLZo69ZvwdcsjNGSxEyDyCpgqe2Z1ihL8Ysy8Z9KA6wJmBUjEmTYdNNMur8mxgmapoq6"
}
],
"authentication": [
"did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key"
],
"assertionMethod": [
"#did-root-key",
"#did-root-key-bbs"
]
},
"keys": [
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key",
"key": "1"
},
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key-bbs",
"key": "1"
}
]
}[
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key",
"key": "1",
"valid": false
},
{
"id": "did:hedera:testnet:AGGRsWENUUAqhusdGrfX6R5TuEU8MU56XDyorH2MKZyY_0.0.3578734#did-root-key-bbs",
"key": "1",
"valid": false
}
]Returns the list of existing keys.
The number of pages to skip before starting to collect the result set
0The numbers of items to return
20Successful operation.
Unauthorized request.
Forbidden
Internal server error.
GET /api/v1/profiles/keys HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"createDate": "2026-03-25T08:38:23.528Z",
"updateDate": "2026-03-25T08:38:23.528Z",
"messageId": "1774427068.001165000",
"owner": "did:hedera:testnet:BftZd6RVk1D5yXC64g25b9TmhAvNLwki271mWgDAu7yW_0.0.8361161",
"policyName": "CDM AMS-III.AR Policy",
"id": "69c39eff462c9c1141de2f7d"
},
{
"createDate": "2026-03-25T08:38:15.920Z",
"updateDate": "2026-03-25T08:38:15.920Z",
"messageId": "1774427841.463316056",
"owner": "did:hedera:testnet:BftZd6RVk1D5yXC64g25b9TmhAvNLwki271mWgDAu7yW_0.0.8361161",
"policyName": "CDM AMS-II.J Policy",
"id": "69c39ef7462c9c1141de2f7c"
}
]Registers a policy message key for the authenticated user's DID. Generate: send only messageId—the server creates a private key for that policy. The owner can copy the messageId and returned key from the response and pass them out of band to another person. Import: the recipient calls this endpoint with the same messageId plus the DER-encoded private key they received, so their account can use the policy like the original owner. Either way the call is refused with 409 when this DID already holds a key for that messageId: one vault slot is addressed per did#messageId, so a second key would overwrite the first with no way to recover it. Delete the existing key before creating another.
Policy Message ID
1773670900.819264517DER-encoded private key when importing on the remote user account. Omit when generating for user flow (only messageId).
KeySuccessful operation.
Key ID
69aeb71ef8c5b278e3bab4e52026-03-03T17:25:53.312Z2026-03-03T17:25:53.312ZPolicy Message ID
1773670900.819264517Key owner
did:hedera:testnet:Cvzp5kKVUuipBCQjcF54fBjdicvaKsB8zHeQ6Qq22U2Z_0.0.8200599Policy nameNew key
KeyUnauthorized request.
Forbidden
Conflict.
Unprocessable entity.
Internal server error.
POST /api/v1/profiles/keys HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"messageId": "1769689879.382295507"
}{
"createDate": "2026-03-25T07:53:00.554Z",
"updateDate": "2026-03-25T07:53:00.554Z",
"messageId": "1769689879.382295507",
"owner": "did:hedera:testnet:BftZd6RVk1D5yXC64g25b9TmhAvNLwki271mWgDAu7yW_0.0.8361161",
"id": "69c3945c462c9c1141de2e06",
"key": "302e020100300506032b6570042204201f7147c259331152b8f8b4772029af8cfe60385db3c5a1c1cdb8dc9bd6810a6a"
}Deletes the key with the specified ID.
Key Identifier
69aeb71ef8c5b278e3bab4e5Successful operation.
Unauthorized request.
Forbidden
Unprocessable entity.
Internal server error.
DELETE /api/v1/profiles/keys/{id} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
trueLast updated