Key Management System (KMS) is a comprehensive solution for building custodial applications. KMS runs locally on your server and provides security for generating wallets, addresses, and private keys, and for signing transactions.
KMS builds a list of pending transaction to sign and provides the options to complete a transaction after it has been signed and to obtain transaction details with the result of the blockchain operation via the transaction ID.
In KMS, each managed wallet or private key is assigned a unique signature ID (signatureId
) that represents that wallet or private key. This signature ID is then used in an API request to identify the wallet.
Depending on the API, you can use the signature ID in an API call request in the following ways:
transferBtcKMS
request schema).BtcTransactionFromUTXOKMS
request schema).transferEthKMS
request schema).You can run KMS on the following operating systems:
For more information about KMS, see the KMS GitHub repository and the user documentation.
1 credit per API call
Get the list of pending transactions to sign and broadcast using KMS.
OK
Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
Internal server error. There was an error on the server while processing the request.
[- {
- "id": "5e6645712b55823de7ea82f1",
- "chain": "ETH",
- "hashes": [
- "1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb"
], - "serializedTransaction": "alskdjfq8o27fbkasljfbq8o7b4fqo83f7bqejhafbo8q4f",
- "withdrawalId": "5e6645712b55823de7ea82f1",
- "index": 1,
- "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
- "withdrawalResponses": [
- {
- "address": {
- "address": "7c21ed165e294db78b95f0f181086d6f",
- "currency": "BTC",
- "derivationKey": 2147483647,
- "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka",
- "destinationTag": 5,
- "memo": "5",
- "message": "5"
}, - "amount": 0,
- "vIn": "string",
- "vInIndex": 0,
- "scriptPubKey": "string"
}
]
}
]
Signature IDs of the KMS which invokes this endpoint.
OK
Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
Internal server error. There was an error on the server while processing the request.
{ }
[- {
- "id": "5e6645712b55823de7ea82f1",
- "chain": "ETH",
- "hashes": [
- "1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb"
], - "serializedTransaction": "alskdjfq8o27fbkasljfbq8o7b4fqo83f7bqejhafbo8q4f",
- "withdrawalId": "5e6645712b55823de7ea82f1",
- "index": 1,
- "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
- "withdrawalResponses": [
- {
- "address": {
- "address": "7c21ed165e294db78b95f0f181086d6f",
- "currency": "BTC",
- "derivationKey": 2147483647,
- "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka",
- "destinationTag": 5,
- "memo": "5",
- "message": "5"
}, - "amount": 0,
- "vIn": "string",
- "vInIndex": 0,
- "scriptPubKey": "string"
}
]
}
]
Mark pending transaction to sign as a complete and update it with a transactionID from the blockchain.
OK
Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
Internal server error. There was an error on the server while processing the request.
{- "errorCode": "validation.failed",
- "message": "Request validation failed. Please see data for additional information.",
- "statusCode": 400,
- "data": [
- {
- "target": {
- "property": 12345
}, - "value": 12345,
- "property": "property1",
- "constraints": {
- "min": "property1 must not be less than 50000"
}
}
]
}
Get detail of transaction to be signed / that was already signed and contains transactionId.
OK
Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
Internal server error. There was an error on the server while processing the request.
{- "id": "5e6645712b55823de7ea82f1",
- "chain": "ETH",
- "hashes": [
- "1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb1234987askdjfb1o2873ryskajfb"
], - "serializedTransaction": "alskdjfq8o27fbkasljfbq8o7b4fqo83f7bqejhafbo8q4f",
- "withdrawalId": "5e6645712b55823de7ea82f1",
- "index": 1,
- "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
- "withdrawalResponses": [
- {
- "address": {
- "address": "7c21ed165e294db78b95f0f181086d6f",
- "currency": "BTC",
- "derivationKey": 2147483647,
- "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka",
- "destinationTag": 5,
- "memo": "5",
- "message": "5"
}, - "amount": 0,
- "vIn": "string",
- "vInIndex": 0,
- "scriptPubKey": "string"
}
]
}
Delete transaction to be signed. When deleting offchain transaction, linked withdrawal will be cancelled automatically.
OK
Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
Internal server error. There was an error on the server while processing the request.
{- "errorCode": "validation.failed",
- "message": "Request validation failed. Please see data for additional information.",
- "statusCode": 400,
- "data": [
- {
- "target": {
- "property": 12345
}, - "value": 12345,
- "property": "property1",
- "constraints": {
- "min": "property1 must not be less than 50000"
}
}
]
}