Reference documentation

Table of Contents

Wallet

This section describes all actions related to wallets.

This allows users to link his existing wallets with your application. The difference with Manage wallets:

  • A user can only link wallets, it is not possible to create or import a wallet

  • A list of all wallets is returned for any chain (it is possible to filter this).

An example use case could be a portfolio app where a user wants to quickly link all his wallets to get an overview of his complete portfolio.

To link wallets, use the connect building block with:

Data

No data needed

This allows applications to unlink a wallet from their app.

Example: a user of a portfolio app does not want a specific Arkane wallet anymore inside the app

DELETE /api/wallets/d91b644a-076f-44bf-ae90-29251df19784/link HTTP/1.1
Host: api.arkane.network
HTTP/1.1 200 OK

Manage wallets Arkane Connect

As an application, it is possible to have a user manage his wallets for a specific chain. During this action, the user can link existing wallets or import a wallet. When the user returns to the app, a wallet will be linked to your application for the given chain. When a user does not have any wallets yet, a user can indicate to create a new wallet.

To manage wallets, use the connect building block with:

Table 1. Data parameters

Name

Description

Example

chain

The chain for which you want to manage wallets.

ethereum

Data example
{
  "chain": "ethereum"
}

List wallets Arkane API

Returns all the wallets for the specified user (bearer token)

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets' -i -X GET

Example Http Response

HTTP/1.1 200 OK
Content-Length: 1219
Content-Type: application/json;charset=UTF-8
[ {
  "id" : "1",
  "address" : "0xdc72b72db54e227e65a45004ab2798d31e8934c2",
  "walletType" : "THREEWAY_SHARED",
  "secretType" : "ETHEREUM",
  "createdAt" : [ 2019, 10, 27, 11, 27, 58, 601306000 ],
  "archived" : false,
  "alias" : "aliasEth",
  "description" : "descriptionEth",
  "primary" : false,
  "hasCustomPin" : false,
  "balance" : {
    "available" : false,
    "secretType" : "ETHEREUM",
    "balance" : 1.0,
    "gasBalance" : 1.0,
    "symbol" : "ETH",
    "gasSymbol" : "ETH",
    "rawBalance" : "1000000000000000000",
    "rawGasBalance" : "1000000000000000000",
    "decimals" : 18
  }
}, {
  "id" : "3",
  "address" : "0xae52b72db54e137a65a42434ab2543d31f8454c3",
  "walletType" : "THREEWAY_SHARED",
  "secretType" : "VECHAIN",
  "createdAt" : [ 2019, 10, 27, 11, 27, 58, 601359000 ],
  "archived" : false,
  "alias" : "aliasVechain",
  "description" : "descriptionVechain",
  "primary" : false,
  "hasCustomPin" : false,
  "balance" : {
    "available" : false,
    "secretType" : "VECHAIN",
    "balance" : 1.0,
    "gasBalance" : 1.0,
    "symbol" : "VET",
    "gasSymbol" : "VTHO",
    "rawBalance" : "1000000000000000000",
    "rawGasBalance" : "1000000000000000000",
    "decimals" : 18
  }
} ]

Response Fields

Path

Type

Description

.[]

Array

An array of wallets of the user

It’s also possible to filter based on secret type

Request Parameters

Parameter

Description

secretType

Type of the secret (ETHEREUM, VECHAIN)

Get wallet Arkane API

Returns the details for a specific wallet (native balance is also included)

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/1' -i -X GET

Path Parameters

Table 2. /api/wallets/{id}

Parameter

Description

id

the id of the wallet

Example Http Response

HTTP/1.1 200 OK
Content-Length: 601
Content-Type: application/json;charset=UTF-8
{
  "id" : "1",
  "address" : "0xdc72b72db54e227e65a45004ab2798d31e8934c2",
  "walletType" : "THREEWAY_SHARED",
  "secretType" : "ETHEREUM",
  "createdAt" : [ 2019, 10, 27, 11, 27, 59, 400652000 ],
  "archived" : false,
  "alias" : "aliasEth",
  "description" : "descriptionEth",
  "primary" : false,
  "hasCustomPin" : false,
  "balance" : {
    "available" : false,
    "secretType" : "ETHEREUM",
    "balance" : 1.0,
    "gasBalance" : 1.0,
    "symbol" : null,
    "gasSymbol" : null,
    "rawBalance" : "1000000000000000000",
    "rawGasBalance" : "1000000000000000000",
    "decimals" : 18
  }
}

Response Fields

Path

Type

Description

id

String

id of the wallet

hasCustomPin

Boolean

Whether the wallet has a custom pincode or not

address

String

address of the wallet

walletType

String

type of the wallet

secretType

String

type of the secret (ex: ETHEREUM)

createdAt

Array

date and time the secret was created or imported

archived

Boolean

is the wallet archived or not

primary

Boolean

is the wallet the primary wallet for the secrettype?

alias

String

alias of the wallet

description

String

description of the wallet

balance

Object

The native token balance of the wallet

Native balance Arkane API

Returns the "native" balance for a wallet. This is the balance of the native token used by the chain. Ex. ETH for Ethereum.

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/1/balance' -i -X GET

Path Parameters

Table 3. /api/wallets/{id}/balance

Parameter

Description

id

id of the wallet

Example Http Response

HTTP/1.1 200 OK
Content-Length: 240
Content-Type: application/json;charset=UTF-8
{
  "available" : false,
  "secretType" : "ETHEREUM",
  "balance" : 1.0,
  "gasBalance" : 1.0,
  "symbol" : "ETH",
  "gasSymbol" : "ETH",
  "rawBalance" : "1000000000000000000",
  "rawGasBalance" : "1000000000000000000",
  "decimals" : 18
}

Response Fields

Path

Type

Description

balance

Number

Normalized balance of the native coin

secretType

String

Type of the secret

symbol

String

The symbol of the native coin

gasSymbol

String

The symbol of the gas coin

gasBalance

Number

Normalized balance of the gas coin (same as balance when the coin for paying gas/fees is the same native coin)

rawBalance

String

Raw balance of the native coin

rawGasBalance

String

Raw balance of the gas coin (same as balance when the coin for paying gas/fees is the same native coin)

decimals

Number

Decimals of the native coin

available

Boolean

Whether the balance service is currently available or not

Token balances Arkane API

Returns the balance of all tokens currently supported by Arkane. The list of supported tokens can be found on Github.

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/1/balance/tokens' -i -X GET

Example Http Response

HTTP/1.1 200 OK
Content-Length: 1163
Content-Type: application/json;charset=UTF-8
[ {
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "rawBalance" : "10000000283000000000000",
  "balance" : 10000.000283,
  "decimals" : 18,
  "symbol" : "FND",
  "logo" : "https://raw.githubusercontent.com/ArkaneNetwork/content-management/master/tokens/ethereum/mainnet/logos/0x4df47b4969b2911c966506e3592c41389493953b.png",
  "type" : "ERC20",
  "transferable" : true
}, {
  "tokenAddress" : "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359",
  "rawBalance" : "10000000283000000000000",
  "balance" : 10000.000283,
  "decimals" : 18,
  "symbol" : "DAI",
  "logo" : "https://raw.githubusercontent.com/ArkaneNetwork/content-management/master/tokens/ethereum/mainnet/logos/0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359.png",
  "type" : "ERC20",
  "transferable" : true
}, {
  "tokenAddress" : "0xE41d2489571d322189246DaFA5ebDe1F4699F498",
  "rawBalance" : "655000000000000000000",
  "balance" : 655.0,
  "decimals" : 18,
  "symbol" : "ZRX",
  "logo" : "https://raw.githubusercontent.com/ArkaneNetwork/content-management/master/tokens/ethereum/mainnet/logos/0xe41d2489571d322189246dafa5ebde1f4699f498.png",
  "type" : "ERC20",
  "transferable" : true
} ]

Response Fields

Path

Type

Description

[].tokenAddress

String

Address of the token

[].rawBalance

String

Raw token balance of the wallet

[].balance

Number

Normalized token balance of the wallet

[].type

String

The type of token, which depends on the specific blockchain

[].transferable

Boolean

Indicates whether or not the token can be transferred

[].symbol

String

The symbol of the token

[].logo

String

Logo of the token (url)

[].decimals

Number

Decimals of the token

Specific token balance Arkane API

Returns the token balance for a specified token (this can be any token).

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/1/balance/tokens/0x4df47b4969b2911c966506e3592c41389493953b' -i -X GET

Path Parameters

Table 4. /api/wallets/{id}/balance/tokens/{token}

Parameter

Description

id

id of the wallet

token

Token to get the balance for

