API documentation
The API follows a REST-ful design. JSON is used as the data exchange format. For individual method calls, we suggest using the application/json header with UTF-8 encoding (Content-Type: application/json; charset = utf-8).
Two categories of methods are available:
- public (no authorization needed)
- private (authorization required)
To gain access to the private API methods, please contact our customer support to receive an authorization token {api_key}.
Authorization is performed by including the HTTP header Authorization: Bearer {api_key}
The API is accessible at the following URL:
/api/{endpoint}
A description of the available services (endpoints) is provided below.
GET /status
Public method used to check status of service.
Request:
/api/status
Response:
{
"status": "ok",
"timestamp": 1649143742,
"datetime": "2022-04-05T07:29:02+00:00"
}
Response parameters:
Name: status
Type: text
Description: ok - service active
Name: timestamp
Type: integer
Description: Current server time
Name: datetime
Type: datetime
Description: Current server time in ISO 8601 format
GET /validateAddress/{btc_address}
Public method used to validate the bitcoin address.
Request:
/api/validateAddress/n3PdePLBgEeTYk4nAhcbehsnjvr1i3LyYS
Response:
{
"result": "true"
}
Response parameters:
Name: result
Type: boolean
Description:
true - BTC address is valid
false - BTC address is invalid
POST /createTransaction
Private method used to create a new transaction.
Request:
/api/createTransaction
Request parameters:
{
"delay":"1",
"payouts":[
“mr9if7VDsVfEZ1qUo2u3trv6rU9eH7Yx4u",
"mia3h2FdYvR2LbDR1to9u6TC62hiTbDKM9"
],
"refCode":"qljncygz"
}
Name: delay
Type: integer
Description: Transaction delay in hours (the transaction won't start until the delay interval is reached)
Name: payouts
Type: array
Description: List of BTC addresses and payouts in the following format [BTC_address => BTC_amount]
Name: refCode
Type: string
Description: Affiliate program code (optional)
Response:
{
"id": "JEVG1TKFP4L95EDX",
"status": "pending",
"depositAddress": "tb1qmc2vcq6a427v6t83z8rnyg9ldf5k5p5uj2x4xv",
"depositAmount": 0.00316,
"payouts": {
"mr9if7VDsVfEZ1qUo2u3trv6rU9eH7Yx4u": "0",
"mia3h2FdYvR2LbDR1to9u6TC62hiTbDKM9": "0"
},
"fee": 0.00016,
"delay": "1",
"refCode": "qljncygz",
"updated": "2022-05-05T08:56:05+00:00",
"created": "2022-05-05T08:56:05+00:00",
"signature": "zDQlfJHSJWtzw8yFwevs7KmiDZs15FVl01RbPwPt3bc="
}
Response parameters:
Name: id
Type: string
Description: Transaction ID
Name: status
Type: string
Description: Transaction status
- pending - waiting for deposit
- confirming - deposit received, waiting for one confirmation
- processing - sending payment(s) to specified address(es)
- complete - transaction completed
- expired - transaction expired
Name: depositAddress
Type: string
Description: Deposit BTC address
Name: depositAmount
Type: decimal
Description: Deposit amount = amount of payouts + fees
Name: payouts
Type: array
Description: List of BTC addresses and payout amounts
Name: fee
Type: decimal
Description: Total amount of fees
Name: delay
Type: integer
Description: Transaction delay in hours
Name: refCode
Type: string
Description: Affiliate program code
Name: updated
Type: datetime
Description: Transaction update time in ISO 8601 format
Name: created
Type: datetime
Description: Transaction creation time in ISO 8601 format
Name: signature
Type: string
Description: Signature (explained below)
GET /transactions
Private method used to list of all transactions, sorted from newest to oldest.
Request:
/api/transactions?limit=2&offset=0
Request parameters:
Name: limit
Type: integer
Description: Number of records returned, default = 30
Name: offset
Type: integer
Description: Paging offset, default = 0
Response:
{
"transactions": [
{
"id": "Y9ANXDCJMHG2J6GD",
"status": "pending",
"depositAddress": "tb1qfhlu3acnqztwu2ep8mn446f8mfhkyt6u4xq2dd",
"depositAmount": 0.00316,
"payouts": {
"mr9if7VDsVfEZ1qUo2u3trv6rU9eH7Yx4u": "0.001",
"mia3h2FdYvR2LbDR1to9u6TC62hiTbDKM9": "0.002"
},
"fee": 0.00016,
"delay": "1",
"updated": "2022-05-05T08:52:52+00:00",
"created": "2022-05-05T08:52:52+00:00"
},
{
"id": "EEFU0IKT3BAJ1JOQ",
"status": "expired",
"depositAddress": "tb1qu80wgqucwvwxt3wdk8lyd4weuxn3vvy23et3p3",
"payouts": {
"mx1HgMB1EG38bRtfH4tQwMGSvZXodbxdQ8": "0.005"
},
"fee": 0.0001,
"delay": "0",
"updated": "2022-04-29T11:46:05+00:00",
"created": "2022-04-26T11:46:02+00:00"
}
],
"totalTransactions": 27,
"limit": "2",
"offset": 0
}
Response parameters:
Name: transactions
Type: array
Description: List of individual transactions (objects). See transaction details for more information.
Name: totalTransactions
Type: integer
Description: Number of all transactions
Name: limit
Type: integer
Description: Maximum number of records returned, default = 30
Name: offset
Type: integer
Description: Paging offset, default = 0
GET /transaction/{id}
Private method used to receive transaction details.
Request:
/api/transaction/Q96G3MSNW8MPQRTX
Response:
{
"id": "Q96G3MSNW8MPQRTX",
"status": "complete",
"depositAddress": "tb1q0pkwdj3pqdp587yrc8sus876kccn5tq577ce5x",
"depositAmount": "0.0062244",
“depositTxid": "80bb6cda5036ce277598d949d2e4b3771c56b31ba77b757bf9753a370f16c99",
"payouts": {
"mfuAKvSsAMrC7gjbEEb521uc1myeF9BSsc": "0.006"
},
"txid": "0ea6f3a702a368ed09830d959f1c82b7d8f65f53a783965514380e123fc8ca4e",
"fee": 0.0002244,
"delay": "0",
"updated": "2022-04-28T09:46:11+00:00",
"created": "2022-04-28T09:42:41+00:00"
}
Response parameters:
Name: id
Type: string
Description: Transaction ID
Name: status
Type: string
Description: Transaction status:
- pending - waiting for payment (deposit)
- confirming - payment received, waiting for one confirmation
- processing - sending payments to specified addresses
- complete - transaction completed
- expired - transaction expired
Name: depositAddress
Type: string
Description: Deposit BTC address
Name: depositAmount
Type: decimal
Description: BTC deposit amount received
Name: depositTxid
Type: string
Description: TXID of the received deposit
Name: payouts
Type: array
Description: List of BTC addresses and payouts
Name: txid
Type: string
Description: Withdrawal transaction TXID
Name: fee
Type: decimal
Description: Total amount of fees
Name: delay
Type: integer
Description: Delay of the transaction in hours
Name: refCode
Type: string
Description: Affiliate program reference code
Name: updated
Type: datetime
Description: Transaction status update time in ISO 8601 format
Name: created
Type: datetime
Description: Transaction creation time in ISO 8601 format
Name: signature
Type: string
Description: Signature (explained below)
Signature
Every transaction includes a "signature" parameter that verifies the data is intact and has not been modified in any way.
Alongside the authorization token {api_key}, you will receive a private key {secret_key} from customer support. This secret key can be used to confirm the "authenticity" of the data you receive.
Signature calculation:
$secret_key = {secret_key};
$transaction_details =
{
"id": "Q96G3MSNW8MPQRTX",
"status": "complete",
"depositAddress": "tb1q0pkwdj3pqdp587yrc8sus876kccn5tq577ce5x",
"depositAmount": "0.0062244",
“depositTxid": "80bb6cda5036ce277598d949d2e4b3771c56b31ba77b757bf9753a370f16c99",
"payouts": {
"mfuAKvSsAMrC7gjbEEb521uc1myeF9BSsc": "0.006"
},
"txid": "0ea6f3a702a368ed09830d959f1c82b7d8f65f53a783965514380e123fc8ca4e",
"fee": 0.0002244,
"delay": "0",
"updated": "2022-04-28T09:46:11+00:00",
"created": "2022-04-28T09:42:41+00:00"
};
$signature = base64_encode(hash_hmac('sha256', implode('|', array_map(function($a) { return is_array($a) ? implode(',', array_keys($a)).','.implode(',', $a) : $a; }, array_values($transaction_details))), $secret_key, TRUE));
Note: the parameter order must match exactly the order in the response. The "signature" parameter itself is excluded from the calculation.
Error codes
When no error is present, every request returns an HTTP 200 OK response.
ERROR response:
{
"code": 400,
"description": "Invalid JSON data."
}
Response parameters:
Name: code
Type: integer
Description: Error code that matches the HTTP codes
- 400 - bad request (validation error)
- 401 - missing / invalid API key
- 403 - blocked account / API
- 404 - service (endpoint) does not exist
- 503 - service is temporarily unavailable
Name: description
Type: string
Description: Error description