Skip to main content

getKmsInfo

GET /kms/{kms_id} Returns details about a specific KMS instance. Parameters:
FieldTypeRequiredDescription
kms_idstringYesKMS ID or slug
Returns: KmsInfo
FieldTypeDescription
idstringKMS identifier
slugstringURL-friendly name
versionstringKMS version
urlstringKMS endpoint URL
chain_idnumber?Blockchain chain ID (on-chain KMS only)
kms_contract_addressstring?Contract address (on-chain KMS only)
chainChain?Viem chain configuration (on-chain KMS only)
Example:
const kms = await client.getKmsInfo({ kms_id: "phala" });
console.log(kms.slug, kms.url);

getKmsList

GET /kms Returns a paginated list of available KMS instances. Parameters:
FieldTypeRequiredDescription
pagenumberNoPage number
page_sizenumberNoItems per page
is_onchainbooleanNoFilter for on-chain KMS only
Returns: GetKmsListResponse — paginated list of KmsInfo objects. Example:
// List all on-chain KMS instances
const kmsList = await client.getKmsList({ is_onchain: true });
kmsList.items.forEach(kms => {
  console.log(kms.slug, kms.chain_id, kms.kms_contract_address);
});

nextAppIds

GET /kms/phala/next_app_id Reserves one or more app IDs from the centralized Phala KMS. Use these with the nonce and app_id parameters in provisionCvm for deterministic app ID assignment. Parameters:
FieldTypeRequiredDescription
countsnumberNoNumber of IDs to reserve (1-20, default: 1)
Returns: NextAppIds
FieldTypeDescription
app_idsarrayArray of { app_id, nonce } pairs
Example:
const reserved = await client.nextAppIds({ counts: 3 });
reserved.app_ids.forEach(({ app_id, nonce }) => {
  console.log(`Reserved: ${app_id} (nonce: ${nonce})`);
});

getKmsOnChainDetail

GET /kms/on-chain/{chain} Returns on-chain KMS details for a specific blockchain, including all registered contracts with their devices and OS images. This is useful for inspecting the on-chain state of KMS infrastructure across a chain. Parameters:
FieldTypeRequiredDescription
chainstringYesChain name (e.g., "base", "ethereum")
Returns: GetKmsOnChainDetailResponse
FieldTypeDescription
chain_namestringBlockchain name
chain_idnumberBlockchain chain ID
contractsarrayKMS contracts with contract_address, chain_id, chain_name, devices, os_images
Each contract includes:
FieldTypeDescription
contract_addressstringKMS contract address
devicesarrayRegistered devices with device_id, node_name, on_chain_allowed
os_imagesarrayOS images with name, version, os_image_hash, on_chain_allowed
Example:
const detail = await client.getKmsOnChainDetail({ chain: "base" });
console.log(`Chain: ${detail.chain_name} (${detail.chain_id})`);
detail.contracts.forEach(c => {
  console.log(`Contract: ${c.contract_address}`);
  c.devices.forEach(d => console.log(`  Device: ${d.device_id} allowed=${d.on_chain_allowed}`));
});