Example Http Response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 388
{
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "rawBalance" : "10000000283000000000000",
  "balance" : 10000.000283,
  "decimals" : 18,
  "symbol" : "FND",
  "logo" : "https://raw.githubusercontent.com/ArkaneNetwork/content-management/master/tokens/ethereum/mainnet/logos/0x4df47b4969b2911c966506e3592c41389493953b.png",
  "type" : "ERC20",
  "transferable" : true
}

Response Fields

Path

Type

Description

tokenAddress

String

Address of the token

rawBalance

String

Raw token balance of the wallet

balance

Number

Normalized token balance of the wallet

type

String

The type of token, which depends on the specific blockchain

transferable

Boolean

Indicates whether or not the token can be transferred

symbol

String

The symbol of the token

logo

String

Logo of the token (url)

decimals

Number

Decimals of the token

List Non Fungible Tokens (NFT’s) Arkane API

Currently this functionallity is only supported for Ethereum wallets (ERC-721), other chains will follow

Returns the list of NFT’s owned by a wallet

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/89dbcffc-1e83-4d04-be8c-8cb705053570/nonfungibles?contract-addresses=0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab&contract-addresses=0xfac7bea255a6990f749363002136af6556b31e04' -i -X GET

Path Parameters

Table 5. /api/wallets/{walletId}/nonfungibles

Parameter

Description

walletId

The ID of the wallet to list the non fungible tokens for

Request Parameters

Parameter

Description

contract-addresses

(Optional) When set, the result will only contain tokens of these NFT contract addresses. Multiple values can be set.

Example Http Response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 2093
[ {
  "id" : "7664",
  "tokenId" : "7664",
  "owner" : "0xdc72b72db54e227e65a45004ab2798d31e8934c2",
  "name" : "Pixielock",
  "description" : "At the end of your turn, summon a 1/1 Nimble Pixie.",
  "url" : "https://godsunchained.com/card/359127",
  "backgroundColor" : "f3f3f3",
  "imageUrl" : "https://images.godsunchained.com/cards/250/143.png",
  "imagePreviewUrl" : null,
  "imageThumbnailUrl" : null,
  "contract" : {
    "name" : "Gods Unchained",
    "description" : "Gods Unchained is a free-to-play, turn-based competitive tradingcard game. The goal of the game is to reduce your opponent's life to zero. Players use their collection to build decks of cards, and select a God to play with at the start of each match. Decks contain exactly 30 cards.",
    "address" : "0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab",
    "symbol" : "GODS",
    "url" : "https://godsunchained.com/",
    "imageUrl" : "https://storage.opensea.io/0x6ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab-featured-1556588688.png",
    "type" : "ERC_721"
  }
}, {
  "id" : "106965784547830847323236430761121909501263774393788267967702982783333772235688",
  "tokenId" : "106965784547830847323236430761121909501263774393788267967702982783333772235688",
  "owner" : "0xdc72b72db54e227e65a45004ab2798d31e8934c2",
  "name" : "phonenumber.eth",
  "description" : "This is the ENS name for phonenumber.eth",
  "url" : "https://manager.ens.domains/name/phonenumber.eth",
  "backgroundColor" : null,
  "imageUrl" : "https://storage.googleapis.com/opensea-static/ENS-4.png",
  "imagePreviewUrl" : null,
  "imageThumbnailUrl" : null,
  "contract" : {
    "name" : "ENS",
    "description" : "ENS offers a secure & decentralized way to address resources both on and off the blockchain using simple, human-readable names. OpenSea provides a secondary marketplace for ENS names.",
    "address" : "0xfac7bea255a6990f749363002136af6556b31e04",
    "symbol" : "ENS",
    "url" : "https://ens.domains/",
    "imageUrl" : "https://storage.opensea.io/0xfac7bea255a6990f749363002136af6556b31e04-1557985746.png",
    "type" : "ERC_721"
  }
} ]

Response Fields

Path

Type

Description

[].id

String

The token ID of this non fungible token

[].tokenId

String

The token ID of this non fungible token

[].owner

String

The wallet address owning the item

[].name

String

Name of this item

[].description

String

Description of the item

[].url

String

Link to the detail page of this item

[].backgroundColor

String

Background color to use when displaying this item

[].imageUrl

String

URL to an image of this item (original size)

[].imagePreviewUrl

Null

URL to an image of this item (size 512px)

[].imageThumbnailUrl

Null

URL to an image of this item (size 128px)

[].contract

Object

The contract that manages this item

[].contract.name

String

Name of the contract

[].contract.description

String

Description of the contract

[].contract.address

String

Address of the contract

[].contract.symbol

String

Symbol of the contract (e.g. GODS, CKITTY, STRK)

[].contract.url

String

Link to the website/application that issued this contract

[].contract.imageUrl

String

Link to an image (logo) of this contract

[].contract.type

String

The type of the contract (ex. ERC721)

Error codes

Error Code Meaning

wallet.archived

The wallet that is used appears to be archived

wallet.forbidden

Wallet to update was not found or does not belong to the correct user

wallet.balance.not.supported.yet

Getting the balance for chain is not supported yet

wallet.encrypt.internal-error

Problem while trying to encrypt user secret

wallet.decrypt.internal-error

A problem occurred while trying to access your wallet. Please contact support

wallet.secret.not-found

The specified secret was not found in our vault

wallet.secret.internal-error

An unknown error occurred when trying to fetch the secret. Please contact support.

Application Wallet

Application wallets are a special type of hybrid wallets that are owned by the user but transactions are initiated by an application. Only transactions coming from the original application are accepted. Consequently, a user cannot move digital assets out of the wallet without the application’s approval.
On the other hand, a transaction for this wallet always needs to be signed off with the user’s PIN. So the user keeps the right of actually executing a transaction at all times.

Limitations on the application wallets:

  • The user cannot initiate a transaction from outside the original application

  • The user cannot export the private key of the wallet

  • The user cannot connect other 3rd party applications to this application wallet

  • The application is able to remove the above-mentioned restrictions, transforming the application wallet into a normal Arkane wallet (this process cannot be reverted)

App wallets

Authentication

To use the application wallet functionality, two separate client ID’s will need to be created (see Arkane Identity).

  • One will be used to create the transaction (steps 2 and 4). It has a naming convention of <clientId>_app. This client will authenticate to Arkane using a combination of shared secret and a Bearer token. Because it uses a shared secret, it needs to be used in a server to server communication channel (the secret may never be exposed to the outside world). How to use this client will be described bellow.

  • The other is used to initiate the signing of a transaction by the user (steps 5, 6, 7, 8, 10). This is the same client used for all other Arkane actions and will authenticate to Arkane using a users Bearer token.

The <clientId>_app-client

As described above, to create a transaction you need to use a <clientId>_app-client. For this we use OpenId Connect’s Client Credentials Grant

<clientId>_app flow

Here we’ll describe how to obtain a bearer token from our authentication server using your <clientId>_app-client:

Example Curl Request
$ curl https://login.arkane.network/auth/realms/Arkane/protocol/openid-connect/token -i -X POST \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'grant_type=client_credentials&client_id=Arketype_app&client_secret=02053a9d-8293-43c4-a201-f8669f1329af'
Do not forget to set the Content-Type: application/x-www-form-urlencoded header (and to make the request body application/x-www-form-urlencoded), otherwise the request will fail
Table 6. Request Fields

Path

Type

Description

Constraints

grant_type

String

The OpenId Connect grant type you want to use

Mandatory, always client_credentials

client_id

String

The <clientId>_app you want to request a token for

Mandatory, e.g. Arketype_app

client_secret

String

The shared secret you’ve received when you requested your <clientId>_app-client

Mandatory

Table 7. Reponse Fields

Path

Type

Description

access_token

String

The JWT token to use as bearer token when doing the api calls

expires_in

number

The amount of seconds the access_token is valid

refresh_expires_in

number

The amount of seconds the refresh_token is valid

refresh_token

String

The JWT token which can be used to refresh the current token

token_type

String

bearer

