Introduction
Welcome to ARBITRAGE-CCXT-API developer API documentation.
Authentication
Every request must include the headers with x-secret-access-key with SECRET_ACCESS_KEY to access the endpoints.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-secret-access-key | String | Yes | Secret key to access the endpoints. |
Arbitrage Endpoints
GET Arbitrage Status
This endpoint is to track each arbitrage transaction status.
Response Example: 200
{
"items": [
{
"id": "c2da8af8-642c-426f-be73-fc521ad6c2b3",
"status": "TRANSFER_TO_SELL_PENDING",
"symbol": "BTC/USDT",
"orderType": "MARKET",
"fromOrderId": "6835443",
"fromPrice": 22766.92036437,
"fromAmount": 0.197108,
"fromCost": 4487.54213918,
"toOrderId": null,
"toPrice": null,
"toAmount": 0.194608,
"toCost": null,
"toDepositTag": null,
"ExchangeFromApiKey": {
"exchange": "BINANCE"
},
"ExchangeToApiKey": {
"exchange": "OKX"
},
"createdAt": "2022-07-24T15:01:05.848Z",
"updatedAt": "2022-07-24T15:01:11.871Z"
},
{
"id": "81c5ede0-9fa9-4f3a-95d8-eea515d4d85a",
"status": "FROM_BUY_ORDER_OPEN",
"symbol": "BTC/USDT",
"orderType": "LIMIT",
"fromOrderId": "6835516",
"fromPrice": 22700,
"fromAmount": null,
"fromCost": 0,
"toOrderId": null,
"toPrice": 22700,
"toAmount": null,
"toCost": null,
"toDepositTag": null,
"ExchangeFromApiKey": {
"exchange": "BINANCE"
},
"ExchangeToApiKey": {
"exchange": "OKX"
},
"createdAt": "2022-07-24T15:01:24.607Z",
"updatedAt": "2022-07-24T15:01:24.607Z"
}
],
"nextToken": null
}
Status Type
| Type | Description |
|---|---|
FROM_BUY_ORDER_OPEN |
Buy order is placed and waiting for the trade to be filled. |
FROM_SELL_ORDER_OPEN |
Sell order is placed and waiting for the trade to be filled. |
FROM_BUY_ORDER_CLOSED |
Buy order is completed and ready to transfer to sell. |
FROM_SELL_ORDER_CLOSED |
Buy order is completed and ready to transfer to buy. |
TRANSFER_TO_SELL_PENDING |
Transferring purchased amount to exchange to SELL. |
TRANSFER_TO_BUY_PENDING |
Transferring sold amount to exchange to BUY. |
TO_BUY_ORDER_OPEN |
Buy back order is placed and waiting for the trade to be filled. |
TO_SELL_ORDER_OPEN |
Sell back order is placed and waiting for the trade to be filled. |
TO_BUY_ORDER_CLOSED |
Buy back is completed and ready to transfer back to from exchange. |
TO_SELL_ORDER_CLOSED |
Sell back is completed and ready to transfer back to from exchange. |
HTTP Request
GET /v1/arbitrage/status
Request Query
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | String | No | Filter by the status type. |
| limit | Integer | No | Limit total number items per request. |
| nextToken | String | No | Handle pagination. |
HTTP Response
By default, the status type COMPLETED and CANCELLED will not be included.
Content-Type
application/json
POST Arbitrage Trigger
This endpoint creates multiple arbitrage transactions in parallel.
Request Example:
curl -X POST https://BASE_URL/v1/arbitrage/trigger \
-H 'content-type: text/plain; charset=utf-8' \
-d 'Buy BTC/USDT BINANCE OKX Market 100 22848.75 passphrase'
Buy BTC/USDT BINANCE OKX Market 100 22848.75 passphrase
Response Example: 200
[
{
"status": "fulfilled",
"value": {
"id": "3d9029ad-7f45-49e4-abc3-ff85b224c9ef",
"status": "TRANSFER_TO_SELL_PENDING",
"symbol": "BTC/USDT",
"fromPrice": 22838.65686955,
"fromAmount": 0.442102,
"fromCost": 10097.01587934,
"toPrice": null,
"toAmount": 0.439602,
"toCost": null,
"ExchangeFromApiKey": {
"id": "b8973140-31de-5b1c-8218-3cbdced1c452"
},
"ExchangeToApiKey": {
"id": "068c1dc4-f387-5de1-a206-90aba8fa4ae0"
},
"createdAt": "2022-07-24T15:54:28.500Z",
"updatedAt": "2022-07-24T15:54:33.285Z"
}
}
]
HTTP Request
POST /v1/arbitrage/trigger
Request Body
SIDE SYMBOL FROM_EXCHANGE TO_EXCHANGE ORDER_TYPE ORDER_PERCENTAGE PRICE PASSPHRASE
Content-Type
text/plain
| Parameter | Type | Description |
|---|---|---|
| SIDE | String | [BUY, SELL] |
| SYMBOL | String | Trade symbol pair. (BASE/QUOTE) |
| FROM_EXCHANGE | String | From exchange. |
| TO_EXCHANGE | String | To exchange. |
| ORDER_TYPE | String | [MARKET, LIMIT, MARKET_LIMIT] MARKET_LIMIT is a LIMIT order at last ticker price. |
| ORDER_PERCENTAGE | Integer | Account balance percentage to buy. (Range: 1-100) |
| PRICE | Number | ORDER_TYPE buy and sell price. (Must be greater than 0) |
| PASSPHRASE | String | password to trigger the order. |
HTTP Response
Respond with a proper HTTP status code.
User Endpoints
LIST Users
This endpoint list registered users.
Response Example: 200
{
"items": [
{
"id": "b8973140-31de-5b1c-8218-3cbdced1c452",
"active": true,
"ExchangeApiKeys": {
"items": [
{
"exchange": "BINANCE",
"apiKey": "J5CY9NcR5jQeUIVOCG6VRgS4lwIEevWN9HcT4XaT6Rh92M733dKngldLvaPtSgsk"
},
{
"exchange": "OKX",
"apiKey": "b541500b-f449-4428-b855-ec79d1574cb8"
}
]
},
"createdAt": "2022-07-23T23:24:29.679Z",
"updatedAt": "2022-07-23T23:24:29.679Z"
},
{
"id": "6414e507-b82d-4c3e-93ed-d4287b74c31a",
"ExchangeApiKeys": {
"items": []
},
"createdAt": "2022-07-23T20:48:49.319Z",
"updatedAt": "2022-07-23T20:48:49.319Z"
}
],
"nextToken": null
}
HTTP Request
GET /v1/user/list
Request Query
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | Integer | No | Limit total number items per request. |
| nextToken | String | No | Handle pagination. |
HTTP Response
Content-Type
application/json
| Parameter | Type | Description |
|---|---|---|
| id | String | User id. |
| active | Boolean | Status of the user to be included in the arbitrage transaction or not. |
| ExchangeApiKeys | Object | Exchange API keys associated with the user. |
| createdAt | String | User created at. |
| updatedAt | String | User updated at. |
POST User
This endpoint creates a new user.
Response Example: 200
{
"id": "ea4471f4-6307-4975-8c82-bda2db39514f",
"active": true,
"createdAt": "2021-07-11T14:48:00.000Z"
}
HTTP Request
POST /v1/user
Request Body
Content-Type
application/json
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| active | Boolean | No | true |
Status of the user to be included in the arbitrage transaction or not. |
HTTP Response
Content-Type
application/json
PATCH User
This endpoint updates an existing user status.
Request Example
{
"active": true
}
Response Example: 200
{
"id": "a09c69ad-ae3e-4128-8538-f52ce904f953",
"active": true,
"updatedAt": "2022-07-25T00:53:43.313Z",
"createdAt": "2022-07-25T00:39:12.497Z"
}
HTTP Request
PATCH /v1/user/<ID>
Request URL
| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | String | Yes | User Id to update. |
Request Body
Content-Type
application/json
| Parameter | Type | Required | Description |
|---|---|---|---|
| active | Boolean | Yes | Status of the user to be included in the arbitrage transaction or not. |
HTTP Response
Content-Type
application/json
API Key Endpoints
LIST Exchange API Keys
This endpoint list available API key credentials.
Response Example: 200
{
"items": [
{
"id": "b8973140-31de-5b1c-8218-3cbdced1c452",
"userID": "648d6476-7799-4191-8aad-945d3f07d2d1",
"exchange": "BINANCE",
"apiKey": "J5CY9NcR5jQeUIVOCG6VRgS4lwIEevWN9HcT4XaT6Rh92M733dKngldLvaPtSgsk",
"createdAt": "2022-07-23T23:39:51.699Z",
"updatedAt": "2022-07-23T23:39:51.699Z"
},
{
"id": "068c1dc4-f387-5de1-a206-90aba8fa4ae0",
"userID": "648d6476-7799-4191-8aad-945d3f07d2d1",
"exchange": "OKX",
"apiKey": "b541500b-f449-4428-b855-ec79d1574cb8",
"createdAt": "2022-07-23T23:39:33.017Z",
"updatedAt": "2022-07-23T23:39:33.017Z"
}
],
"nextToken": null
}
HTTP Request
GET /v1/exchange/api/key/list
Request Query
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | Integer | No | Limit total number items per request. |
| nextToken | String | No | Handle pagination. |
HTTP Response
Content-Type
application/json
POST Exchange API Key
This endpoint adds an exchange API key credential.
Request Example:
{
"userId": "6414e507-b82d-4c3e-93ed-d4287b74c31a",
"exchange": "Binance",
"apiKey": "binanceApiKey",
"secretKey": "binanceApiKeySecret"
}
{
"userId": "6414e507-b82d-4c3e-93ed-d4287b74c31a",
"exchange": "OKX",
"apiKey": "okxApiKey",
"secretKey": "okxApiKeySecret",
"password": "okxApiPassword"
}
Response Example: 200
{
"id": "ea4471f4-6307-4975-8c82-bda2db39514f",
"createdAt": "2021-07-11T14:48:00.000Z"
}
422
{
"message": "Exchange API key already exist"
}
HTTP Request
POST /v1/exchange/api/key
Request Body
Content-Type
application/json
| Parameter | Type | Required | Description |
|---|---|---|---|
| userId | String | Yes | Attach the API key to existing user ID created by the user endpoint. |
| exchange | String | Yes | Exchange account API credential. (case insensitive) |
| apiKey | String | Yes | Exchange account API key. |
| secretKey | String | Yes | Exchange account API secret key. |
| password | String | No | Exchange account API password. (OKX) |
HTTP Response
Content-Type
application/json
DELETE Exchange API Key
This endpoint deletes an existing exchange API key credential.
HTTP Request
DELETE /v1/exchange/api/key/<ID>
Request URL
| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | String | Yes | Api Key ID to delete. |
Errors
ARBITRAGE-CCXT-API API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your authentication is invalid or expired. |
| 404 | Not Found -- Your request route could not be found. |
| 422 | Unprocessable -- The request content and syntax are correct but cannot process the payload. |
| 429 | Too Many Requests -- Too many request. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |