Blockmove.io API is a simple, mostly RESTful API for interacting with Blockmove wallets, accessed over HTTPS from the api.blockmove.io domain.
All API calls are versioned, and the current Blockmove API is V1. We will never introduce any breaking changes within V1, but we may add new, non-breaking features from time to time.
POST
requests.application/json
.Blockmove has client SDKs for the following languages:
If you’re using these languages, we strongly encourage you to use an official SDK. Of course, all our API calls are standard HTTP endpoints using JSON formatted responses, so any language (or cURL from the command-line) will work just fine.https://api.blockmove.io/v1
The minimum required PHP version for SDK is PHP 5.4
.
You can install SDK in two ways, using the Composer package manager or by downloading an archive file from Github repository.
The Composer is the preferred way, as it allows you to install new extensions or update SDK by simply running a single command.
> composer require blockmove.io/blockmove-api-php
You can install Node.js SDK in two ways, using the npm
package manager
or by downloading an archive file from Github repository.
Npm installation:
> npm install blockmove-api-node
> composer require blockmove.io/blockmove-api-php
> npm install blockmove-api-node
Coin | Currency Code |
Bitcoin | BTC |
Bitcoin Cash | BCH |
Litecoin | LTC |
Dash | DASH |
Dogecoin | DOGE |
Zcash | ZEC |
Etherem | ETH |
Ripple | XRP |
Litecoin [Testnet] | tLTC |
Ethereum [Testnet] | tETH |
Ripple [Testnet] | tXRP |
ERC20 Tokens | |
USD Coin | USDC |
Tether USD | USDT |
TrueUSD | TUSD |
Paxos Standard | PAX |
Basic Attention Token | BAT |
Augur | REP |
Maker | MKR |
Nexo | NEXO |
0x | ZRX |
HuobiToken | HT |
OmiseGO | OMG |
Test Standard Token [Testnet] | TST |
For testing purposes we recommend to use coins marked as [Testnet].
You can request test coins for Litecoin [Testnet]
network from any litecoin testnet faucet. For example https://tltc.bitaps.com.
Test coins for Ethereum [Testnet]
you can request from any public testnet faucet. For example https://teth.bitaps.com.
Test coins for Ripple [Testnet]
you can get here https://xrpl.org/xrp-testnet-faucet.html.
Then send test coins to test address in Blockmove Wallet through Ripple Wallet service https://ripplerm.github.io/ripple-wallet/
Also you can find test ERC20 token for Ethereum [Testnet]
network. The test token is Test Standard Token [Testnet]
.
To get test tokens you want to go to Etherscan.io TST Page to Write Contract section, then find showMeTheMoney function. Place wallet address to _to field and amount you want to request to _value field.
Custom tokens
Note that you can add anycustom ERC20 token
to your Ethereum wallet and use it in API.
To get API Keys you must register an account in our wallet service.
After registration and email confirmation go to API
section in main menu. Then click Create new API Keys
button and follow instructions.
You will get two keys. The first one is public
the second is secret
.
Public key
is used to identify your account and by secret key
you must sign every request you make.
API Key has
GET
request parameter named as_api_key
.
Every request body must be signed by secret key
via HMAC-SHA265
algorithm even if the request body is empty.
After signing, result signature must be included in request JSON string.
Signature has request parameter named as
_api_sign
.
In request body password string must be ONLY in encrypted format. Password encrypted by SHA-512
algorithm.
Important
Wallet password always encrypted on client side, even in browser. We do not ever receive and do not ever require plain unencrypted password from you!
Public:
DGd8dAjlsfGXag_KWdjMormuNldnYOi1
Secret:
ndnmqNbzo6fSs1JaLwMkRv2OhvM3GlKuljHedm0P_U76jdTkcL
{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","amount":0.01}
[linux]$ echo -n '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","amount":0.01}' \
| openssl dgst -sha256 -hmac "ndnmqNbzo6fSs1JaLwMkRv2OhvM3GlKuljHedm0P_U76jdTkcL"
(stdin)= 5b4586e74bed76b563f66b2e62540d67778a190dcd3ff3b32b1c8d8deedd58ec
echo hash_hmac('sha256', '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","amount":0.01}', 'ndnmqNbzo6fSs1JaLwMkRv2OhvM3GlKuljHedm0P_U76jdTkcL');
php://stdin = '5b4586e74bed76b563f66b2e62540d67778a190dcd3ff3b32b1c8d8deedd58ec'
let crypto = require('crypto'); let hmac = crypto.createHmac('sha256', 'ndnmqNbzo6fSs1JaLwMkRv2OhvM3GlKuljHedm0P_U76jdTkcL'); let result = hmac.update(queryString).digest('hex'); console.log(result);
node://stdin = '5b4586e74bed76b563f66b2e62540d67778a190dcd3ff3b32b1c8d8deedd58ec'
Code | Description |
---|---|
200
|
Request is successfull. |
400
|
Some unexpecred error occured. |
401
|
Unauthorized request. Check your API Key. |
404
|
Endpoint or requested record not found. |
406
|
Incorrect signature. Check if request data is signed correctly. |
All requests must satisfy these rules:
1. Requests must be executed as POST
requests.
2. Each request must contain two required parameters:
_api_key
- parameter necessary to identify your account. Can be placed as GET
parameter or in JSON
body either._api_sign
- signature which computes by signing request body by Secret Key
via HMAC SHA256
algorithm
3. Wallet password must be encrypted via SHA-512
algorithm before making request.
If you use SDKs povided by Blockmove, all encrypting processes are done by SDK itself.
Attribute | Type | Description |
code | integer | Return code. You can see return codes description here. |
v | integer | Shows which version of API is used. |
message | string | Breif description of return code or description of error. |
data | array|object | Response data value. Can be returned as array or object . |
{
"code": 404,
"v": 1,
"message": "Not found",
"data": []
}
The Wallet Balance Endpoint returns an information about balance of whole wallet.
Endpoint | Method |
---|---|
/walletbalance | POST |
Attribute | Type | Description |
wallet_id | string | ID of wallet which you can achieve by opening created wallet page. |
Attribute | Type | Description |
coin | string | Coin code. |
amount | float | Total wallet balance. |
amountCoins | string | Total wallet balance in satoshis . |
unconfirmed | float | Unconfirmed wallet balance. |
unconfirmedCoins | string | Unconfirmed wallet balance in satoshis . |
tokens | array | List for available tokens for Ethereum currency. |
curl -d '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","_api_sign":"214ba2053e5a860b74b97d6afa8b42f509ac4e78d82fc0dbcd43f1b9d3823a70"}' https://api.blockmove.io/v1/walletbalance?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
{ "coin": "tETH", "amount": 0.1, "amountCoins": "10000000", "unconfirmed": 0.05, "unconfirmedCoins": "5000000", "tokens": [ { "coin": "TST", "amount": 0.1, "amountCoins": "10000000", "unconfirmed": 0.05, "unconfirmedCoins": "5000000" } ] }
$result = APIClient::init($apiKey, $apiSecret)
->getWalletBalance($walletId);
{
"coin": "tETH",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000",
"tokens": [
{
"coin": "TST",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000"
}
]
}
let Api = new BlockmoveApi(API_KEY, API_SECRET);
Api.getWalletBalance(WALLET_ID, function(error, data) {
console.log(data);
});
{
"coin": "tETH",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000",
"tokens": [
{
"coin": "TST",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000"
}
]
}
The Generate Address Endpoint allows you to get new address for payment process. Also, this method allows to pass Webhook endpoint for notifications in address balance change.
Endpoint | Method |
---|---|
/generateaddress | POST |
Attribute | Type | Description |
wallet_id | string | ID of wallet which you can achieve by opening created wallet page. |
webhook
optional
|
string |
Absolute callback url. Example: https://example.com/status.php?payment=ok
More about Webhooks you can read here.
|
Attribute | Type | Description |
address | string | Address string of corresponding currency. |
params | object |
Additional params like destination tag which uses in Ripple (XRP) currency.Has attributes: message string - message valuemessage_param string - parameter depending on currency. dt for Ripple(XRP).
|
curl -d '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","webhook":"https://example.com/status.php?payment=ok","_api_sign":"f07cc8509527bd51270d136576e3b2e9857b631660b54d6df8cf3d31ff40e5ca"}' https://api.blockmove.io/v1/generateaddress?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
{ "address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs", "params": { "message": "3857367", "message_param": "dt" } }
$result = APIClient::init($apiKey, $apiSecret)
->generateAddress($walletId, $webhook);
{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"params": {
"message": "3857367",
"message_param": "dt"
}
}
let Api = new BlockmoveApi(API_KEY, API_SECRET);
Api.generateAddress({
wallet_id: "WALLET_ID",
webhook: "WEBHOOK_URL"
}, function(error, data) {
console.log(data);
});
{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"params": {
"message": "3857367",
"message_param": "dt"
}
}
The Address Information Endpoint returns balance information of address generated by API.
Endpoint | Method |
---|---|
/addressinfo | POST |
Attribute | Type | Description |
address | string | Address string of corresponding currency. |
message
optional
|
string | Additional param like destination tag which uses in Ripple (XRP) currency. |
token
optional
|
string | Token symbol. Can be used for Ethereum currency. Example: USDT, TST, etc. |
Attribute | Type | Description |
coin | string | Coin code. |
amount | float | Total address balance. |
amountCoins | string | Total address balance in satoshis . |
unconfirmed | float | Unconfirmed wallet balance. |
unconfirmedCoins | string | Unconfirmed wallet balance in satoshis . |
created | string | Created date in datetime format. |
message | object |
Additional information for message like destination tag for Ripple(XRP).Has attributes: value string - message valueamount float - amount in floatamountCoins string - amount in coinscreated string - created datetime
|
curl -d '{"address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","message":"9999999","token":"TST","_api_sign":"48262f5ac889fd5b66be158ef1ad8ca73d98b91e8cd6a6c052c83e278ceddcd7"}' https://api.blockmove.io/v1/addressinfo?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
{ "coin": "tLTC", "amount": 0.1, "amountCoins": "10000000", "unconfirmed": 0.05, "unconfirmedCoins": "5000000", "created": "2025-01-01 12:05:00", "message": { "value": "9999999", "amount": 0.03, "amountCoins": "3000000", "created": "2025-01-01 11:05:00" } }
$result = APIClient::init($apiKey, $apiSecret)
->getAddressInfo($address, $message, $token);
{
"coin": "tLTC",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000",
"created": "2025-01-01 12:05:00",
"message": {
"value": "9999999",
"amount": 0.03,
"amountCoins": "3000000",
"created": "2025-01-01 11:05:00"
}
}
let Api = new BlockmoveApi(API_KEY, API_SECRET);
Api.getAddressInfo({
address: "ADDRESS",
message: "MESSAGE",
token: "TOKEN"
}, function(error, data) {
console.log(data);
});
{
"coin": "tLTC",
"amount": 0.1,
"amountCoins": "10000000",
"unconfirmed": 0.05,
"unconfirmedCoins": "5000000",
"created": "2025-01-01 12:05:00",
"message": {
"value": "9999999",
"amount": 0.03,
"amountCoins": "3000000",
"created": "2025-01-01 11:05:00"
}
}
The Transaction Information Endpoint returns status of transaction sent by Send Payment
Method.
Endpoint | Method |
---|---|
/tx | POST |
Attribute | Type | Description |
wallet_id | string | ID of wallet which you can achieve by opening created wallet page. |
tx_id | string | Cryptocurrency Transaction ID Hash. |
Attribute | Type | Description |
type | string | Type of transaction, sent or received |
amount | float | Transaction amount for wallet address. |
amountCoins | string | Transaction amount for wallet address in satoshis . |
message | string | Additional message information like destination tag for Ripple(XRP). |
fees | array|objest |
Transaction fees. See annotation. |
feesCoins | string | Transaction fees in satoshis . |
confirmations | int | Total confirmations of transaction. |
isConfirmed | int |
Returns if transaction is confirmed. 1 for confirmed, 0 for unconfirmed.Each coin has its own confirmations. For example, for Bitcoin it is 2 confirmations, for Litecoin 6 confirmations, etc.
|
time | int | Time of transaction in timestamp format. |
curl -d '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","tx_id":"e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c","_api_sign":"34d01473eac7ca6d1081f783e10d3d5a9717da59874142b8a34868b26ca41554"}' https://api.blockmove.io/v1/tx?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
{ "tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c", "coin": "tLTC", "type": "sent", "amount": 0.1, "amountCoins": "10000000", "message": "12345", "fees": { "coin": "tLTC", "amount": 0.05, "amountCoins": 5000000 }, "confirmations": 10, "isConfirmed": 1, "time": 1735733100 }
$result = APIClient::init($apiKey, $apiSecret)
->getTx($wallet_id, $tx_id);
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"amount": 0.1,
"amountCoins": "10000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
let Api = new BlockmoveApi(API_KEY, API_SECRET);
Api.getTx({
wallet_id: "WALLET_ID",
tx_id: "TX_ID"
}, function(error, data) {
console.log(data);
});
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"amount": 0.1,
"amountCoins": "10000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
The Send Payment Endpoint allows to make payments to specified address. API spend
permission must be activated.
Endpoint | Method |
---|---|
/send | POST |
Attribute | Type | Description |
wallet_id | string | ID of wallet which you can achieve by opening created wallet page. |
password | string |
Wallet password encrypted by SHA-512 algorithm.
Note: If you are using SDK no need to encrypt password.
SDK will do it automatically. |
destination | string|array | Address where you want to send payment. When it is nesessary to provide additional information like destination tag this attribute is used as array [address, message] . |
amount | float | Amount to send in float format. |
priority
optional
|
string |
Priority attribute affects on transaction time confirmation.
Low priority for low time confirmation and less fees,
high priority for faster confirmation and larger fees respectively.
There are three types of priority high , medium and low .By default medium priority is used.
|
token
optional
|
string | Token symbol. Can be used for Ethereum currency. Example: USDT, TST, etc. |
Attribute | Type | Description |
txid | array | Array of Transaction ID hashes. |
curl -d '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","password":"SHA512_encoded_string","destination":{"address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","message":"12345"},"amount":0.01,"priority":"high","token":"TST","_api_sign":"5a45d26fd9a63cb32511b21a3c36ab16bf8c55a5e8b5e1034f788cd73923d7d0"}' https://api.blockmove.io/v1/send?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
[ "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c" ]
$destination = [
"address" => "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"message" => 12345
];
$result = APIClient::init($apiKey, $apiSecret)
->send(
$wallet_id,
$password,
$destination,
$amount,
APIClient::HIGH,
$token
);
[
"e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c"
]
let Api = new BlockmoveApi(API_KEY, API_SECRET);
let destination = {
address: "DESTINATION_ADDRESS",
message: "DESTINATION_TAG"
};
Api.send({
wallet_id: "WALLET_ID",
password: "WALLET_PASSWORD",
destination: destination,
amount: 0.01,
priority: Api.PRIORITY_MEDIUM,
token: "TST"
}, function(error, data) {
console.log(data);
});
[
"e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c"
]
The Wallet History Endpoint allows to get whole transaction history of wallet addresses generated by API.
Endpoint | Method |
---|---|
/wallethistory | POST |
Attribute | Type | Description |
wallet_id | string | ID of wallet which you can achieve by opening created wallet page. |
params
optional
|
array |
[limit, offset] parameters to display records.
limit - how many records to display (maximum is 100);
offset - from which record.
|
token
optional
|
string | Token symbol. Can be used for Ethereum currency. Example: USDT, TST, etc. |
Attribute | Type | Description |
tx_id | string | Transaction hash. |
coin | string | Currency symbol. |
type | string | Type of transaction, sent or received |
from | array |
List of addresses from where funds have been sent.
See annotation. |
to | array | List of addresses funds where received to. |
amount | float | Total transaction amount. |
amountCoins | string | Total transaction amount in satoshis . |
message | string | Additional message information like destination tag for Ripple(XRP). |
fees | array|object |
Transaction fees. See annotation. |
confirmations | int | Total confirmations of transaction. |
isConfirmed | int |
Returns if transaction is confirmed. 1 for confirmed, 0 for unconfirmed.Each coin has its own confirmations. For example, for Bitcoin it is 2 confirmations, for Litecoin 6 confirmations, etc.
|
time | int | Time of transaction in timestamp format. |
curl -d '{"wallet_id":"GmZ0zppklWH8gq6M35VOkJGYcxRY32h","params":{"limit":10,"offset":5},"token":"TST","_api_sign":"5a45d26fd9a63cb32511b21a3c36ab16bf8c55a5e8b5e1034f788cd73923d7d0"}' https://api.blockmove.io/v1/send?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
[ { "tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c", "coin": "tLTC", "type": "sent", "from": [{ "address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs", "amount": 0.15, "amountCoins": "15000000", "type": "address", "isWallet": 1 }], "to": [{ "address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk", "amount": 0.1, "amountCoins": "10000000", "type": "address", "isWallet": 0 }, { "address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX", "amount": 0.05, "amountCoins": "5000000", "type": "fee", "isWallet": 0 }], "amount": 0.15, "amountCoins": "15000000", "message": "12345", "fees": { "coin": "tLTC", "amount": 0.05, "amountCoins": 5000000 }, "confirmations": 10, "isConfirmed": 1, "time": 1735733100 } ]
$params = [
"limit" => 10,
"offset" => 5
];
$result = APIClient::init($apiKey, $apiSecret)
->getWalletHistory(
$wallet_id,
$params,
$token
);
[
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"from": [{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"amount": 0.15,
"amountCoins": "15000000",
"type": "address",
"isWallet": 1
}],
"to": [{
"address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk",
"amount": 0.1,
"amountCoins": "10000000",
"type": "address",
"isWallet": 0
}, {
"address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX",
"amount": 0.05,
"amountCoins": "5000000",
"type": "fee",
"isWallet": 0
}],
"amount": 0.15,
"amountCoins": "15000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
]
Api.getWalletHistory({
wallet_id: "WALLET_ID",
params: {
limit: 10,
offet: 5
},
token: "TST"
}, function(error, data) {
console.log(data);
});
[
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"from": [{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"amount": 0.15,
"amountCoins": "15000000",
"type": "address",
"isWallet": 1
}],
"to": [{
"address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk",
"amount": 0.1,
"amountCoins": "10000000",
"type": "address",
"isWallet": 0
}, {
"address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX",
"amount": 0.05,
"amountCoins": "5000000",
"type": "fee",
"isWallet": 0
}],
"amount": 0.15,
"amountCoins": "15000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
]
The Address History Endpoint allows to get transaction history of specified address generated by API.
Endpoint | Method |
---|---|
/addresshistory | POST |
Attribute | Type | Description |
address | string | Address string of corresponding currency. |
params
optional
|
array |
[limit, offset] parameters to display records.
limit - how many records to display (maximum is 100);
offset - from which record.
|
token
optional
|
string | Token symbol. Can be used for Ethereum currency. Example: USDT, TST, etc. |
Attribute | Type | Description |
tx_id | string | Transaction hash. |
coin | string | Currency symbol. |
type | string | Type of transaction, sent or received |
from | array |
List of addresses from where funds have been sent.
See annotation. |
to | array | List of addresses funds where received to. |
amount | float | Total transaction amount. |
amountCoins | string | Total transaction amount in satoshis . |
message | string | Additional message information like destination tag for Ripple(XRP). |
fees | array|object |
Transaction fees. See annotation. |
confirmations | int | Total confirmations of transaction. |
isConfirmed | int |
Returns if transaction is confirmed. 1 for confirmed, 0 for unconfirmed.Each coin has its own confirmations. For example, for Bitcoin it is 2 confirmations, for Litecoin 6 confirmations, etc.
|
time | int | Time of transaction in timestamp format. |
curl -d '{"address":"mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs","params":{"limit":10,"offset":5"},"token":"TST","_api_sign":"5a45d26fd9a63cb32511b21a3c36ab16bf8c55a5e8b5e1034f788cd73923d7d0"}' https://api.blockmove.io/v1/send?_api_key=DGd8dAjlsfGXag_KWdjMormuNldnYOi1
[ { "tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c", "coin": "tLTC", "type": "sent", "from": [{ "address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs", "amount": 0.15, "amountCoins": "15000000", "type": "address", "isWallet": 1 }], "to": [{ "address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk", "amount": 0.1, "amountCoins": "10000000", "type": "address", "isWallet": 0 }, { "address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX", "amount": 0.05, "amountCoins": "5000000", "type": "fee", "isWallet": 0 }], "amount": 0.15, "amountCoins": "15000000", "message": "12345", "fees": { "coin": "tLTC", "amount": 0.05, "amountCoins": 5000000 }, "confirmations": 10, "isConfirmed": 1, "time": 1735733100 } ]
$params = [
"limit" => 10,
"offset" => 5
];
$result = APIClient::init($apiKey, $apiSecret)
->getAddressHistory(
$address,
$params,
$token
);
[
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"from": [{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"amount": 0.15,
"amountCoins": "15000000",
"type": "address",
"isWallet": 1
}],
"to": [{
"address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk",
"amount": 0.1,
"amountCoins": "10000000",
"type": "address",
"isWallet": 0
}, {
"address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX",
"amount": 0.05,
"amountCoins": "5000000",
"type": "fee",
"isWallet": 0
}],
"amount": 0.15,
"amountCoins": "15000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
]
Api.getAddressHistory({
address: "ADDRESS",
params: {
limit: 10,
offet: 5
},
token: "TST"
}, function(error, data) {
console.log(data);
});
[
{
"tx_id": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"coin": "tLTC",
"type": "sent",
"from": [{
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"amount": 0.15,
"amountCoins": "15000000",
"type": "address",
"isWallet": 1
}],
"to": [{
"address": "mtkemt2vcPv79dPT8L4XC5J1H53fMFiCJk",
"amount": 0.1,
"amountCoins": "10000000",
"type": "address",
"isWallet": 0
}, {
"address": "ms4u4DsgfqdP85ceodZkHm1TFn43tEHaiX",
"amount": 0.05,
"amountCoins": "5000000",
"type": "fee",
"isWallet": 0
}],
"amount": 0.15,
"amountCoins": "15000000",
"message": "12345",
"fees": {
"coin": "tLTC",
"amount": 0.05,
"amountCoins": 5000000
},
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100
}
]
Attribute | Type | Description |
coin | string | Symbol of corresponding currency. |
amount | float | Total address balance. |
amountCoins | string | Total address balance in satoshis . |
Attribute | Type | Description |
address | string | Address value of corresponding currency. |
amount | float | Total address balance. |
amountCoins | string | Total address balance in satoshis . |
type | string |
Type of address.address - for wallet address;change - change address;fee - used to charge fee. |
isWallet | int | Shows does that address belongs to the wallet. Has 0 or 1 value. |
Webhooks are used for notifications of change in address balance. We send notifications to callback url you provided during address generation.
Each webhook is logging on corresponding API Keys page, so you can easily monitor correctness of your scripts and view response codes.
Also there is a tool on API Keys page for testing your callback urls.
Webhooks send data by POST
method.
Your website must response with200
http code. If it response with any other code, we retry individual payloads to your urlfive
times, then webhook marks as incorrect.
Attribute | Type | Description |
coin | string | Corresponding coin code. |
txid | string | Transaction ID hash. |
type | string | Type of transaction, sent or received . |
block | int | Block number. |
address | string | The address that you had generated. |
message | string | Additional message attribute used for currencies like Ripple that has destination tag param. |
amount | float | Amount of transaction. |
amountCoins | float | Amount of transaction in satoshis . |
confirmations | int | Number of confirmations of transaction. |
isConfirmed | int | Returns if transaction is confirmed. 1 for confirmed, 0 for unconfirmed. |
time | int | Time of transaction in timestamp. |
blockTime | int | Time of block in timestamp. |
{
"coin": "tLTC",
"txid": "e6751090e0b46c1dbbc6ad8dc87fcc28eb37eca47b449d6bde30a9aab1b4f32c",
"type": "received",
"block": 999999,
"address": "mukemt2vcPv79dPT8L4XC5J1H53fMFiCJs",
"message": "12345",
"amount": 0.1,
"amountCoins": "10000000",
"confirmations": 10,
"isConfirmed": 1,
"time": 1735733100,
"blockTime": 1735733100
}
Instant Payment Notification (IPN) is a message service that automatically notifies merchants about incoming transactions.
Merchants can use it to automate back-office and administrative functions, including automatically fulfilling orders and providing customers with order status.
Each IPN request is logging on corresponding Merchant Settings page, so you can easily monitor correctness of your scripts and view response codes.
IPN request is sending with POST
method.
Your website must response with200
http code. If it response with any other code, the system will retry individual payloads to your Status Urlten
times, then request marks as incorrect.
Attribute | Type | Description |
status | string |
The current status of invoice. List of invoice statuses. |
invoice_id | string | Unique Blockmove Merchant Invoice ID. |
order_id | string | Order ID generated by your website. |
currency | string | The fiat currency your website is using. For example USD . |
amount | float | Amount of your order in your website currency. For example 100 USD . |
coin | string | Cryptocurrency coin the customer makes payment. |
rate | float | Rate of selected cryprtocurrency coin. |
invoice_amount | float | Invoice amount of selected cryptocurrency. |
invoice_coins | float | Invoice amount of selected cryptocurrency in satoshis . |
paid_amount | float | Coins of selected cryptocurrency paid by customer. |
paid_coins | float | Coins of selected cryptocurrency paid by customer in satoshis . |
refunded_amount | float | Amount of selected cryptocurrency coins in order if customer requested refund. |
refunded_coins | float | Amount of selected cryptocurrency coins in satoshis in order if customer requested refund. |
[custom parameters] | mixed | Custom parameters that received from your website. |
sign | string | Signature of request signed by Merchant Secret Key. It uses to verify correctness of payload data. Signed by Merchant Secret Key with HMAC-SHA256 algorithm. |
Status | Description |
new | Invoice created and not yet paid. |
confirming | Network is confirming transaction. |
paid | Invoice has been completely paid. |
expired | Time of the invoice has been expired. |
cancel | Invoice has been canceled by customer. |
error | Some error occurred. |
refund | Customer requested refund. |
refunded | Refund has been completed. |
{
"status": "paid",
"invoice_id": "5dd111f8d71df",
"order_id": "123456789",
"currency": "USD",
"amount": 100,
"coin": "BTC",
"rate": 5000,
"invoice_amount": 0.02,
"invoice_coins": "20000000",
"paid_amount": 0.02,
"paid_coins": "20000000",
"refunded_amount": 0.019999,
"refunded_coins": "19999000",
"param1": "custom_parameter_1",
"param2": "custom_parameter_2",
"sign": "7068a8f402eef752a30fc7136c08aa509a8591cb97816714167b49c207d788e4"
}
2Yt0FGJoRJjygiTHCxiGUwdEe_UStiUvbeWVBR8Xyt6g24o4F-
status=paid&invoice_id=5dd111f8d71df&order_id=123456789¤cy=USD&amount=100&coin=BTC&rate=5000&invoice_amount=0.02&invoice_coins=20000000&paid_amount=0.02&paid_coins=20000000&refunded_amount=0.019999&refunded_coins=19999000¶m1=custom_parameter_1¶m2=custom_parameter_2
[linux]$ echo -n 'status=paid&invoice_id=5dd111f8d71df&order_id=123456789¤cy=USD&amount=100&coin=BTC&rate=5000&invoice_amount=0.02&invoice_coins=20000000&paid_amount=0.02&paid_coins=20000000&refunded_amount=0.019999&refunded_coins=19999000¶m1=custom_parameter_1¶m2=custom_parameter_2' \
| openssl dgst -sha256 -hmac "2Yt0FGJoRJjygiTHCxiGUwdEe_UStiUvbeWVBR8Xyt6g24o4F-"
(stdin)= 7068a8f402eef752a30fc7136c08aa509a8591cb97816714167b49c207d788e4
echo hash_hmac('sha256', 'status=paid&invoice_id=5dd111f8d71df&order_id=123456789¤cy=USD&amount=100&coin=BTC&rate=5000&invoice_amount=0.02&invoice_coins=20000000&paid_amount=0.02&paid_coins=20000000&refunded_amount=0.019999&refunded_coins=19999000¶m1=custom_parameter_1¶m2=custom_parameter_2', '2Yt0FGJoRJjygiTHCxiGUwdEe_UStiUvbeWVBR8Xyt6g24o4F-');
php://stdin = '7068a8f402eef752a30fc7136c08aa509a8591cb97816714167b49c207d788e4'
let crypto = require('crypto'); let hmac = crypto.createHmac('sha256', '2Yt0FGJoRJjygiTHCxiGUwdEe_UStiUvbeWVBR8Xyt6g24o4F-'); let result = hmac.update(queryString).digest('hex'); console.log(result);
node://stdin = '7068a8f402eef752a30fc7136c08aa509a8591cb97816714167b49c207d788e4'