Response Body
{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmQi1UenBOb0hBVGhwT2J4aW9qTDBrdm83MldmRzRXRXh1eFpiaXlGQUhzIn0.eyJqdGkiOiI0ODc4NDM4Ny0xMjE0LTQ0ZTAtYWIzNy0yZDAyZjNjNTYxZWYiLCJleHAiOjE1NTgxMDMxNjIsIm5iZiI6MCwiaWF0IjoxNTU4MTAxMzYyLCJpc3MiOiJodHRwczovL2xvZ2luLXN0YWdpbmcuYXJrYW5lLm5ldHdvcmsvYXV0aC9yZWFsbXMvQXJrYW5lIiwiYXVkIjoiQXJrZXR5cGVfYXBwIiwic3ViIjoiZDQ3NWQwYWEtNjRmOC00MTJhLTg5NmEtOTRmM2RlNjZlNzFkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiQXJrZXR5cGVfYXBwIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiNzA2MjczYzEtMzBkYi00MDdlLTk1ZmEtZDRlNzg3NDQ5NDY5IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIqIl0sInJlc291cmNlX2FjY2VzcyI6e30sInNjb3BlIjoic2F2ZTp0cmFuc2FjdGlvbiIsImNsaWVudElkIjoiQXJrZXR5cGVfYXBwIiwiY2xpZW50SG9zdCI6Ijg0LjE5OC4xMzIuMTM0IiwiY2xpZW50QWRkcmVzcyI6Ijg0LjE5OC4xMzIuMTM0In0.iBsj3jlmg0Ns3J4qB9Ii3a3d0Bn4472fhPNrfsYm5gPFnt2l7TOvE4JdUolv0UJe9IMrTyQYv-_EPDU7_lv8edQmyEm2YxUwUzDT747sQmkByPrxguECMrG5eOw69Iw2mtfOHVipGhivXGDr3J-Bngwj1dilYLEz8ncuAG8XrGIlqjZ3C0h_XVKUsfQcg2_EIbqcNPTwoovma1qbpS5kwWmBI4xdNHUVyV_m9HFabc2M8RQvvz5xTX4xhICJzvKRQCKOPFd3XqBNW3kG0iCJkHfOX5GNPn9Efcqfo1xFAEEjTKUOFbs8g4FQlm_YcGPumj3jk0dbN8ROlH8vuuvPxw",
    "expires_in": 1800,
    "refresh_expires_in": 432000,
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmQi1UenBOb0hBVGhwT2J4aW9qTDBrdm83MldmRzRXRXh1eFpiaXlGQUhzIn0.eyJqdGkiOiI2MTI1MjhkMy02ZGE4LTQwMGMtODAxMS1jNDQ0M2U1MzQ0YzMiLCJleHAiOjE1NTg1MzMzNjIsIm5iZiI6MCwiaWF0IjoxNTU4MTAxMzYyLCJpc3MiOiJodHRwczovL2xvZ2luLXN0YWdpbmcuYXJrYW5lLm5ldHdvcmsvYXV0aC9yZWFsbXMvQXJrYW5lIiwiYXVkIjoiQXJrZXR5cGVfYXBwIiwic3ViIjoiZDQ3NWQwYWEtNjRmOC00MTJhLTg5NmEtOTRmM2RlNjZlNzFkIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6IkFya2V0eXBlX2FwcCIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6IjcwNjI3M2MxLTMwZGItNDA3ZS05NWZhLWQ0ZTc4NzQ0OTQ2OSIsInJlc291cmNlX2FjY2VzcyI6e30sInNjb3BlIjoic2F2ZTp0cmFuc2FjdGlvbiJ9.FayuAxy2x1lOw4nQqvn2gZs6Vhqtt7pai6H6LNvFmAxqab3qdnMxQRRFVgrvqfgwaI5bsLrs6CdPU1w2DJmNjh3ubcw-arpM25FVWHufldcTpEA0Xvpo1zssXQrt46kMQ0SMDiRY5e3dhpcd1Uoib9NzZTM5sbwHihqxGyH9HlcO7kGGhdoFW7jXQgGSoBhKsQN1BGvam9p9v-vZSBBQD6YPNttf7cZG77PjK8BAuZczhl7cX8Csmyht6clRTeFKF06NNUwaEcvz7ZXBf2QNJVfAyG26OwUu9ER5bADofGn2P7PnAxDsq_kRXMzOULISLLPi2hdNHOzh2XNvM6znOQ",
    "token_type": "bearer",
}

Create application wallet Arkane Connect

To create an application wallet, Arkane Connect must be used to confirm the creation of the wallet. The user will then be requested to enter their PIN as confirmation.

Table 8. Data parameters
Path Type Description Constraints

confirmationRequestType

String

The type of confirmation you are requesting

Mandatory, must be CREATE_APPLICATION_WALLET to create an application wallet

secretType

String

Type of secret to be generated. (Ex. ETHEREUM)

Mandatory, allowed values: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN]

alias

String

Alias of the wallet. Needs to be unique across your account

Optional, max 50 chars, allowed charachters: A-Z, a-z, 0-9, - and _

description

String

General description of your wallet

Optional, max 200 chars

Create a transaction Arkane API

Creating a transaction is done by sending the transaction to Arkane API using the bearer token of your <clientId>_app-client.
In this example we are doing a generic transfer, but you can submit any type of transaction described under Transactions as long as the provided wallet ID is of an application wallet (this is the reason we haven’t documented the other request parameters).

Request Body

Data example
{
  "type" : "TRANSFER",
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "ETHEREUM",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "data" : "0x",
  "value" : 1.15
}

Response Body

Result example
{
  "transactionRequestId" : "7ca3e444-8296-4c88-a671-b7ec0c0cee73"
}

Execute a requested transaction Arkane Connect

Before the transaction will be pushed to the blockchain, it first needs to be approved by the user. This can be done using Arkane Connect.

Table 9. Path Parameters

Parameter

Description

transactionId

The transactionId of the requested transaction

Delete a requested transaction Arkane API

You can delete a requested transaction by calling the transaction endpoint of the Arkane API with method DELETE. This can be done by both the user as the application.

Table 10. Path Parameters

Parameter

Description

transactionId

The transactionId of the requested transaction

Example Curl Request

$ curl 'https://api.arkane.network/api/transactions/0952235a-98aa-48b4-a0cc-8da6dcec4332' -i -X DELETE

Migrate wallet to a user wallet Arkane API

From the moment the requirements of an application wallet are not applicable anymore, the type of the application wallet can be migrated to user wallet. As a result, the wallet will behave the same way as other wallets the user has created manually in Arkane. The user will be able to perform any transaction using this wallet.

In the case for a user wallet, the type of the wallet needs to be updated to: THREEWAY_SHARED

Example Http Request

PATCH /api/wallets/466e0920-cbaa-4be3-a800-1f00dbd0c989/walletType HTTP/1.1
Host: api.arkane.network
Content-Length: 38
Content-Type: application/json;charset=UTF-8
{
  "walletType" : "THREEWAY_SHARED"
}

Path Parameters

Table 11. /api/wallets/{id}/walletType

Parameter

Description

id

Id of the wallet to update

Example Http Response

HTTP/1.1 200 OK

Whitelabel Wallet

Arkane also offers whitelabel wallets. Go to documentation

Transactions

Transfer Arkane Connect

This can be used to transfer native tokens from a wallet to another wallet. To start a transfer you need to:

Request Fields

Table 12. Data parameters

Path

Type

Description

Constraints

walletId

String

The id of the wallet one wants to sign with.

Mandatory

to

String

The destination address of the transaction.

Mandatory, a valid address for the specified chain or the email address of the person you want to send tokens to

type

String

Type of transaction request

Mandatory, possible values: [TRANSFER, GAS_TRANSFER, TOKEN_TRANSFER, NFT_TRANSFER, CONTRACT_EXECUTION]

value

Number

[1] The value transferred for the transaction in the token value

Mandatory, must be >= 0

secretType

String

Which chain you want to do a transaction for

Mandatory. Must be one of: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO]

network

Object

[2] The network to submit the transaction to

Optional. Currently supported chains: [ETHEREUM]

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

data

String

The data you want to send with this transaction. This field will be ignored when building a token transaction request

Optional

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] As value, we expect the "decimal value". If a token has 18 decimals and you want to transfer 1 token, provide the value 1. Arkane will translate this to the correct non decimal value (1 * 10e18). Using this, you don’t have to take into account the number of decimals for different tokens.

[2] (Only for Ethereum) The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body

Data example
{
  "type" : "TRANSFER",
  "walletId" : "cdc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "VECHAIN",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "data" : "0x",
  "value" : 1.15
}
Table 13. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"e
}

Token Transfer Arkane Connect

This can be used to transfer tokens (ex. ERC20/VIP180/NEP5/GO20/…​) from a wallet to another wallet. To start a transfer you need to:

Request Fields

Table 14. Data parameters

Path

Type

Description

Constraints

walletId

String

The id of the wallet one wants to sign with.

Mandatory

to

String

The destination address of the transaction.

Mandatory, a valid address for the specified chain or the email address of the person you want to send tokens to

type

String

Type of transaction request

Mandatory, possible values: [TRANSFER, GAS_TRANSFER, TOKEN_TRANSFER, NFT_TRANSFER, CONTRACT_EXECUTION]

value

Number

[1] The value transferred for the transaction in the token value

Mandatory, must be >= 0

secretType

String

Which chain you want to do a transaction for

Mandatory. Must be one of: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO]

tokenId

Null

The id of the non fungible token or ERC20 token inside ERC1155

Mandatory

tokenAddress

String

The address of the token to be used in this transaction

Optional

network

Object

[2] The network to submit the transaction to

Optional. Currently supported chains: [ETHEREUM]

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] As value, we expect the "decimal value". If a token has 18 decimals and you want to transfer 1 token, provide the value 1. Arkane will translate this to the correct non decimal value (1 * 10e18). Using this, you don’t have to take into account the number of decimals for different tokens.

[2] (Only for Ethereum) The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body

Data example
{
  "type" : "TOKEN_TRANSFER",
  "walletId" : "edc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "VECHAIN",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "value" : 1.15,
  "tokenId" : null
}
Table 15. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"e
}

Gas Transfer Arkane Connect

This can be used to transfer gas (ex. NEO gas/VTHO/…​) from a wallet to another wallet. To start a transfer you need to:

Request Fields

Table 16. Data parameters

Path

Type

Description

Constraints

walletId

String

The id of the wallet one wants to sign with.

Mandatory

to

String

The destination address of the transaction.

Mandatory, a valid address for the specified chain or the email address of the person you want to send tokens to

type

String

Type of transaction request

Mandatory, possible values: [TRANSFER, GAS_TRANSFER, TOKEN_TRANSFER, NFT_TRANSFER, CONTRACT_EXECUTION]

value

Number

[1] The value transferred for the transaction in the token value

Mandatory, must be >= 0

secretType

String

Which chain you want to do a transaction for

Mandatory. Must be one of: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO]

network

Object

[2] The network to submit the transaction to

Optional. Currently supported chains: [ETHEREUM]

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] As value, we expect the "decimal value". If a token has 18 decimals and you want to transfer 1 token, provide the value 1. Arkane will translate this to the correct non decimal value (1 * 10e18). Using this, you don’t have to take into account the number of decimals for different tokens.

[2] (Only for Ethereum) The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body

Data example
{
  "type" : "GAS_TRANSFER",
  "walletId" : "ddc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "VECHAIN",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "value" : 1.15
}
Table 17. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"e
}

NFT Transfer Arkane Connect

This can be used to transfer NFT’s (ex. ERC721/…​) from a wallet to another wallet. To start a transfer you need to:

Request Fields

Table 18. Data parameters

Path

Type

Description

Constraints

walletId

String

The id of the wallet one wants to sign with.

Mandatory

to

String

The destination address of the transaction.

Mandatory, a valid address for the specified chain or the email address of the person you want to send tokens to

type

String

Type of transaction request

Mandatory, possible values: [TRANSFER, GAS_TRANSFER, TOKEN_TRANSFER, NFT_TRANSFER, CONTRACT_EXECUTION]

secretType

String

Which chain you want to do a transaction for

Mandatory. Must be one of: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO]

tokenAddress

String

The address of the token to be used in this transaction

Optional

network

Object

[1] The network to submit the transaction to

Optional. Currently supported chains: [ETHEREUM]

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

from

String

The wallet containing the non fungible token. By default this will be the current wallet

Mandatory

tokenId

Number

The id of the non fungible token or ERC20 token inside ERC1155

Mandatory

tokenAddress

String

The address of the token to be used in this transaction

Mandatory

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] (Only for Ethereum) The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body

Data example
{
  "type" : "NFT_TRANSFER",
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "VECHAIN",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "from" : "0x89e01cEC55D718fA1Bf6B00fF21e6707cd9A3067",
  "tokenId" : 1
}
Table 19. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"e
}

Contract execution Arkane Connect

Generic endpoint to execute a function on a smart contract (write) on any (supported) blockchain. As a result, a new transaction will be submitted to the network containing the smart contract execution.

Request Fields

Table 20. Data parameters

Path

Type

Description

Constraints

walletId

String

The id of the wallet one wants to sign with.

Mandatory

to

String

The destination address of the transaction.

Mandatory, a valid address for the specified chain or the email address of the person you want to send tokens to

value

Number

The amount that will be sent with the contract execution. Value will be passed as-is. This means that for example in Etheruem the value is in WEI

Optional, default = 0, must be >= 0

secretType

String

Which chain you want to do a transaction for

Mandatory. Must be one of: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO]

type

String

Type of transaction request

Mandatory, possible values: [TRANSFER, GAS_TRANSFER, TOKEN_TRANSFER, NFT_TRANSFER, CONTRACT_EXECUTION]

network

Object

The network to submit the transaction to

Optional

functionName

String

Name of the function on the contract that needs to be executed

Mandatory

inputs[]

Array

Array of inputs needed to execute the function

Mandatory

inputs[].type

String

The type of the input parameter (ex. uint256)

Mandatory

inputs[].value

String

The value of the input parameter. This needs to be passed as a string value, will be parsed by Arkane

Mandatory

chainSpecificFields

Object

Field that contains chain specific values. For possible values, please see chain specific fields documentation.

Mandatory

network

Object

[1] The network to submit the transaction to

Optional. Currently supported chains: [ETHEREUM]

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] (Only for Ethereum) The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Data example

This example will execute an ERC20 transfer using the direct execution of the smart contract function "transfer". The inputs for this function are: destination (address) and amount (uint265)

Request Body

{
  "type" : "CONTRACT_EXECUTION",
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "alias" : null,
  "secretType" : "ETHEREUM",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "functionName" : "transfer",
  "value" : 0,
  "inputs" : [ {
    "type" : "address",
    "value" : "0x80cbb6c4342948e5be81987dce8251dbedd69138"
  }, {
    "type" : "uint256",
    "value" : "73680000"
  } ],
  "chainSpecificFields" : {
    "gasLimit" : "300000"
  }
}
Table 21. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Supported chains

Ethereum

Supported types:

address, bool, bytes, bytes1, bytes2, bytes3, bytes4, bytes5, bytes6, bytes7, bytes8, bytes9, bytes10, bytes11, bytes12, bytes13, bytes14, bytes15, bytes16, bytes17, bytes18, bytes19, bytes20, bytes21, bytes22, bytes23, bytes24, bytes25, bytes26, bytes27, bytes28, bytes29, bytes30, bytes31, bytes32, int8, int16, int24, int32, int40, int48, int56, int64, int72, int80, int88, int96, int104, int112, int120, int128, int136, int144, int152, int160, int168, int176, int184, int192, int200, int208, int216, int224, int232, int240, int248, int256, string, uint8, uint16, uint24, uint32, uint40, uint48, uint56, uint64, uint72, uint80, uint88, uint96, uint104, uint112, uint120, uint128, uint136, uint144, uint152, uint160, uint168, uint176, uint184, uint192, uint200, uint208, uint216, uint224, uint232, uint240, uint248, uint256

For arrays, please provide the type from above followed by square braces ( ex: uint256[] ). The values for an array must be surrounded with square brackets and delimited with "," (ex. [1,2,3]).

Byte values must be hex encoded.

Supported chain specific fields:

Field name Field value Type Example

gasLimit

When specified, this gas limit will be used for the contract call

Integer

300000

gasPrice

When specified, this gas price will be used for the contract call (in WEI)

Integer

5000000000

Vechain

Supported types:

address, bool, bytes, bytes1, bytes2, bytes3, bytes4, bytes5, bytes6, bytes7, bytes8, bytes9, bytes10, bytes11, bytes12, bytes13, bytes14, bytes15, bytes16, bytes17, bytes18, bytes19, bytes20, bytes21, bytes22, bytes23, bytes24, bytes25, bytes26, bytes27, bytes28, bytes29, bytes30, bytes31, bytes32, int8, int16, int24, int32, int40, int48, int56, int64, int72, int80, int88, int96, int104, int112, int120, int128, int136, int144, int152, int160, int168, int176, int184, int192, int200, int208, int216, int224, int232, int240, int248, int256, string, uint8, uint16, uint24, uint32, uint40, uint48, uint56, uint64, uint72, uint80, uint88, uint96, uint104, uint112, uint120, uint128, uint136, uint144, uint152, uint160, uint168, uint176, uint184, uint192, uint200, uint208, uint216, uint224, uint232, uint240, uint248, uint256

For arrays, please provide the type from above followed by square braces ( ex: uint256[] ). The values for an array must be surrounded with square brackets and delimited with "," (ex. [1,2,3]).

Byte values must be hex encoded.

Supported chain specific fields:

Field name Field value Type Example

gasLimit

When specified, this gas limit will be used for the contract call

Integer

300000

gasPriceCoef

When specified, this gas price coefficient will be used for the contract call

Integer

0

Tron

All solidity types are supported:

address, bool, bytes, bytes1, bytes2, bytes3, bytes4, bytes5, bytes6, bytes7, bytes8, bytes9, bytes10, bytes11, bytes12, bytes13, bytes14, bytes15, bytes16, bytes17, bytes18, bytes19, bytes20, bytes21, bytes22, bytes23, bytes24, bytes25, bytes26, bytes27, bytes28, bytes29, bytes30, bytes31, bytes32, int8, int16, int24, int32, int40, int48, int56, int64, int72, int80, int88, int96, int104, int112, int120, int128, int136, int144, int152, int160, int168, int176, int184, int192, int200, int208, int216, int224, int232, int240, int248, int256, string, uint8, uint16, uint24, uint32, uint40, uint48, uint56, uint64, uint72, uint80, uint88, uint96, uint104, uint112, uint120, uint128, uint136, uint144, uint152, uint160, uint168, uint176, uint184, uint192, uint200, uint208, uint216, uint224, uint232, uint240, uint248, uint256

For arrays, please provide the type from above followed by square braces ( ex: uint256[] ). The values for an array must be surrounded with square brackets and delimited with "," (ex. [1,2,3]).

Byte values must be hex encoded.

Neo

Supported types:

Signature, Boolean, Integer, Hash160, Hash256, ByteArray, Address, PublicKey, String

For arrays, please provide the type from above followed by square braces ( ex: String[] ). The values for an array must be surrounded with square brackets and delimited with "," (ex. [1,2,3]).

Byte values must be hex encoded.

Supported chain specific fields:

Field name Field value Type Example

networkFee

When specified, this network fee will be used for the contract call. By default, 0.1 is used

Number

0.1

systemFee

When specified, this system fee will be used for the contract call

Number

0.1

systemFee

When specified, this system fee will be used for the contract call

Number

0.1

outputs

It is possible to add additional asset transfers together with a contract call by attaching additional outputs. This is a JSON object containing "to", "amount" and "assetId" with json types respectively string, number and string. If "to" is a script hash, it will be translated to a valid NEO address

JSON

{ "to": "AKJrLM5Q…​", "amount": 1, "assetId": "602c79718…​" }

Native Transactions

Ethereum

Execute ETH transaction Arkane Connect

To execute an Ethereum transaction, use the connect building block with:

Request Fields
Table 22. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for ether transaction: ETH_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

gasPrice

Number

The gas price of the transaction

Optional (default gas price is used otherwise), must be > 0

gas

Number

The amount of gas to use for the transaction (unused gas is refunded)

Optional (by default calculated), must be >= 0

value

Number

The value transferred for the transaction in Wei, also the endowment if it’s a contract-creation transaction

Mandatory, must be >= 0

data

String

Either a byte string containing the associated data of the message, or in the case of a contract-creation transaction, the initialisation code

Optional

nonce

Number

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

Optional (next nonce will be used by defaut), must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid ethereum address

network

Object

[1] The network to submit the transaction to

Optional

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body
Data example
{
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "gasPrice" : 300000000000000,
  "gas" : 23000,
  "nonce" : 0,
  "value" : 10000000000,
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "data" : "0x",
  "type" : "ETH_TRANSACTION"
}
Response Fields
Table 23. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Execute ERC20 transfer Arkane Connect

To execute an ERC20 transaction transfer, use the connect building block with:

Request Fields
Table 24. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory

walletId

String

The id of the wallet one wants to sign with.

Mandatory

gasPrice

Number

The gas price of the transaction

Optional (default gas price is used otherwise), must be > 0

gas

Number

The amount of gas to use for the transaction (unused gas is refunded)

Optional (by default calculated), must be >= 0

value

Number

The value transferred for the transaction in Wei, also the endowment if it’s a contract-creation transaction

Mandatory, must be >= 0

tokenAddress

String

The address of the ERC20 token to be used in this transaction

Mandatory, valid ethereum contract address

nonce

Number

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

Optional (next nonce will be used by defaut), must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid ethereum address

network

Object

[1] The network to submit the transaction to

Optional

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body
Data example
{
  "walletId" : "bdc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "gasPrice" : 300000000000000,
  "gas" : 200000,
  "nonce" : 0,
  "value" : 10000000000,
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "type" : "ETHEREUM_ERC20_TRANSACTION"
}
Response Fields
Table 25. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Execute ERC721 transfer Arkane Connect

To execute an ERC721 transaction transfer, use the connect building block with:

Request Fields
Table 26. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory

walletId

String

The id of the wallet one wants to sign with.

Mandatory

gasPrice

Number

The gas price of the transaction

Optional (default gas price is used otherwise), must be > 0

gas

Number

The amount of gas to use for the transaction (unused gas is refunded)

Optional (by default calculated), must be >= 0

value

Number

The value transferred for the transaction in Wei, also the endowment if it’s a contract-creation transaction

Mandatory, must be >= 0

tokenAddress

String

The address of the ERC721 token to be used in this transaction

Mandatory, valid ethereum contract address

nonce

Number

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

Optional (next nonce will be used by defaut), must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid ethereum address

tokenId

Number

The ID of the specific token we’re trying to transfer

Mandatory, valid existing Token ID which from is allow to transfer.

from

String

The token we’re transferring from

Mandatory, valid Ethereum address

network

Object

[1] The network to submit the transaction to

Optional

network.name

String

The display name of the network to submit the transaction to (e.g.: "Rinkeby"). This will be shown to the user when signing the transaction

Required. Free text

network.nodeUrl

String

The URL of the node to submit the transaction to (e.g.: "https://rinkeby.infura.io")

Required

[1] The node to which the transaction will be send can be set manually. This can be done using the network parameter.
This feature enables you to submit a transaction to any mainnet node of your choosing, a testnet node (e.g. Kovan, Rinkeby, …​) or a different (private) network altogether.

Request Body
Data example
{
  "walletId" : "bdc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "gasPrice" : 300000000000000,
  "gas" : 70000,
  "nonce" : 0,
  "tokenId" : 10,
  "to" : "0x2593b3771faaf26a2a443019c813a25d28a7986a",
  "from" : "0x2593b3771faaf26a2a443019c813a25d28a7986a",
  "network" : {
    "name" : "Rinkeby",
    "nodeUrl" : "https://rinkeby.infura.io",
    "chainId" : null
  },
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "type" : "ETHEREUM_ERC721_TRANSACTION",
  "value" : 0
}
Response Fields
Table 27. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Sign Arkane Connect

Signs arbitrary data. This data is before UTF-8 HEX decoded and enveloped as followed:

"\x19Ethereum Signed Message:\n" + message.length + message.

To sign data, use the connect building block with:

Request Fields
Table 28. Data parameters

Path

Type

Description

Constraints

type

String

type of the signature request

Mandatory, possible values: ETHEREUM_TRANSACTION, ETHEREUM_RAW, VECHAIN_TRANSACTION, GOCHAIN_TRANSACTION, GOCHAIN_RAW, BITCOIN_TRANSACTION, LITECOIN_TRANSACTION, TRX_TRANSACTION, TRC10_TRANSACTION, TRON_RAW

walletId

String

The id of the wallet one wants to sign with.

Mandatory

data

String

The arbitrary to sign

Mandatory, hex-encoded

prefix

Boolean

Whether or not to prefix the data with the “\x19Ethereum Signed Message:\n”-prefix.

Optional, Default true

hash

Boolean

Whether or not to to hash the given data prior to creating the signature.

Default true. Ignored if prefix = true

Request Body
Data example
{
  "walletId" : "1",
  "data" : "Some data",
  "hash" : true,
  "prefix" : true,
  "type" : "ETHEREUM_RAW"
}
Response Fields
Table 29. Result parameters

Path

Type

Description

r

String

The R value of the signature

s

String

The S value of the signature

v

String

The V value of the signature

signature

String

The value of the signature

Response Body
Result example
{
  "@class" : ".HexSignature",
  "r" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd",
  "s" : "0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029",
  "v" : "0x1c",
  "signature" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c"
}

Error Codes

Error Code Meaning

transaction.submit.ethereum-error

Something went wrong while trying to submit the ethereum transaction

web3.internal-error

Something went wrong with the underlying web3 connection.

web3.estimate.gas.internal-error

A problem occurred trying to estimate the gas.

web3.nonce.internal-error

A problem occurred trying to get the next nonce

web3.transaction.submit.internal-error

A problem occurred trying to submit the transaction to the Ethereum network

Gochain

Execute GO transaction Arkane Connect

To execute an Gochain transaction, use the connect building block with:

Request Fields
Table 30. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for ether transaction: GO_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

gasPrice

Number

The gas price of the transaction

Optional (default gas price is used otherwise), must be > 0

gas

Number

The amount of gas to use for the transaction (unused gas is refunded)

Optional (by default calculated), must be >= 0

value

Number

The value transferred for the transaction in Wei, also the endowment if it’s a contract-creation transaction

Mandatory, must be >= 0

data

String

Either a byte string containing the associated data of the message, or in the case of a contract-creation transaction, the initialisation code

Optional

nonce

Number

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

Optional (next nonce will be used by defaut), must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid ethereum address

Request Body
Data example
{
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "gasPrice" : 300000000000000,
  "gas" : 23000,
  "nonce" : 0,
  "value" : 10000000000,
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "data" : "0x",
  "type" : "GO_TRANSACTION"
}
Response Fields
Table 31. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Execute GO20 transfer Arkane Connect

To execute an GO20 transaction transfer, use the connect building block with:

Request Fields
Table 32. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory

walletId

String

The id of the wallet one wants to sign with.

Mandatory

gasPrice

Number

The gas price of the transaction

Optional (default gas price is used otherwise), must be > 0

gas

Number

The amount of gas to use for the transaction (unused gas is refunded)

Optional (by default calculated), must be >= 0

value

Number

The value transferred for the transaction in Wei, also the endowment if it’s a contract-creation transaction

Mandatory, must be >= 0

tokenAddress

String

The address of the GO20 token to be used in this transaction

Mandatory, valid gochain contract address

nonce

Number

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

Optional (next nonce will be used by defaut), must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid ethereum address

Request Body
Data example
{
  "walletId" : "bdc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "gasPrice" : 300000000000000,
  "gas" : 200000,
  "nonce" : 0,
  "value" : 10000000000,
  "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
  "tokenAddress" : "0x4df47b4969b2911c966506e3592c41389493953b",
  "type" : "GOCHAIN_GO20_TRANSACTION"
}
Response Fields
Table 33. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Sign Arkane Connect

Signs arbitrary data. This data is before UTF-8 HEX decoded and enveloped as followed:

"\x19Ethereum Signed Message:\n" + message.length + message.

To sign data, use the connect building block with:

Request Fields
Table 34. Data parameters

Path

Type

Description

Constraints

type

String

type of the signature request

Mandatory, possible values: ETHEREUM_TRANSACTION, ETHEREUM_RAW, VECHAIN_TRANSACTION, GOCHAIN_TRANSACTION, GOCHAIN_RAW, BITCOIN_TRANSACTION, LITECOIN_TRANSACTION, TRX_TRANSACTION, TRC10_TRANSACTION, TRON_RAW

walletId

String

The id of the wallet one wants to sign with.

Mandatory

data

String

The arbitrary to sign

Mandatory, hex-encoded

prefix

Boolean

Whether or not to prefix the data with the “\x19Ethereum Signed Message:\n”-prefix.

Optional, Default true

hash

Boolean

Whether or not to to hash the given data prior to creating the signature.

Default true. Ignored if prefix = true

Request Body
Data example
{
  "walletId" : "1",
  "data" : "Some data",
  "hash" : true,
  "prefix" : true,
  "type" : "ETHEREUM_RAW"
}
Response Fields
Table 35. Result parameters

Path

Type

Description

r

String

The R value of the signature

s

String

The S value of the signature

v

String

The V value of the signature

signature

String

The value of the signature

Response Body
Result example
{
  "@class" : ".HexSignature",
  "r" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd",
  "s" : "0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029",
  "v" : "0x1c",
  "signature" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c"
}

Error Codes

Error Code Meaning

transaction.submit.gochain-error

Something went wrong while trying to submit the Gochain transaction

Vechain

Execute VET transaction Arkane Connect

To execute an VeChain transaction, use the connect building block with:

Request Fields
Table 36. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for vet transaction: VET_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

blockRef

Null

BlockRef is the reference to a specific block. When the BlockRef is a block ID in the future, it enables users to configure the transactions to be executed as a specific block height;

Optional

chainTag

Null

chaintag

Optional

expiration

Number

The number of blocks that can be used to specify when the transaction expires

Optional, must be >= 0

gas

Number

the maximum amount of VeThor the sender is willing to pay to execute all the clauses in the transaction

Optional, must be > 0

gasPriceCoef

Number

Users can modify the Gas Price Coefficient to increase the amount of VeThor they are willing to commit in the predefined range as to prioritize the transaction

Optional, must be >= 0

nonce

String

TxNonce is a random number in the transaction. Users are able to change the nonce to generate unique TxID as part of the “in-transaction proof of work” feature

Optional

clauses

Array

Each transaction may contain multiple clauses, and each clause contains the “To”, “Value”, and “Data” fields that can be used to commence different tasks such as payment or smart contracts

At least 1 must be present

clauses[].to

String

address of the to clause

Mandatory, valid vechain address

clauses[].amount

Number

amount of the to clause

Mandatory, must be >= 0

clauses[].data

String

data of the to clause

Optional

Request Body
Data example
{
  "walletId" : "cdc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "blockRef" : null,
  "chainTag" : null,
  "expiration" : 3,
  "gas" : 23000,
  "gasPriceCoef" : 46576,
  "nonce" : "47bb60e4-2ffd-47ed-8276-0f003533e1e5",
  "clauses" : [ {
    "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
    "amount" : 10000000000,
    "data" : "0x0000"
  } ],
  "type" : "VET_TRANSACTION"
}
Response Fields
Table 37. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x6f6cd9b6038d5546e408c777bd3aab6d277bf24bc7d9f7445815b2a097e705fb"
}

Execute VTHO transfer Arkane Connect

To execute a VTHO transfer, use the connect building block with:

Request Fields
Table 38. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction, e.g.: VTHO_TRANSACTION

Mandatory, value for vtho transaction: VTHO_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

blockRef

Null

BlockRef is the reference to a specific block. When the BlockRef is a block ID in the future, it enables users to configure the transactions to be executed as a specific block height;

Optional

chainTag

Null

chaintag

Optional

expiration

Number

The number of blocks that can be used to specify when the transaction expires

Optional, must be >= 0

gas

Number

the maximum amount of VeThor the sender is willing to pay to execute all the clauses in the transaction

Optional, must be > 0

gasPriceCoef

Number

Users can modify the Gas Price Coefficient to increase the amount of VeThor they are willing to commit in the predefined range as to prioritize the transaction

Optional, must be >= 0

nonce

String

TxNonce is a random number in the transaction. Users are able to change the nonce to generate unique TxID as part of the “in-transaction proof of work” feature

Optional

clauses

Array

Each transaction may contain multiple clauses, and each clause contains the “To”, “Value”, and “Data” fields that can be used to commence different tasks such as payment or smart contracts

At least 1 must be present

clauses[].to

String

address of the to clause

Mandatory, valid vechain address

clauses[].amount

Number

amount of the to clause

Mandatory, must be >= 0

Request Body
Data example
{
  "walletId" : "ddc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "blockRef" : null,
  "chainTag" : null,
  "expiration" : 3,
  "gas" : 23000,
  "gasPriceCoef" : 46576,
  "nonce" : "060ed417-cee2-4c4e-a893-384508768f53",
  "clauses" : [ {
    "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
    "amount" : 10000000000
  } ],
  "type" : "VTHO_TRANSACTION"
}
Response Fields
Table 39. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x6f6cd9b6038d5546e408c777bd3aab6d277bf24bc7d9f7445815b2a097e705fb"
}
Table 40. Result parameters
Path Type Description

transactionHash

String

The transaction hash

Result example
{
  "transactionHash" : "0x621f692e386a8bc0c53d36aa793864893106e10f54f63fa9c063e24ad975d907"
}

Execute VIP180 transfer Arkane Connect

To execute an VIP180 transaction transfer, use the connect building block with:

Request Fields
Table 41. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for vet transaction: VECHAIN_VIP180_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

blockRef

Null

BlockRef is the reference to a specific block. When the BlockRef is a block ID in the future, it enables users to configure the transactions to be executed as a specific block height;

Optional

chainTag

Null

chaintag

Optional

expiration

Number

The number of blocks that can be used to specify when the transaction expires

Optional, must be >= 0

gas

Number

the maximum amount of VeThor the sender is willing to pay to execute all the clauses in the transaction

Optional, must be > 0

gasPriceCoef

Number

Users can modify the Gas Price Coefficient to increase the amount of VeThor they are willing to commit in the predefined range as to prioritize the transaction

Optional, must be >= 0

nonce

String

TxNonce is a random number in the transaction. Users are able to change the nonce to generate unique TxID as part of the “in-transaction proof of work” feature

Optional

clauses

Array

Each transaction may contain multiple clauses, and each clause contains the “To”, “Value”, and “Data” fields that can be used to commence different tasks such as payment or smart contracts

At least 1 must be present

clauses[].to

String

address of the to clause

Mandatory, valid vechain address

clauses[].tokenAddress

String

The address of the token to be used in this application

Mandatory, valid vechain ERC20 token address

clauses[].amount

Number

amount of the to clause

Mandatory, must be >= 0

Request Body
Data example
{
  "walletId" : "edc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "blockRef" : null,
  "chainTag" : null,
  "expiration" : 3,
  "gas" : 23000,
  "gasPriceCoef" : 46576,
  "nonce" : "05d9494c-7d27-49c4-adce-4516d5ab66ab",
  "clauses" : [ {
    "to" : "0xdc71b72db51e227e65a45004ab2798d31e8934c9",
    "amount" : 10000000000,
    "tokenAddress" : "0x0000000000000000000000000000456E65726779"
  } ],
  "type" : "VECHAIN_VIP180_TRANSACTION"
}
Response Fields
Table 42. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "0x6f6cd9b6038d5546e408c777bd3aab6d277bf24bc7d9f7445815b2a097e705fb"
}

Error Codes

Error Code Meaning

thorify.internal-error

Something went wrong with the underlying vechain connection

thorify.transaction.submit.internal-error

A problem occurred trying to submit the transaction to the vechain network

Bitcoin

Execute Bitcoin transaction Arkane Connect

To execute an Bitcoin transaction, use the connect building block with:

Request Fields
Table 43. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for bitcoin transaction: BTC_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

value in satoshi

must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid bitcoin address

feePerByte

Number

The fee per byte for the transaction (satoshi value)

Optional

pincode

String

The pincode of the specified wallet

Mandatory, must be between 4-6 digits

Request Body
Data example
{
  "walletId" : "1543",
  "value" : 10000000000,
  "feePerByte" : 6,
  "to" : "mpi2SkK5vKipCNE9h1HtRgDg6UM44AuN9S",
  "type" : "BTC_TRANSACTION"
}
Response Fields
Table 44. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "9c0278cd0ee9edf48e75c012142f26594684eef4f52ec59e2276fa83e3f29a18"
}

Error Codes

|Error Code | Meaning

bitcoin.address-wrong-network

Something went wrong with the address of this bitcoin wallet on this specific network.

bitcoin.creation-error

An error occurred trying to create the Bitcoin transaction.

bitcoin.transaction-inputs

The account you’re trying to use as origin in the transaction doesn’t have valid inputs to send

bitcoin.not-enough-funds

Not enough funds to create the transaction

bitcoin.signing-error

An error occurred trying to sign the bitcoin transaction.

Litecoin

Execute Litecoin transaction Arkane Connect

To execute an Litecoin transaction, use the connect building block with:

Request Fields
Table 45. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for bitcoin transaction: LTC_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

value in satoshi

must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid litecoin address

feePerKiloByte

Number

The fee per kilobyte for the transaction (satoshi value)

Optional

pincode

String

The pincode of the specified wallet

Mandatory, must be between 4-6 digits

Request Body
Data example
{
  "walletId" : "1543",
  "value" : 10000000000,
  "feePerKiloByte" : 6,
  "to" : "MTvnA4CN73ry7c65wEuTSaKzb2pNKHB4n1",
  "type" : "LTC_TRANSACTION"
}
Response Fields
Table 46. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "9c0278cd0ee9edf48e75c012142f26594684eef4f52ec59e2276fa83e3f29a18"
}

Error Codes

Error Code Meaning

litecoin.address-wrong-network

Something went wrong with the address of this litecoin wallet on this specific network.

litecoin.creation-error

An error occurred trying to create the Litecoin transaction.

litecoin.transaction-inputs

The account you’re trying to use as origin in the transaction doesn’t have valid inputs to send

litecoin.not-enough-funds

Not enough funds to create the transaction

litecoin.signing-error

An error occurred trying to sign the litecoin transaction

Tron

Execute a TRON transaction Arkane Connect

To execute an TRON transaction, use the connect building block with:

Request Fields
Table 47. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for tron transaction: TRX_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

The value transferred for the transaction in "sun"

Mandatory, must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid tron address

data

String

The data you want to send with this transaction. This field will be ignored when building a token transaction request

Optional

Request Body
Data example
{
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "value" : 10000000000,
  "to" : "TAGGUxf5VvuA7UJdzAtjoS3gJuJytLQiYo",
  "data" : "0x",
  "type" : "TRX_TRANSACTION"
}
Response Fields
Table 48. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "e30c9a753d60b9312038cbe0a5dfe2891d1d25e46e37de514faa74febb5ccbb8"
}

Execute TRC10 transfer Arkane Connect

To execute a TRC10 transaction transfer, use the connect building block with:

Request Fields
Table 49. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for a trc10 transaction: TRC10_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

The value transferred for the transaction in "sun"

Mandatory, must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid tron address

token

String

The address of the TRC10 token to be used in this transaction

Mandatory, valid ethereum contract address

Request Body
Data example
{
  "walletId" : "adc4c08a-b8fa-4e4c-z5a2-92c87b80f174",
  "value" : 10000000000,
  "to" : "TAGGUxf5VvuA7UJdzAtjoS3gJuJytLQiYo",
  "token" : "TCFXpuCNS77Ha6Nj9RU5Vr97TY7fG1YfzF",
  "type" : "TRC10_TRANSACTION"
}
Response Fields
Table 50. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "e30c9a753d60b9312038cbe0a5dfe2891d1d25e46e37de514faa74febb5ccbb8"
}

Sign Raw Data Arkane Connect

Signs arbitrary data. .

To sign data, use the connect building block with:

Request Fields
Table 51. Data parameters

Path

Type

Description

Constraints

type

String

type of the signature request

Mandatory, possible values: ETHEREUM_TRANSACTION, ETHEREUM_RAW, VECHAIN_TRANSACTION, GOCHAIN_TRANSACTION, GOCHAIN_RAW, BITCOIN_TRANSACTION, LITECOIN_TRANSACTION, TRX_TRANSACTION, TRC10_TRANSACTION, TRON_RAW

walletId

String

The id of the wallet one wants to sign with.

Mandatory

data

String

The arbitrary to sign

Mandatory, hex-encoded

Request Body
Data example
{
  "walletId" : "1",
  "data" : "Some data",
  "type" : "TRON_RAW"
}
Response Fields
Table 52. Result parameters

Path

Type

Description

r

String

The R value of the signature

s

String

The S value of the signature

v

String

The V value of the signature

signature

String

The value of the signature

Response Body
Result example
{
  "@class" : ".HexSignature",
  "r" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd",
  "s" : "0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029",
  "v" : "0x1c",
  "signature" : "0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c"
}

Error Codes

Error Code Meaning

tron.balance.bandwidth-error

Unable to fetch bandwidth

tron.signature.error

An error occurred trying to create a tron signature

Aeternity

Execute AEternity transaction Arkane Connect

To execute an AEternity transaction, use the connect building block with:

Request Fields
Table 53. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for Aeternity transaction: AE_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

The value transferred for the transaction in "sun"

Mandatory, must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid AE address

data

Null

The data you want to send with this transaction.

Optional

nonce

Null

Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce

Optional

Request Body
Data example
{
  "walletId" : "a0173f54-11a5-474e-8c4e-40157ac27c45",
  "to" : "ak_7x4HpPLRLfotVVcGzYU8ZZwKhoLW7NXg9hAi2pSEyRBo4Vq1c",
  "value" : 1000000000000000000,
  "fee" : null,
  "ttl" : null,
  "nonce" : null,
  "data" : null,
  "type" : "AE_TRANSACTION"
}
Response Fields
Table 54. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "e30c9a753d60b9312038cbe0a5dfe2891d1d25e46e37de514faa74febb5ccbb8"
}

Sign raw AEternity transaction Arkane Connect

To sign a raw AEternity transaction, use the connect building block with:

Request Fields
Table 55. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction.

Mandatory: AETERNITY_RAW

walletId

String

The id of the wallet one wants to sign with.

Mandatory

pincode

String

The pincode of the specified wallet

Mandatory, must be between 4-6 digits

data

String

The data you wish to sign.

Mandatory

Request Body
Data example
{
  "walletId" : "1",
  "data" : "tx_+IUrAaEBV1+B/7Cil7dyXcZx2gsXabH8XL5FOFx7WtH8Lq8dYJ0LoQXc8QU36IYbbsXk7d7Lg77BPQuicjS136jJKX5wHepi9QOHAZu6brCYAAAAgicQhDuaygCqKxFM1wuWG58AoFFwNxylSmNg4Pv8OlwzrrPdOBQ95X6DOW+5H6nRMbqY3bEntQ==",
  "type" : "AETERNITY_RAW"
}
Response Fields
Result parameters

Unresolved directive in <stdin> - include::./snippets/noPin/sign-aeternity-raw/response-fields.adoc[]

Response Body
Result example
{"@class":".TransactionSignature","signedTransaction":"transaction"}

Neo

Execute NEO Native transaction Arkane Connect

To execute an Neo Native transaction, use the connect building block with:

Request Fields
Table 56. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for Neo Native transaction: NEO_NATIVE_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

The value transferred for the transaction

Mandatory, must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid AE address

Request Body
Data example
{
  "walletId" : "a0173f54-11a5-474e-8c4e-40157ac27c45",
  "to" : "ak_7x4HpPLRLfotVVcGzYU8ZZwKhoLW7NXg9hAi2pSEyRBo4Vq1c",
  "value" : 10,
  "type" : "NEO_NATIVE_TRANSACTION"
}
Response Fields
Table 57. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "7be96b7b38034be7a05ea0e520ce9191b450b8981e9d96dd0fd9d390dfa3a9a2"
}

Execute NEO Gas transaction Arkane Connect

To execute an Neo Gas transaction, use the connect building block with:

Request Fields
Table 58. Data parameters

Path

Type

Description

Constraints

type

String

The type of the transaction

Mandatory, value for Neo Gas transaction: NEO_GAS_TRANSACTION

walletId

String

The id of the wallet one wants to sign with.

Mandatory

value

Number

The value transferred for the transaction

Mandatory, must be >= 0

to

String

The destination address of the transaction.

Mandatory, a valid AE address

Request Body
Data example
{
  "walletId" : "a0173f54-11a5-474e-8c4e-40157ac27c45",
  "to" : "ak_7x4HpPLRLfotVVcGzYU8ZZwKhoLW7NXg9hAi2pSEyRBo4Vq1c",
  "value" : 10,
  "type" : "NEO_GAS_TRANSACTION"
}
Response Fields
Table 59. Result parameters

Path

Type

Description

transactionHash

String

The transaction hash

Response Body
Result example
{
  "transactionHash" : "7be96b7b38034be7a05ea0e520ce9191b450b8981e9d96dd0fd9d390dfa3a9a2"
}

Transaction Error Codes

Error Code Meaning

transaction.sign.internal-error

A problem occurred trying to submit the sign the request

transaction.insufficient-funds

The account that initiated the transfer does not have enough energy

transaction.sign.gas-error

Unable to fetch default gas prices

transaction.submit.internal-error

A problem occurred trying to submit the sign the request

transaction.submit.not-supported-yet

Submitting a request to this network is not possible yet

Swap

This section describes how to use the swapping functionality within Arkane. It allows you to swap/exchange a (native) token to (native) token.

Trading pairs Arkane API

Returns the list of possible trading pairs for a given wallet.

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/e5bcf403-20f3-4e7d-8772-ebb981885c5a/swaps/pairs' -i -X GET \
    -H 'Content-Type: application/json'

Path Parameters

Table 60. /api/wallets/{id}/swaps/pairs

Parameter

Description

id

The id of the wallet

Example Http Response

HTTP/1.1 200 OK
Content-Length: 468
Content-Type: application/json;charset=UTF-8
[ {
  "from" : {
    "secretType" : "VECHAIN",
    "symbol" : "VET",
    "tokenAddress" : ""
  },
  "to" : {
    "secretType" : "VECHAIN",
    "symbol" : "VTHO",
    "tokenAddress" : "0x0000000000000000000000000000456e65726779"
  }
}, {
  "from" : {
    "secretType" : "VECHAIN",
    "symbol" : "VTHO",
    "tokenAddress" : "0x0000000000000000000000000000456e65726779"
  },
  "to" : {
    "secretType" : "VECHAIN",
    "symbol" : "VET",
    "tokenAddress" : ""
  }
} ]

Response Fields

Path

Type

Description

[]

Array

The available trading pairs for this wallet

[].from.secretType

String

Source secret type

[].from.symbol

String

Source token symbol (native token symbol will also be present (ex. VET)

[].from.tokenAddress

String

Optional token address, when empty it represents the native token (ex. VET)

[].to.secretType

String

Destination secret type

[].to.symbol

String

Destination token symbol (native token symbol will also be present (ex. VET)

[].to.tokenAddress

String

Destination token address, when empty it represents the native token (VET)

Exchange rate Arkane API

Returns the exchange rates for a specified swap.

Example Curl Request

$ curl 'https://api.arkane.network/api/swaps/rates?fromSecretType=VECHAIN&toSecretType=VECHAIN&fromToken=&toToken=0x0000000000000000000000000000456e65726779&amount=100&orderType=SELL&fromToken=' -i -X GET \
    -H 'Content-Type: application/json'

Request Parameters

Parameter

Description

fromSecretType

The input secret type (Possible values: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO])

toSecretType

The output secret type (Possible values: [AETERNITY, BITCOIN, ETHEREUM, GOCHAIN, LITECOIN, TRON, VECHAIN, NEO])

fromToken

The type of token as input

toToken

The type of token as output

amount

The amount to swap

orderType

The order type (SELL or BUY). For sell orders (exact input), the amount bought (output) is calculated. For buy orders (exact output), the cost (input) is calculated

Example Http Response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 345
{
  "exchangeRates" : [ {
    "exchange" : "VEXCHANGE",
    "orderType" : "SELL",
    "inputAmount" : 100,
    "outputAmount" : 485,
    "slippage" : 0.025,
    "fee" : 1
  } ],
  "bestRate" : {
    "exchange" : "VEXCHANGE",
    "orderType" : "SELL",
    "inputAmount" : 100,
    "outputAmount" : 485,
    "slippage" : 0.025,
    "fee" : 1
  }
}

Response Fields

Path

Type

Description

exchangeRates

Array

The exchange rates

exchangeRates[].orderType

String

The order type (SELL or BUY)

exchangeRates[].inputAmount

Number

The input amount

exchangeRates[].outputAmount

Number

The output amount (rate = outputAmount / inputAmount)

exchangeRates[].slippage

Number

The slippage (in %) that is allowed for the swap

exchangeRates[].fee

Number

The fee (percentage) that is included in the exchange rate

bestRate

Object

The best exchange rate (included in the exchangeRates list)

bestRate.orderType

String

The order type (SELL or BUY)

bestRate.inputAmount

Number

The input amount

bestRate.outputAmount

Number

The output amount (rate = outputAmount / inputAmount)

bestRate.slippage

Number

The slippage (in %) that is allowed for the swap

bestRate.fee

Number

The fee (percentage) that is included in the exchange rate

Create swap Arkane API

Creates the transaction requests that are needed to execute the swap. With this result (the transaction requests), you will need to call the native transactions endpoint to execute the swap. Ex. for VeChain, use the output from this call to the input of: Execute VET transaction

Example Curl Request

$ curl 'https://api.arkane.network/api/wallets/e30a6a01-8d9a-412e-b0c8-eb04d86d1daa/swaps' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "walletId" : "id",
  "destinationWalletId" : "id",
  "fromSecretType" : "VECHAIN",
  "toSecretType" : "VECHAIN",
  "fromToken" : "",
  "toToken" : "0x0000000000000000000000000000456e65726779",
  "inputAmount" : 100,
  "outputAmount" : 1305,
  "orderType" : "SELL",
  "exchange" : "VEXCHANGE"
}'

Path Parameters

Table 61. /api/wallets/{id}/swaps

Parameter

Description

id

The id of the wallet

Example Http Response

HTTP/1.1 200 OK
Content-Length: 571
Content-Type: application/json;charset=UTF-8
[ {
  "walletId" : "e30a6a01-8d9a-412e-b0c8-eb04d86d1daa",
  "blockRef" : null,
  "chainTag" : null,
  "expiration" : 0,
  "gas" : null,
  "gasPriceCoef" : null,
  "nonce" : null,
  "clauses" : [ {
    "to" : "0xB74C4EBd95F70Dd9794d8c49053a297689950b63",
    "amount" : 1305000000000000000000,
    "data" : "0xad65d76d000000000000000000000000000000000000000000000044f9c0112b17a58000000000000000000000000000000000000000000000000000000000005c5452f200000000000000000000000033e2f608129ffca67c9fdc56cd9d2354a79d2919"
  } ],
  "type" : "VET_TRANSACTION"
} ]

Response Fields

Path

Type

Description

[]

Array

An array of transaction requests that need to be offered to the native transactions endpoint in order to execute the swap

Swap Error Tokens

Error Code Meaning

swap.no-exchange-found

No SwapService found for SwapExchange

swap.uniswap.get-price.failed

Unable to get the price of a token on uniswap

swap.uniswap.allowance-error

Unable to get allowance for token on uniswap

swap.uniswap.exchange-not-found

An exchange contract for a token on uniswap could not be found

Profile

User profile Arkane API

Returns more info about the connected user.

Example Http Request

GET /api/profile HTTP/1.1
Host: api.arkane.network

Example Http Response

HTTP/1.1 200 OK
Content-Length: 130
Content-Type: application/json;charset=UTF-8
{
  "userId" : "davy",
  "hasMasterPin" : true,
  "username" : null,
  "email" : null,
  "firstName" : null,
  "lastName" : null
}

Response Fields

Path

Type

Description

userId

String

userId of the logged in user

hasMasterPin

Boolean

check if the user already set up his master pincode

username

Null

Username of the logged in user

email

Null

email of the logged in user

firstName

Null

first name of the logged in user

lastName

Null

last name of the logged in user

^