NAV Navbar
API Documentation
http javascript
  • Overview
  • Errors
  • User flows
  • Client redirects
  • Pagination
  • Ledger index
  • Wallets
  • Users
  • Accounts
  • Transactions
  • Balances
  • 2FA
  • Blobs
  • Documents
  • Reviewable requests
  • Assets
  • Asset pairs
  • Fees
  • Sales
  • Trades
  • Key-value storage
  • Overview

    REST API is a core building block of the TokenD platform. You can use it to retrieve information about your own TokenD account or to integrate TokenD into your own product. It's completely up to you and your custom use case.

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119

    LegendDescription
    🔒Request requires signature (See signing requests)
    📄Request has pagination (See Pagination)

    Key components

    Different APIs are exposed through single endpoint and might have different response and error formats, due to reasons ¯\_(ツ)_/¯

    Key Server (KS)

    It's primary goal is to provide means for wallet management like storing encrypted client keys, email verification and 2FA. It also could be used for auxilary tasks like document storage, backend for storing client settings and third-party integrations.

    KS tries its best to follow JSONAPI. Most important parts of protocol will be included here, but to get better feel of what's going on it's advised to get yourself familiar with JSONAPI before continuing.

    ResourceEndpointDescription
    Wallets/wallets
    Users/users
    2FA/wallets/:wallet-id/factors
    Documents/users/:address/documents
    Blobs/users/:address/blobs
    Settings/users/:address/settings

    Horizon

    Horizon's RESTful API provides straightforward way to submit transactions and access indexed blockchain history.

    ResourceEndpointDescription

    Admin Key server

    Making requests

    Each request must include correct content negotiation headers.

    Signing requests

    For the following request:

    GET /users?type=2 HTTP/1.1
    Host: api.tokend.io
    Date: Sun, 05 Jan 2014 21:31:40 GMT
    

    Signing string would be:

    date: Sun, 05 Jan 2018 21:31:40 GMT
    (request-target): get /users?type=2
    

    For SCDMOOXVNMO6SA22AYUMZDIGLDJMBUTVEGB73FFNTLFJILBJWIU4NQ3D private key gives following signature string:

    keyId="GBLTOG6EJS5OWDNQNSCEAVDNMPBY6F73XZHHKR27YE5AKE23ZZEXOLBK",algorithm="ed25519-sha256",signature="0cvTqLDn+5i8pInkeSR833HrNSMI4xB9m1eN7rofiDVnoutKQJvpwB9hl2GhsMPcMbVXo4beUR96Stf/qU+iAg==",headers="date (request-target)"
    

    Request signature implementation is based on IETF HTTP Signatures draft RFC except of implicit headers parameter is not supported, clients must explicitly specify headers used for signing.

    Only signature algorithm supported is ed25519-sha256 which uses public signer key as keyId.

    Both Signature and Authorization HTTP authentication schemas are supported.

    The minimum recommended data to sign is the (request-header) and date.

    Errors

    API uses conventional HTTP response codes to indicate the success or failure of a request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided and codes in 5xx range indicate an problem with TokenD servers.

    General HTTP response status codes

    If not stated otherwise client should expect one of the following status codes:

    Status codeDescription
    200 OK
    201 Created
    204 No ContentThe server successfully processed the request and is not returning any content
    400 Bad RequestRequest was invalid in some way, response should contain details
    401 UnauthorizedRequest signature was invalid or you are not authorized to access resource

    Application-specific error codes

    Error codeDescription
    tfa_requiredSee docs section for details
    verification_requiredWallet with verified email is required before proceeding

    User flows

    Sign up

    const { mainWallet } = await sdk.api.wallets.create('[email protected]', '[email protected]')
    sdk.useWallet(mainWallet)
    await sdk.api.wallets.verifyEmail('eyAic3RhdHVzIjoyMDAsImF...')
    await sdk.api.users.create(wallet.accountId)
    

    To have full access to the platform client should create own account entity. To achieve that following steps must be completed:

    Email verification

    Sign in

    const wallet = await sdk.api.wallets.get('[email protected]', '[email protected]')
    sdk.useWallet(wallet)
    

    Sign in process is basically acquiring client's signing key from encrypted keychain data.

    Javascript SDK makes this flow easier by encapsulating this actions.

    Client redirects

    link format

    http://client.com/r/eyAic3RhdHVzIjoyMDAsImF...G4zbmZqbWZ4OXA1OGdlbzVzdHQ5In19
    

    decoded value

    {
        "status": 200,
        "type": 1,
        "meta": {
            "token": "JOqIgfCNSjnGWDrTPWbW",
            "wallet_id": "388108095960430b80554ac3efb6807a9f286854033aca47f6f466094ab50876"
        }
    }
    
    const encodedAction = window.location.href.split(/r/)[1]
    const action = atob(encodedAction)
    switch (action.type) {
      case 1:
        // handle action here
        break
      default:
        throw new Error('Unknown action')
    }
    
    FieldDescription
    statusAction result code following HTTP status code semantics, might be omitted if 200
    typeRedirect type
    metaTypes specific meta-information, might be omitted if empty

    Redirect types

    TypeDescription
    1Email confirmation token, meta will include verification token and wallet_id

    Pagination

    Pagination is a dividing request result into pages. It is used for requests with a lot of data to return.

    Every paged response is wrapped in the page structure. In the _links object it has http links to next, previous and current pages. In the _embedded object it has the actual response data, the set of items stored in is's records property.

    GET /paged_request HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        "self": {
          "href": "http://api.com/paged_request?order=asc\u0026limit=10\u0026cursor="
        },
        "next": {
          "href": "http://api.com/paged_request?order=asc\u0026limit=10\u0026cursor=877582077661184"
        },
        "prev": {
          "href": "http://api.com/paged_request?order=desc\u0026limit=10\u0026cursor=869906971103232"
        }
      },
      "_embedded": {
        "records": [
            ...
        ]
      }
    }
    

    Every paged request accepts the following query params:

    ParameterTypeDefaultDescription
    orderstringascasc or desc. Used to specify items order which is usually based on the item creation time
    limitinteger10Used to specify number of items in the page. Maximum value is 200
    cursorintegerUsed to specify the start of the page. For example, if the last item of the current page has paging_token=10 then you have to use cursor=10 to request the new one

    To load all the data just follow next links or modify cursor param manually as long as records size is equals to the limit. Lower size means that there is no more data and the current page is the last one.

    Ledger index

    🔒 📄 Get operations

    GET /operations/ HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "_links": {
              ...
            },
            "id": "6850472841217",
            "paging_token": "6850472841217",
            "transaction_id": "6850472841216",
            "source_account": "GDA3SCPLGNMXAARU5XXHNIUCHG554TESWZOKQZL4EOY2HPJRPLMW7VEB",
            "type": "set_options",
            "type_i": 2,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-01-28T18:30:02Z",
            "participants": [
              {
                "account_id": "GDA3SCPLGNMXAARU5XXHNIUCHG554TESWZOKQZL4EOY2HPJRPLMW7VEB"
              }
            ],
            "operation_fee": "0.000000",
            "signer_key": "GDSX33LI6O2LJABPTH2QBXJCZJNTLHZ4KA7LS2N5VMCOTYNS6W3CWQ6Y",
            "signer_weight": 255,
            "signer_type": 2147483647,
            "signer_identity": 1
          },
          ...
        ]
      }
    }
    

    Returns list of operations

    Query params

    ParameterTypeDefaultDescription
    referencestringIf present, the result will contain only operation with specific reference or empty page if it was not found
    account_idstringIf present, the result will contain only operations related to this account
    sincestringShould be valid ISO 8601 string. If present, the result will contain only operations that was submitted after specific date
    tostringShould be valid ISO 8601 string. If present, the result will contain only operations that was submitted before specific date
    completed_onlybooleantrueIf present, the result will contain only operation with success/failed state (deposits/withdrawals/offers can have different states)
    skip_canceledbooleanIf present, the result will include operations with canceled state (offers can be canceled)
    pending_onlybooleanfalseIf present, the result will contain only operation with success/failed state (deposits/withdrawals/offers can have different states)
    account_typeintegerIf present, the result will contain only operations related to accounts with current type equals to the specified

    The request returns data in multiple pages, for more information, see Pagination

    📄 Get public operations

    GET public/operations HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "_links": {
              ...
            },
            "id": "6850472841217",
            "paging_token": "6850472841217",
            "transaction_id": "6850472841216",
            "type": "set_options",
            "type_i": 2,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-01-28T18:30:02Z",
            "operation_fee": "0.000000",
            "signer_weight": 255,
            "signer_type": 2147483647,
            "signer_identity": 1
          }
          ...
        ]
      }
    }
    

    Returns list of operations without sensitive data

    🔒 Get operation info by ID

    GET /operations/68719480833 HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "id": "68719480833",
      "paging_token": "68719480833",
      "transaction_id": "68719480832",
      "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
      "type": "manage_asset",
      "type_i": 11,
      "state_i": 2,
      "state": "success",
      "identifier": "0",
      "ledger_close_time": "2018-04-07T17:40:11Z",
      "participants": [
        {
          "account_id": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636"
        }
      ],
      "operation_fee": "0.000000",
      "request_id": 0,
      "action": 0,
      "action_string": ""
    }
    

    Returns information about specific operation

    Path params

    ParameterDescription
    idThe ID of the operation

    Get operation public info by ID

    GET /public/operations/6850472841217 HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "id": "6850472841217",
      "paging_token": "6850472841217",
      "transaction_id": "6850472841216",
      "type": "set_options",
      "type_i": 2,
      "state_i": 2,
      "state": "success",
      "identifier": "0",
      "ledger_close_time": "2018-01-28T18:30:02Z",
      "operation_fee": "0.000000",
      "signer_weight": 255,
      "signer_type": 2147483647,
      "signer_identity": 1
    }
    

    Returns information about specific operation without sensitive info

    🔒 📄 Get payments

    GET /payments HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "681911957590017",
            "paging_token": "681911957590017",
            "transaction_id": "681911957590016",
            "source_account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "type": "create_issuance_request",
            "type_i": 3,
            "state_i": 2,
            "state": "success",
            "identifier": "13",
            "ledger_close_time": "2018-05-19T19:07:09Z",
            "participants": [
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3"
              },
              {
                "account_id": "GCW3Y4ZOS3RN3VG62PF3YDSGJ7VC2HPZ5FCMFYIWBSOAIN6VOOKFDOEK",
                "balance_id": "BDWCWE3YC6J4QKS5W5X3OQC47CGPH4JLU5IDY5QCHTX6GT3T54UWE3XA"
              }
            ],
            "reference": "some reference",
            "amount": "123.000000",
            "asset": "lazycat",
            "fee_fixed": "0.000000",
            "fee_percent": "0.000000",
            "external_details": {}
          },
          {
            "id": "735629113561089",
            "paging_token": "735629113561089",
            "transaction_id": "735629113561088",
            "source_account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "type": "payment_v2",
            "type_i": 23,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-05-20T12:29:36Z",
            "participants": [
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
                "balance_id": "BBG5QP3T6BQJP7FWD6OMSONEZSIMAQJI44DJH6LSSRJUGVWJITNBNA4R"
              },
              {
                "account_id": "GDRQSTLORA2KOPBELTTM2J4LQKZQQ7OIL6LE2DEMLUOLP572E2YTPROT",
                "balance_id": "BA4VSN4C33YEC2RIEMVQJYPG4BWYJKJB3CS4UYC2BFQ44TW2FUTT5KYR"
              }
            ],
            "payment_id": 2,
            "from": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "to": "GDRQSTLORA2KOPBELTTM2J4LQKZQQ7OIL6LE2DEMLUOLP572E2YTPROT",
            "from_balance": "BBG5QP3T6BQJP7FWD6OMSONEZSIMAQJI44DJH6LSSRJUGVWJITNBNA4R",
            "to_balance": "BA4VSN4C33YEC2RIEMVQJYPG4BWYJKJB3CS4UYC2BFQ44TW2FUTT5KYR",
            "amount": "0.001000",
            "asset": "USD4",
            "source_fee_data": {
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "USD4",
              "fixed_fee": "0.000000"
            },
            "destination_fee_data": {
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "USD4",
              "fixed_fee": "0.000000"
            },
            "source_pays_for_dest": true,
            "subject": "wqeqweq",
            "reference": "",
            "source_sent_universal": "0.000000"
          }
        ]
      }
    }
    

    Returns list of payments

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    referencestringIf present, the result will contain only operation with specific reference or empty page if it was not foundaccount_id
    balance_idstringIf present, the result will contain only operations for specific balance
    assetstringIf present, the result will contain only operations for specific asset
    tx_idstringIf present, the result will contain only operations from specific transaction with corresponding ID
    referencestringIf present, the result will contain only operations with specific reference
    sincestringShould be valid ISO 8601 string. If present, the result will contain only operations that was submitted after specific date
    tostringShould be valid ISO 8601 string. If present, the result will contain only operations that was submitted before specific date
    completed_onlybooleantrueIf present, the result will contain only operation with success/failed state (deposits/withdrawals/offers can have different states)
    skip_canceledbooleanIf present, the result will include operations with canceled state (offers can be canceled)
    pending_onlybooleanfalseIf present, the result will contain only operation with success/failed state (deposits/withdrawals/offers can have different states)
    account_typeintegerIf present, the result will contain only operations related to accounts with current type equals to the specified

    Wallets

    Wallet exists purely on key server and it's purpose is to hold encrypted user data and provide additional authentication means like 2FA and email confirmations.

    Wallets are identified by wallet ID derived from email and password.

    Attributes

    FieldDescription
    account_idunique identifier of user account generated during wallet creation
    emailemail address provided during wallet creation
    keychain_dataarbitrary client-provided string, for details see keychain derivation

    Wallet ID derivation

    digest = sha256(1 || salt || email) # where || is concatenation
    key = scrypt(password, digest, kdfparams)
    id = hmacsha256('WALLET_ID', key)
    
    let kdf = await sdk.api.wallets.getKdfParams()
    let salt = "aHR0cHM6Ly9iaXQubHkvMkl2ZDdGYw=="
    let walletId = sdk.Wallet.deriveId('[email protected]', '[email protected]', kdf.data, salt);
    /* =>
    5bda0356e3493325ff40334089f37abd2afbb4fa14270a07ed88b7533a3016d6
    */    
    

    Wallet ID is a SHA256 HMAC of scrypt key derived from wallet email and client generated salt.

    Default KDF parameters provided by key server should be used for every new wallet ID and keychain derivations.

    Wallet ID should be hex encoded.

    Keychain derivation

    digest = sha256(1 || salt || email) # where || is concatenation
    key = scrypt(password, digest, kdfparams)
    passphrase = hmacsha256('WALLET_KEY', key)
    data = { accountId, seed }
    IV, cipherText = encrypt("aes", "gcm", data, hmac)
    keychain = {IV, cipherText, "aes", "gcm}
    
    
    

    Keychain may be used to store wallet keys and any arbitrary, client-specific data.

    Client should store at least accountId and seed to be able to login with email/password.

    Get KDF params

    let {data} = await sdk.api.wallets.getKdfParams()
    /* =>
    {
      "id": "2",
      "resourceType": "kdf",
      "algorithm": "scrypt",
      "bits": 256,
      "n": 4096,
      "r": 8,
      "p": 1
    }
    */
    
    GET /kdf HTTP/1.1
    
    HTTP/1.1 200 OK
    Content-Type: application/json
    {
        "data": {
            "type": "kdf",
            "id": "2",
            "attributes": {
                "algorithm": "scrypt",
                "bits": 256,
                "n": 4096,
                "r": 8,
                "p": 1
            }
        }
    }
    

    Returns current default derivation parameters or parameters used to derive specific wallet.

    request

    ParameterRequiredDescription
    emailfwill return KDF parameters for wallet keychain, 404 Not Found if email is unknown
    is_recoveryfboolean denoting if client wants to get KDF for recovery keychain

    response

    FieldDescription
    idversion of KDF parameters used to derive wallet data
    1 - means that wallet id should be calculated as is, without any formatting
    2 - means that wallet id should be calculated with lowercased email
    attributesKDF parameters which should be used for derivation

    Create wallet

    let {wallet, recoverySeed} = await sdk.api.wallets.create('[email protected]', '[email protected]')
    
    POST /wallets HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "id": "4fdf134f5d33982c117a20bf1e9866ffaab826d2f3eeed6c65b14998442a0526",
        "attributes": {
          "account_id": "GCBLMZGOAM5ZMYOSQVHW57NISOCHFE3ISXKOHZ43UBP3K6EMDEXLVCY2",
          "email": "[email protected]",
          "salt": "qonp0sJgd30NQ916fzpO2A==",
          "keychain_data": "eyJJViI6IldsSkFUdEFydmljZTJjdWkiLCJjaXBoZXJUZXh0IjoiaGtFa2UzZlFSdVNFdTIzdVhhK0JFa2ZCQzFDL1ZqVXFydE9TUXMrU3hsOUkzSVRHWXNRTXVhRkI2eDVjaG1HZnM1U28zc0UwNDRWYXkrOFY1RWU2Nk5tNWlnemVIbjh5UENiNXFrYmd0V0E2SFNobmo2VUdMUVNlODN2MjJ6TnhGZ3R6VWtsMDFiS25RTmJIS3preEF6d1g2MVJxTlc0dS9iTmJWV1d1YU43TTZJYWZkaVBEV3B6MzFUdFJDT3grNFQzNHV6VUZ4QTloMUE9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9"
        },
        "type": "wallet",
        "relationships": {
          "kdf": {
            "data": {
              "type": "kdf",
              "id": "2"
            }
          },
          "factor": {
            "data": {
              "type": "password",
              "attributes": {
                "account_id": "GBOZ32WRZENUCOHPVSCDUMGMPJRZV7WEOEZ4BIC4ITWPICIPGEYQMKEB",
                "keychain_data": "eyJJViI6IndYeHJ4aHlLOFprV1JuZXYiLCJjaXBoZXJUZXh0IjoiaTM2dDRyZ1lOUUZ5VGNpSHNSOWRoVU5McUU3dGxqZVRpTVJORWFQTzloc3VxbDUreXBwc3g0Q0RZSlI2d0lEQVdsQVpJcEpNNGtlaitzMTRtZ0NuVTVRZTAwUlBXSm5INVlibWlWMnRjSWVKT1RXNy9sSmFpSHlsRWpKckpMa2VXN0lBaHR4SU5DbnhNZldIZjZGcUZvQktxRUtnNXNBTk9oOFVUdldxekk0T3hVNy9DM29wbkZpQ0Z4TElrY2RpQ0tGcGxhYXRqbWgxZXc9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9",
                "salt": "AmsucaCaXzVeeGaNU1emew=="
              }
            }
          },
          "recovery": {
            "data": {
              "type": "password",
              "id": "b0a55d16f6bd6d92e0b891bba35b98b97271247f5f443d8a176c6e601a534b5e",
              "attributes": {
                "account_id": "GCR645KV4GLENGKH3QUB2OOZZRHZA6PIQGM24TSHN2BG2HIVZERJMDJX",
                "keychain_data": "eyJJViI6IjlFN0ovQkwxRXNrZFVrQ0giLCJjaXBoZXJUZXh0IjoiVUlTZ3Z1bXIyOUZic1U1cElZb2ZBdWdoRTBydm9VdVF2aVRqMVpxTTZsZG5ERDdNaTI5dFplUlV3UUdiemFUOUpKQ2I5cFpLWnljOTVBMHFzb3JNS21rOE1LMG1ETU5KZG52SjFtbUE1SjJIUG9wM2lZVDJvQVRnRXczcmhHdE1jOXRTRWRqL1o5NjZGUEJEQUtpQWhla1dkMEtzb2M0V1I4MFdlbWh1b08rb2h4c2J0ajRzZ1QvRzVZM0EwWHJkNTZaT1lienV3Y2pMSXc9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9",
                "salt": "7gyTQ4paDohhWdLDP5FiRg=="
              }
            }
          }
        }
      }
    }
    
    HTTP/1.1 201
    Content-Type: application/json
    
    {
      "data": {
        "type": "wallet",
        "id": "4fdf134f5d33982c117a20bf1e9866ffaab826d2f3eeed6c65b14998442a0526",
        "attributes": {
          "account_id": "GCBLMZGOAM5ZMYOSQVHW57NISOCHFE3ISXKOHZ43UBP3K6EMDEXLVCY2",
          "email": "[email protected]",
          "keychain_data": "eyJJViI6IldsSkFUdEFydmljZTJjdWkiLCJjaXBoZXJUZXh0IjoiaGtFa2UzZlFSdVNFdTIzdVhhK0JFa2ZCQzFDL1ZqVXFydE9TUXMrU3hsOUkzSVRHWXNRTXVhRkI2eDVjaG1HZnM1U28zc0UwNDRWYXkrOFY1RWU2Nk5tNWlnemVIbjh5UENiNXFrYmd0V0E2SFNobmo2VUdMUVNlODN2MjJ6TnhGZ3R6VWtsMDFiS25RTmJIS3preEF6d1g2MVJxTlc0dS9iTmJWV1d1YU43TTZJYWZkaVBEV3B6MzFUdFJDT3grNFQzNHV6VUZ4QTloMUE9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9",
          "verified": false
        },
        "relationships": {}
      }
    }
    

    Create wallet requests should contain following resources:

    Wallet

    FieldDescription
    idwallet ID
    account_idclient-generated account address
    saltclient-generated salt
    keychain_dataencoded keychain data
    emailwallet email address

    KDF

    FieldDescription
    idversion of KDF parameters used to derive wallet data

    Factor

    Keychain derived using same email/password but with different account and salt. Used as second factor to confirm password possession.

    Recovery

    Keychain derived using email and recovery seed as password. Used to recover access to account if password were lost.

    Response

    Succeeded request will have response with current wallet state.

    Wallet verification

    PUT /wallets/4fdf134f5d33982c117a20bf1e9866ffaab826d2f3eeed6c65b14998442a0526/verification HTTP/1.1
    Content-Type: application/json
    
    {
        "data": {
            "attributes": {
                "token": "JOqIgfCNSjnGWDrTPWbW"
            }   
        }
    }
    
    HTTP/1.1 204
    
    const actions = Object.freeze({
      walletConfirmation: 1
    })
    
    const href = 'https://client.tokend.io/r/eyAic3RhdHVzIjoyMDAsImF...G4zbmZqbWZ4OXA1OGdlbzVzdHQ5In19'
    const encodedAction = href.split('/r')[1]
    const decodedAction = atob(encodedAction)
    
    if (decodedAction.type === actions.walletConfirmation) {
      await sdk.api.wallets.verifyEmail(encodedAction)
    }
    

    PUT /wallets/:id/verification

    Once wallet is created and verified is false user should receive email with verification link with client router payload.

    FieldDescription
    :idRelated wallet id
    tokenEmail verification token

    Requesting verification resend

    POST /wallets/4fdf134f5d33982c117a20bf1e9866ffaab826d2f3eeed6c65b14998442a0526/verification HTTP/1.1
    
    HTTP/1.1 204
    
    const walletId = '4fdf134f5d33982c117a20bf1e9866ffaab826d2f3eeed6c65b14998442a0526'
    
    await sdk.api.wallets.resendEmal(walletId)
    

    POST /wallet/:id/verification

    FieldDescription
    :idRelated wallet id

    Rate limits may apply, instant delivery is not guaranteed.

    Get Wallet

    GET /wallets/8ba282a0ca7c096c702507b6ec6e0a4dd0d1b26d6c543469eb51e68e72bf4fba HTTP/1.1
    
    
    HTTP/1.1 200
    Content-Type: application/json
    
    {
      "data": {
        "type": "wallet",
        "id": "8ba282a0ca7c096c702507b6ec6e0a4dd0d1b26d6c543469eb51e68e72bf4fba",
        "attributes": {
          "account_id": "GBKPHVR3Q4ZSHHZJT4GZYGHIMVMJBJLC44TE37BJK276URNUPF5XVJ4V",
          "email": "[email protected]",
          "keychain_data": "eyJJViI6IlRaRHppWWRTNEdKMjBYbisiLCJjaXBoZXJUZXh0Ijoib1MwTjVpaE1qcEozNUlsTDJWd1FsTzFvODJpb0JwOVFHdkY1eVBqcWREQk5XR29FTmM4eUEzeGhVcSs2UW1IeVMwNysxVXlLd0lzSThxYzZFRk04TEtSNTBNZ0xSZVE1eFpjdFdKUlk4dGhhMFJtWHdteC9iWlBwQVBwekM5Y09LNUE1V3B2YitsSENhQU1VOEU2aDlxK0U2WjdWbTI3aDRJYkdRUlovQkk3MHNWRWVDOHVVN09DMXBHcExQMHh3aTUzQWtsZ1puclVoK3c9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9",
          "verified": true,
          "last_sent_at": "2018-05-14T13:18:19.41825Z"
        },
        "relationships": {}
      }
    }
    
    let wallet = await sdk.api.wallets.get('[email protected]', '[email protected]')
    console.log(wallet.secretSeed);
    /* =>
    SDHW3EV5FJ3OXGU533ADODLT4J2QV5U6NASTBX4A5ZHVAPRUHTZ2DQBO
    */
    

    GET /wallets/:id

    Request params

    ParamDescription
    :idwallet ID

    🔒 Update wallet

    PUT /wallets/8ba282a0ca7c096c702507b6ec6e0a4dd0d1b26d6c543469eb51e68e72bf4fba HTTP/1.1
    Content-Type: application/json
    
    {
      "data":{
        "id":"47adbefa00e955d4c34772e0d6b0a97ff0ce4ddd47bce9d8bd97e63e4840938b",
        "attributes":{
          "account_id":"GBMXNDLN3KLPWOP2SMNVCWVU2FEJRLRFPDLRTES7WLISH4VRBB22GLPW",
          "email":"[email protected]",
          "salt":"r4oSHAtRALF8wdYdjNr1ZQ==",
          "keychain_data":"eyJJViI6Ikh5NnhHdStTa3pSaCt6VE4iLCJjaXBoZXJUZXh0IjoiaUQ0V3kwN0Nob3ZMOUpaU1R5V2VtSkFvcGpWWDRISk1rOC84MjluUTFaeGljY0tMNUFIck9wbnBQSkZya3JNLytoeFBuSVZTNWw3UUxrRU55eEdKL0U0c2ZhUENRekt1MHh3NU5Zd2hmUHNmNkc3bSs4SSt0UXNwSFZjVlA4WlNicG9pWE9VT20ySEk5QTRDejdZMmZCbllzNGNibHpRbldQTStGbU1mcUwwblcyVWhMR1loSGVlbXEwU1dYRVBndjB4WWVsVHA1QUQ2eHc9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9"
        },
        "type":"wallet",
        "relationships":{
          "transaction":{
            "data":{
              "attributes":{
                "envelope":"AAAAAPS5PT9kSdTrENi5O28W3Xoepw1GSO0TgBcUmAo2SYfAAAAAAAAAAAAAAAAAAAAAAAAAAABbvcAaAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAFl2jW3alvs5+pMbUVq00UiYriV41xmSX7LRI/KxCHWjAAAAAT////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNkmHwAAAAEDTI5y0Hzj5AlypetThaUEa3dsm74xWh26RfAlE0e5CLZfiiUzz54i4ozFig1rfWrHc7CxOHs596FLgnvU1IcwD"
              }
            }
          },
          "kdf":{
            "data":{
              "type":"kdf",
              "id":"2"
            }
          },
          "factor":{
            "data":{
              "type":"password",
              "attributes":{
                "account_id":"GANIEAF4HDC5MMFKTW6JTKSEV3SIKUTK2JKNAG3VQIXXHREQ4OVODVDF",
                "keychain_data":"eyJJViI6IjM3K0NESHhJTVpZM00rU1EiLCJjaXBoZXJUZXh0IjoiaGJmWFgzT3h0ODFSS0NxK1dBN2JzTmlYb3JMbzRSejNSSENRMFVsOGhOYUlnV1NJR1lhcXpsKzhoaml5R3plWWN0eUdCYXJzTHlXQkcrRlVucTZrSFdKRkY1WkF6cVBpZk9VOEN0VWdWaEVXUmxPdGV5M3FoWHFIajRMbFNBWUVUY21FTU9lK2E5Wkt3N1llb1laTlJjR1dTUEVDQ3prMTl0YVcweWZ0Z1dKSDE2STY4b2w1VmRlK3U2WWhCWlpVbE9samRVMEhueDlPSmc9PSIsImNpcGhlck5hbWUiOiJhZXMiLCJtb2RlTmFtZSI6ImdjbSJ9",
                "salt":"0JObhkz7H5SfbhohOjIUpw=="
              }
            }
          }
        }
      }
    }
    
    HTTP/1.1 204
    

    PUT /wallets/:id

    Request is similar to wallet create but also contains additional transaction resource used to update account signers.

    Transaction

    ParamDescription
    envelopebase64 encoded transaction envelope to update account signers

    Wallet changes will be commited only if blockchain transaction submission is successful.

    Successful request might update wallet ID if new password were used during derivation

    Users

    Attributes

    FieldDescription
    emailemail address provided during wallet creation
    statecurrent user state, see below
    reject_reasoncurrent KYC request reject reason, if applicable
    recovery_addresswallet recovery seed public key

    Types

    NOTE: KS types are different from XDR ones, to allow bitmask filtering

    ValueFilter
    not_verified1
    syndicate2
    general4

    States

    ValueFilterDescription
    nil1Initial user state
    waiting_for_approval2User is waiting for KYC approval
    approved4User has approved KYC
    rejected8User has rejected KYC

    🔒 Create user

    PUT /users/GBT3XFWQUHUTKZMI22TVTWRA7UHV2LIO2BIFNRCH3CXWPYVYPTMXMDGC HTTP/1.1
    
    HTTP/1.1 204
    
    const id = 'GBT3XFWQUHUTKZMI22TVTWRA7UHV2LIO2BIFNRCH3CXWPYVYPTMXMDGC'
    
    await sdk.api.users.create(id)
    

    PUT /users/:address

    ParametersDescription
    :addressAccount ID generated during wallet creation, it will be also used as ledger account identifier

    Only verified wallets are allowed to create user entity.

    Request, if successful, will generate ledger account entity with the same address that will be used to perform transaction on blockchain.

    🔒 Get user

    GET /users/GBT3XFWQUHUTKZMI22TVTWRA7UHV2LIO2BIFNRCH3CXWPYVYPTMXMDGC HTTP/1.1
    
    
    HTTP/1.1 200
    Content-Type: application/vnd.api+json
    
    {
      "data": {
        "type": "not_verified",
        "id": "GD2LSPJ7MRE5J2YQ3C4TW3YW3V5B5JYNIZEO2E4AC4KJQCRWJGD4BQFE",
        "attributes": {
          "email": "[email protected]",
          "state": "nil",
          "recovery_address": "GCEAV6CDK2ASOB3CSMZMGSJ7KOFUQLV72DTULSFEPC5WKLD7YNFK5633",
          "created_at": "2018-04-07T17:43:52.868157Z",
          "updated_at": "2018-04-07T17:43:56Z",
          "airdrop_state": "eligible"
        },
        "relationships": {}
      }
    }
    
    const id = 'GBT3XFWQUHUTKZMI22TVTWRA7UHV2LIO2BIFNRCH3CXWPYVYPTMXMDGC'
    const user = await sdk.api.users.get(id)
    console.log(user.data)
    /*
     => {
        type: ...,
        email: ...,
        ....
     }
    */
    

    GET /users/:address

    ParametersDescription
    :addressAccount ID generated during wallet creation, it will be also used as ledger account identifier

    Accounts

    🔒 Get account by ID

    GET /accounts/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3 HTTP/1.1
    Content-Type: application/json
    
    {
      "id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
      "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
      "is_blocked": false,
      "block_reasons_i": 0,
      "block_reasons": [],
      "account_type_i": 6,
      "account_type": "AccountTypeSyndicate",
      "referrer": "",
      "thresholds": {
        "low_threshold": 0,
        "med_threshold": 0,
        "high_threshold": 0
      },
      "balances": [
        {
          "balance_id": "BC4KJXXXGWLOZPKOMFNV33XS3WWPD2STKMFWE5YBSL5P6AVWTJ4OLAZZ",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "USD",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        },
        {
          "balance_id": "BDA5XOKOHG2IRYSDCU442GQKEPATIZP62QXFVCYR4J37O56WBJVV4OCH",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "BTC",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        },
        {
          "balance_id": "BDHTFOKCCWSJKQV3M7YPISAXOSEU34VPN64WJ3FUJJXZDMFYLDDVJKRZ",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "ETH",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        }
      ],
      "signers": [
        ...
      ],
      "policies": {
        "account_policies_type_i": 0,
        "account_policies_types": null
      },
      "account_kyc": {
        "KYCData": {
          "blob_id": "BQJYZCADPKJRNUBN33MFMOUTKSASBANFHYBGZSF25KRP372NLU4Q"
        }
      },
      "external_system_accounts": [
        {
          "type": {
            "name": "Bitcoin",
            "value": 1
          },
          "data": "mqsJMEat8sJuEcYrxPfcheW47vTozMTV6D",
          "asset_code": "BTC"
        },
        {
          "type": {
            "name": "Ethereum",
            "value": 2
          },
          "data": "0xcA240552772229b5566a8A772F92158142f4f7aC",
          "asset_code": "ETH"
        },
        {
          "type": {
            "value": 4
          },
          "data": "0x0C0f09adE81f1671a6a73755D504c7595b8dDc89",
          "expires_at": "2018-08-18T17:30:37Z"
        }
      ],
      "referrals": []
    }
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    
    const { data } = await sdk.horizon.accounts.get(id)
    

    Return specific account by ID.

    URL params

    ParameterDescription
    idThe ID of the account

    Get account limits

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/limits HTTP/1.1
    Content-Type: application/json
    
    {
      "limits": {
        "daily_out": "100.000000",
        "weekly_out": "200.000000",
        "monthly_out": "300.000000",
        "annual_out": "400.000000"
      }
    }
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    
    const { data } = await sdk.horizon.accounts.getLimits(id)
    

    Returns limits imposed on specific account

    URL params

    ParameterDescription
    idThe ID of the account

    Get account signers

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/signers HTTP/1.1
    Content-Type: application/json
    
    {
      "signers": [
        {
          "public_key": "GDTPGOO2N4PDZKR2BBHKEV6TE3BPGFRD4W5RVDRVXY7BGDCAPPOKGYCW",
          "weight": 255,
          "signer_type_i": 268435455,
          "signer_types": [
            {
              "name": "SignerTypeReader",
              "value": 1
            },
            {
              "name": "SignerTypeNotVerifiedAccManager",
              "value": 2
            },
            ...
            {
              "name": "SignerTypeKeyValueManager",
              "value": 134217728
            }
          ],
          "signer_identity": 0,
          "signer_name": ""
        },
        {
            "public_key": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "weight": 255,
            "signer_type_i": 268435455,
            "signer_types": [...],
            "signer_identity": 0,
            "signer_name": ""
        }
      ]
    }
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3
    
    const { data } = await sdk.horizon.getSigners(id)
    

    Returns information about all account signers.

    URL params

    ParameterDescription
    idThe ID of the account

    Get account signer by id

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/signer/GDTPGOO2N4PDZKR2BBHKEV6TE3BPGFRD4W5RVDRVXY7BGDCAPPOKGYCW HTTP/1.1
    Content-Type: application/json
    
    {
          "public_key": "GDTPGOO2N4PDZKR2BBHKEV6TE3BPGFRD4W5RVDRVXY7BGDCAPPOKGYCW",
          "weight": 255,
          "signer_type_i": 268435455,
          "signer_types": [
            {
              "name": "SignerTypeReader",
              "value": 1
            },
            {
              "name": "SignerTypeNotVerifiedAccManager",
              "value": 2
            },
            ...
            {
              "name": "SignerTypeKeyValueManager",
              "value": 134217728
            }
          ],
          "signer_identity": 0,
          "signer_name": ""
        }
    
    const accountId = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    const signerId = 'GDTPGOO2N4PDZKR2BBHKEV6TE3BPGFRD4W5RVDRVXY7BGDCAPPOKGYCW'
    
    const { data } = await sdk.horizon.getSigner(signerId, accountId)
    

    Returns information about specific account signer.

    URL params

    ParameterDescription
    idThe ID of the account
    signer_idThe ID of the signer

    Get account KYC

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/account_kyc HTTP/1.1
    Content-Type: application/json
    
    {
      "KYCData": {
        "blob_id": "CLHFZSU4WIQIVBVVT7QFDNWIH4LKF6NQOXUCDW5NJUH7MWWDRFIQ"
      }
    }
    
    const accountId = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    const { data } = await sdk.horizon.getAccountKyc(accountId)
    

    Return KYC information for specific account. This request returns only blob_id, which is actually a JSON sting, so to get full KYC data, you'll need to perform one more request, see how to get blob from API

    URL params

    ParameterDescription
    idThe ID of the account

    Get account balances

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/balances HTTP/1.1
    Content-Type: application/json
    
    [
        {
          "balance_id": "BC4KJXXXGWLOZPKOMFNV33XS3WWPD2STKMFWE5YBSL5P6AVWTJ4OLAZZ",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "USD",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        },
        {
          "balance_id": "BDA5XOKOHG2IRYSDCU442GQKEPATIZP62QXFVCYR4J37O56WBJVV4OCH",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "BTC",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        },
        {
          "balance_id": "BDHTFOKCCWSJKQV3M7YPISAXOSEU34VPN64WJ3FUJJXZDMFYLDDVJKRZ",
          "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "asset": "ETH",
          "balance": "0.000000",
          "locked": "0.000000",
          "require_review": false
        }
    ]
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    
    const { data } = await sdk.horizon.accounts.getBalances(id)
    

    Returns account balances.

    URL params

    ParameterDescription
    idThe ID of the account

    🔒 Get account balanced details

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/balances/details HTTP/1.1
    Content-Type: application/json
    
    [
      {
        "balance_id": "BBHGNOTSAF5Y6K7C3YDBV2SKGBTKDWQVJ2ATPRTOU764RRY3N5E2K3LK",
        "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
        "asset": "QTK",
        "balance": "0.000000",
        "locked": "0.000000",
        "require_review": false,
        "asset_details": {
          "code": "QTK",
          "owner": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
          "available_for_issuance": "0.000000",
          "preissued_asset_signer": "GAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV4",
          "max_issuance_amount": "149680.000000",
          "issued": "149680.000000",
          "pending_issuance": "0.000000",
          "policy": 1,
          "policies": [
              ...
          ],
          "details": {
            "logo": {
              "key": "dpurgh4infpebjhcost7fvn4glq422soy26drbdtzrif3llgki2pptpn",
              "mime_type": "image/jpeg",
              "name": "flat,800x800,070,f.jpg",
              "type": ""
            },
            "name": "Q-Token",
            "terms": {
              "key": "dpurehuinfpebjhcost7fvjllw3uvis7fep7lgmm37fulzeefm7da2hg",
              "mime_type": "image/jpeg",
              "name": "flat,800x800,070,f.jpg",
              "type": ""
            }
          },
          "sales": [
            ...
          ]
        },
        "converted_balance": "0.000000",
        "converted_locked": "0.000000",
        "converted_to_asset": "USD"
      }
    ]
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    
    const { data } = await sdk.horizon.accounts.getBalancesDetails(id)
    

    Returns extended account balances details. Includes asset details for every balance and sales created for this asset, if present.

    URL params

    ParameterDescription
    idThe ID of the account

    🔒 📄 Get account operations

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/operations HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "667072845582337",
            "paging_token": "667072845582337",
            "transaction_id": "667072845582336",
            "source_account": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
            "type": "create_account",
            "type_i": 0,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-05-19T14:19:11Z",
            "participants": [
              {
                "account_id": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP"
              },
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3"
              }
            ],
            "funder": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
            "account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "account_type": 5
          },
          {
            "id": "668022033354753",
            "paging_token": "668022033354753",
            "transaction_id": "668022033354752",
            "source_account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "type": "manage_balance",
            "type_i": 9,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-05-19T14:37:36Z",
            "participants": [
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3"
              }
            ]
          }
        ]
      }
    }
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    const query = {
      order: 'desc',
      limit: 10
    }
    
    const response = await sdk.horizon.accounts.getOperations(query, id)
    const data = response.data
    
    const nextPageResponse = await response.next()
    

    Returns all operations that somehow refer the specific account. For more details, see [Operations] [link_book_operations]

    The request returns data in multiple pages, for more information, see Pagination

    URL params

    ParameterDescription
    idThe ID of the account

    Query params

    ParameterTypeDefaultDescription
    balance_idstringIf present, the result will return only operations for specific balance
    assetstringIf present, the result will return only operations for specific asset
    tx_idstringIf present, the result will return only operations from specific transaction with corresponding ID
    referencestringIf present, the result will return only operations with specific reference
    sincestringShould be valid ISO 8601 If present, the result will return only operations that was submitted after specific date
    tostringShould be valid ISO 8601 If present, the result will return only operations that was submitted before specific date
    completed_onlytrueIf present, the result will return only operation with success/failed state (deposits/withdrawals/offers can have different states)
    skip_canceledIf present, the result will include operations with canceled state (offers can be canceled)
    pending_onlyfalseIf present, the result will return only operation with success/failed state (deposits/withdrawals/offers can have different states)

    🔒 Get account payments

    GET /account/GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3/payments HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "681911957590017",
            "paging_token": "681911957590017",
            "transaction_id": "681911957590016",
            "source_account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "type": "create_issuance_request",
            "type_i": 3,
            "state_i": 2,
            "state": "success",
            "identifier": "13",
            "ledger_close_time": "2018-05-19T19:07:09Z",
            "participants": [
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3"
              },
              {
                "account_id": "GCW3Y4ZOS3RN3VG62PF3YDSGJ7VC2HPZ5FCMFYIWBSOAIN6VOOKFDOEK",
                "balance_id": "BDWCWE3YC6J4QKS5W5X3OQC47CGPH4JLU5IDY5QCHTX6GT3T54UWE3XA"
              }
            ],
            "reference": "some reference",
            "amount": "123.000000",
            "asset": "lazycat",
            "fee_fixed": "0.000000",
            "fee_percent": "0.000000",
            "external_details": {}
          },
          {
            "id": "735629113561089",
            "paging_token": "735629113561089",
            "transaction_id": "735629113561088",
            "source_account": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "type": "payment_v2",
            "type_i": 23,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-05-20T12:29:36Z",
            "participants": [
              {
                "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
                "balance_id": "BBG5QP3T6BQJP7FWD6OMSONEZSIMAQJI44DJH6LSSRJUGVWJITNBNA4R"
              },
              {
                "account_id": "GDRQSTLORA2KOPBELTTM2J4LQKZQQ7OIL6LE2DEMLUOLP572E2YTPROT",
                "balance_id": "BA4VSN4C33YEC2RIEMVQJYPG4BWYJKJB3CS4UYC2BFQ44TW2FUTT5KYR"
              }
            ],
            "payment_id": 2,
            "from": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "to": "GDRQSTLORA2KOPBELTTM2J4LQKZQQ7OIL6LE2DEMLUOLP572E2YTPROT",
            "from_balance": "BBG5QP3T6BQJP7FWD6OMSONEZSIMAQJI44DJH6LSSRJUGVWJITNBNA4R",
            "to_balance": "BA4VSN4C33YEC2RIEMVQJYPG4BWYJKJB3CS4UYC2BFQ44TW2FUTT5KYR",
            "amount": "0.001000",
            "asset": "USD4",
            "source_fee_data": {
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "USD4",
              "fixed_fee": "0.000000"
            },
            "destination_fee_data": {
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "USD4",
              "fixed_fee": "0.000000"
            },
            "source_pays_for_dest": true,
            "subject": "wqeqweq",
            "reference": "",
            "source_sent_universal": "0.000000"
          }
        ]
      }
    }
    
    const id = 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    const query = {
      order: 'desc',
      limit: 10
    }
    
    const response = await sdk.horizon.accounts.getPayments(query, id)
    const data = response.data
    
    const nextPageResponse = await response.next()
    

    Returns list of account payments.

    The same as /payments request with account_id filter

    🔒 Get account transactions

    GET /accounts/GDQNYWBSE3YIJOXVTB5YD6BLRATXYWKGFBSDTXVDQTUQHGSHRLK7EPAB/transactions HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "meta": {
          "latest_ledger": {
            "sequence": 204328,
            "closed_at": "2018-04-19T13:29:06Z"
          }
        },
        "records": [
          {
            "id": "e7e82176fccc6f2783e9034bdcdffbc32bafb131b40603b7aa4ac36d18b97fc1",
            "paging_token": "869906971103232",
            "hash": "e7e82176fccc6f2783e9034bdcdffbc32bafb131b40603b7aa4ac36d18b97fc1",
            "ledger": 202541,
            "created_at": "2018-04-19T11:00:10Z",
            "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "fee_paid": 0,
            "operation_count": 1,
            "envelope_xdr": "AAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gDn5G9ZZi67sAAAAAAAAAAAAAAABa4aMlAAAAAAAAAAEAAAAAAAAAAAAAAADg3FgyJvCEuvWYe4H4K4gnfFlGKGQ53qOE6QOaR4rV8gAAAACeeatUD6nle2qsvoEwZ4kNe1/0pbn56JMKphQ6GFF99wAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAATLIXMAAAABAW4DsZ7xheEcAcslCGMMLja1FD0WYd9CR+7LCmH66Nqh5eUfnB7gpe/5WplafBkymDRxXxKGiR46c7pPllmrGBQ==",
            "result_xdr": "AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAA4NxYMibwhLr1mHuB+CuIJ3xZRihkOd6jhOkDmkeK1fIAAAABAAAAIm1xbXRWTFdScml4Q3ZBZmtiQXV4a2V0YTRheDJVbkdmZFMAAAAAAAAAAAAA4NxYMibwhLr1mHuB+CuIJ3xZRihkOd6jhOkDmkeK1fIAAAACAAAAKjB4QTcyMTFlQTBFMTIzQTY1QWE2RWJGQjViYTkwNTFGOWJCNTM0QTVkNAAAAAAAAAAAAAAAAAAA",
            "result_meta_xdr": "AAAAAAAAAAEAAAAHAAAAAAADFy0AAAAQAAAAAODcWDIm8IS69Zh7gfgriCd8WUYoZDneo4TpA5pHitXyAAAAAQAAACJtcW10VkxXUnJpeEN2QWZrYkF1eGtldGE0YXgyVW5HZmRTAAAAAAAAAAAAAAAAAAAAAxctAAAAEAAAAADg3FgyJvCEuvWYe4H4K4gnfFlGKGQ53qOE6QOaR4rV8gAAAAIAAAAqMHhBNzIxMWVBMEUxMjNBNjVBYTZFYkZCNWJhOTA1MUY5YkI1MzRBNWQ0AAAAAAAAAAAAAAAAAAAAAxctAAAAAAAAAADg3FgyJvCEuvWYe4H4K4gnfFlGKGQ53qOE6QOaR4rV8gAAAACeeatUD6nle2qsvoEwZ4kNe1/0pbn56JMKphQ6GFF99wEAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxctAAAACQAAAADg3FgyJvCEuvWYe4H4K4gnfFlGKGQ53qOE6QOaR4rV8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxctAAAABAAAAADcS6h6yQRirxtpxOMwHXTR9HnD+f67kJWfOr1FYSt6LwAAAANCVEMAAAAAAODcWDIm8IS69Zh7gfgriCd8WUYoZDneo4TpA5pHitXyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFy0AAAAEAAAAADeik7tFuaDIbyJsGImhj05MbqcQGIEEEhRTOUFj/575AAAAA0VUSAAAAAAA4NxYMibwhLr1mHuB+CuIJ3xZRihkOd6jhOkDmkeK1fIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMXLQAAAAQAAAAAeU79IQvquCbbTecfJe2ZZ2YdWAXl8TepldqyXTjyXEQAAAADU1dNAAAAAADg3FgyJvCEuvWYe4H4K4gnfFlGKGQ53qOE6QOaR4rV8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
            "fee_meta_xdr": "AAAAAA==",
            "memo_type": "none",
            "signatures": [
              "W4DsZ7xheEcAcslCGMMLja1FD0WYd9CR+7LCmH66Nqh5eUfnB7gpe/5WplafBkymDRxXxKGiR46c7pPllmrGBQ=="
            ],
            "valid_after": "1970-01-01T00:00:00Z",
            "valid_before": "2018-04-26T10:00:06Z"
          },
          ...
        ]
      }
    }
    

    Returns list of account transactions.

    The same as /transactions request with account_id filter

    ParameterDescription
    idThe ID of the account

    🔒 Get account pending offers

    GET /accounts/GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T/offers?is_buy=true&order_book_id=0 HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "paging_token": "333",
            "owner_id": "GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T",
            "offer_id": 333,
            "order_book_id": 0,
            "base_balance_id": "BDAS3BZ3CWUB56I2IVCEK3MUWGMLRSXPAEM634YHZWGKSGD7RNSZDIJT",
            "quote_balance_id": "BCGYBQEWG3MTWFBHVPHOYTXXKWK6PW6IF3QACB7QW2KIUBU3UIJMAYXI",
            "fee": "0.000000",
            "base_asset_code": "RTOKEN",
            "quote_asset_code": "BTC",
            "is_buy": true,
            "base_amount": "1.000000",
            "quote_amount": "9.000000",
            "price": "9.000000",
            "created_at": "2018-09-04T16:10:42Z"
          },
          ...
        ]
      }
    }
    

    Returns list of pending offers for specified account

    Path params

    ParameterDescription
    idThe ID of the account

    Query params

    ParameterTypeDefaultDescription
    base_assetstringBase asset of the pair
    quote_assetstringQuote asset of the pair
    is_buybooleanfalseFilters the result items by is_buy property
    order_book_idintegerIf present, the result will contain only items from certain order book. For secondary market use 0

    🔒 Get account offers history

    GET /accounts/GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T/offers_history HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "_links": {
              ...
            },
            "id": "3116763277430785",
            "paging_token": "3116763277430785",
            "transaction_id": "3116763277430784",
            "source_account": "GALHS6JXCSMAGXIOCGQYYEJ7AKI3AXWXLRNNFN3EWAIQBHAN6YNRYUTK",
            "type": "manage_offer",
            "type_i": 16,
            "state_i": 7,
            "state": "fully matched",
            "identifier": "0",
            "ledger_close_time": "2018-05-22T12:24:08Z",
            "participants": [
              {
                "account_id": "GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T",
                "balance_id": "BCWMW6KFXS5QGGKQUO4TRUEITHT53HKU76Z56KSVOMNXD4NHS2H3QQNG",
                "effects": [
                  {
                    "base_asset": "CTOKEN",
                    "is_buy": true,
                    "matches": [
                      {
                        "base_amount": "0.250000",
                        "fee_paid": "0.000000",
                        "price": "5.000000",
                        "quote_amount": "1.250000"
                      }
                    ],
                    "quote_asset": "BTC"
                  }
                ]
              },
              ...
            ],
            "operation_fee": "0.000000",
            "is_buy": false,
            "base_asset": "",
            "amount": "0.250000",
            "price": "5.000000",
            "fee": "0.000000",
            "offer_id": 0,
            "order_book_id": 0,
            "is_deleted": true
          },
          ...
        ]
      }
    }
    

    Returns offer history for specified account

    The same as /operations request with account_id filter but only manage_offer operations are returned

    Path params

    ParameterDescription
    idThe ID of the account

    🔒 Get account references

    GET /accounts/GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T/references HTTP/1.1
    Content-Type: application/json
    
    {
      "data": [
        {
          "reference": "024f3f36b9a7e8f0cd2ce587269626cce436bb13a60628276312b8cd0e41a40d"
        }
      ]
    }
    

    Returns list of account withdrawal references

    Path params

    ParameterDescription
    idThe ID of the account

    Transactions

    🔒 📄 Get transactions

    GET /transactions HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "meta": {
          "latest_ledger": {
            "sequence": 19,
            "closed_at": "2018-04-07T17:40:26Z"
          }
        },
        "records": [
          {
            "id": "d3275938107d7dd585ef44b717e67597e0c736591b2901708c90162ea94e4e0c",
            "paging_token": "68719480832",
            "hash": "d3275938107d7dd585ef44b717e67597e0c736591b2901708c90162ea94e4e0c",
            "ledger": 16,
            "created_at": "2018-04-07T17:40:11Z",
            "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "fee_paid": 0,
            "operation_count": 1,
            "envelope_xdr": "AAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAAAAAAAAAAAAAAAAAAAAAABa0i7mAAAAAAAAAAEAAAAAAAAACwAAAAAAAAAAAAAAAAAAAANCVEMAAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gf/////////8AAAAAAAAAAAAAABoAAABweyJuYW1lIjoiQlRDIG5hbWUiLCJsb2dvIjp7InVybCI6ImxvZ29fdXJsIiwidHlwZSI6ImxvZ29fdHlwZSIsImtleSI6IiJ9LCJ0ZXJtcyI6eyJrZXkiOiIiLCJ0eXBlIjoiIiwibmFtZSI6IiJ9fQAAAAAAAAAAAAAAAAAAAAHcMR1gAAAAQD5Nvta+ablzOTlRpEaGJHukvu/MUxVU9GFlZZJx1haStSKqWAb2h8yUFoi37SVoB/yeYS38h6GBY2jSq5encgg=",
            "result_xdr": "AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAALAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA",
            "result_meta_xdr": "AAAAAAAAAAEAAAAGAAAAAAAAABAAAAAPAAAAAAAAAAErlz1RoQZGUFdFqn8chgo4Pqc2HawbQXecwHncOFhw3AAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAAAAAAAA/gOk4hygjy6sIkhNFm0QNLTDPI+4aiNvsBsqkdwxHWAAAAABAAAAA0JUQwAAAAAAWskCewAAAAAAAAADQlRDAAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYH//////////AAAAAAAAAAAAAAAaAAAAcHsibmFtZSI6IkJUQyBuYW1lIiwibG9nbyI6eyJ1cmwiOiJsb2dvX3VybCIsInR5cGUiOiJsb2dvX3R5cGUiLCJrZXkiOiIifSwidGVybXMiOnsia2V5IjoiIiwidHlwZSI6IiIsIm5hbWUiOiIifX0AAAAAAAAAAAAAAAAAAAACAAAADwAAAAAAAAABAAAAAAAAAAAAAAAQAAAABAAAAABHpRUSjLeMcIkCxDSDaMsUhga+5qbpX/JFqj2BAo80FwAAAANCVEMAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAAAG5vr7InpHCbVCOpQTA7srr1w00rB0qJaWyvRuyqqxSRAAAAA0JUQwAAAAAA/gOk4hygjy6sIkhNFm0QNLTDPI+4aiNvsBsqkdwxHWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAAfvxfnJJ6wluOQrvUpNV1aKa0Ngah+n3ZiELlYDnZzo8AAAADQlRDAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAABgAAAANCVEMAAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAcHsibmFtZSI6IkJUQyBuYW1lIiwibG9nbyI6eyJ1cmwiOiJsb2dvX3VybCIsInR5cGUiOiJsb2dvX3R5cGUiLCJrZXkiOiIifSwidGVybXMiOnsia2V5IjoiIiwidHlwZSI6IiIsIm5hbWUiOiIifX1//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAA==",
            "fee_meta_xdr": "AAAAAA==",
            "memo_type": "none",
            "signatures": [
              "Pk2+1r5puXM5OVGkRoYke6S+78xTFVT0YWVlknHWFpK1IqpYBvaHzJQWiLftJWgH/J5hLfyHoYFjaNKrl6dyCA=="
            ],
            "valid_after": "1970-01-01T00:00:00Z",
            "valid_before": "2018-04-14T16:40:07Z"
          },
         ...
        ]
      }
    }
    

    Returns list of transactions.

    Query params

    ParameterTypeDefaultDescription
    account_idstringIf present, the result will contain only transactions related to the specified account

    The request returns data in multiple pages, for more information, see Pagination

    🔒 📄 Get transactions with ledger changes history

    GET /v2/transactions HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "meta": {
          "latest_ledger": {
            "sequence": 16,
            "closed_at": "2018-04-07T17:40:11Z"
          }
        },
        "records": [
          {
            "id": "d3275938107d7dd585ef44b717e67597e0c736591b2901708c90162ea94e4e0c",
            "paging_token": "68719480832",
            "hash": "d3275938107d7dd585ef44b717e67597e0c736591b2901708c90162ea94e4e0c",
            "ledger": 16,
            "created_at": "2018-04-07T17:40:11Z",
            "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "fee_paid": 0,
            "operation_count": 1,
            "envelope_xdr": "AAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAAAAAAAAAAAAAAAAAAAAAABa0i7mAAAAAAAAAAEAAAAAAAAACwAAAAAAAAAAAAAAAAAAAANCVEMAAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gf/////////8AAAAAAAAAAAAAABoAAABweyJuYW1lIjoiQlRDIG5hbWUiLCJsb2dvIjp7InVybCI6ImxvZ29fdXJsIiwidHlwZSI6ImxvZ29fdHlwZSIsImtleSI6IiJ9LCJ0ZXJtcyI6eyJrZXkiOiIiLCJ0eXBlIjoiIiwibmFtZSI6IiJ9fQAAAAAAAAAAAAAAAAAAAAHcMR1gAAAAQD5Nvta+ablzOTlRpEaGJHukvu/MUxVU9GFlZZJx1haStSKqWAb2h8yUFoi37SVoB/yeYS38h6GBY2jSq5encgg=",
            "result_xdr": "AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAALAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA",
            "result_meta_xdr": "AAAAAAAAAAEAAAAGAAAAAAAAABAAAAAPAAAAAAAAAAErlz1RoQZGUFdFqn8chgo4Pqc2HawbQXecwHncOFhw3AAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAAAAAAAA/gOk4hygjy6sIkhNFm0QNLTDPI+4aiNvsBsqkdwxHWAAAAABAAAAA0JUQwAAAAAAWskCewAAAAAAAAADQlRDAAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYH//////////AAAAAAAAAAAAAAAaAAAAcHsibmFtZSI6IkJUQyBuYW1lIiwibG9nbyI6eyJ1cmwiOiJsb2dvX3VybCIsInR5cGUiOiJsb2dvX3R5cGUiLCJrZXkiOiIifSwidGVybXMiOnsia2V5IjoiIiwidHlwZSI6IiIsIm5hbWUiOiIifX0AAAAAAAAAAAAAAAAAAAACAAAADwAAAAAAAAABAAAAAAAAAAAAAAAQAAAABAAAAABHpRUSjLeMcIkCxDSDaMsUhga+5qbpX/JFqj2BAo80FwAAAANCVEMAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAAAG5vr7InpHCbVCOpQTA7srr1w00rB0qJaWyvRuyqqxSRAAAAA0JUQwAAAAAA/gOk4hygjy6sIkhNFm0QNLTDPI+4aiNvsBsqkdwxHWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAAfvxfnJJ6wluOQrvUpNV1aKa0Ngah+n3ZiELlYDnZzo8AAAADQlRDAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAABgAAAANCVEMAAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAcHsibmFtZSI6IkJUQyBuYW1lIiwibG9nbyI6eyJ1cmwiOiJsb2dvX3VybCIsInR5cGUiOiJsb2dvX3R5cGUiLCJrZXkiOiIifSwidGVybXMiOnsia2V5IjoiIiwidHlwZSI6IiIsIm5hbWUiOiIifX1//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAA==",
            "fee_meta_xdr": "AAAAAA==",
            "memo_type": "none",
            "signatures": [
              "Pk2+1r5puXM5OVGkRoYke6S+78xTFVT0YWVlknHWFpK1IqpYBvaHzJQWiLftJWgH/J5hLfyHoYFjaNKrl6dyCA=="
            ],
            "valid_after": "1970-01-01T00:00:00Z",
            "valid_before": "2018-04-14T16:40:07Z",
            "changes": [
              {
                "effect": 0,
                "entry_type": 15,
                "payload": "AAAAEAAAAA8AAAAAAAAAASuXPVGhBkZQV0WqfxyGCjg+pzYdrBtBd5zAedw4WHDcAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAAEAAAADQlRDAAAAAABayQJ7AAAAAAAAAANCVEMAAAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gf/////////8AAAAAAAAAAAAAABoAAABweyJuYW1lIjoiQlRDIG5hbWUiLCJsb2dvIjp7InVybCI6ImxvZ29fdXJsIiwidHlwZSI6ImxvZ29fdHlwZSIsImtleSI6IiJ9LCJ0ZXJtcyI6eyJrZXkiOiIiLCJ0eXBlIjoiIiwibmFtZSI6IiJ9fQAAAAAAAAAAAAAAAA=="
              },
              {
                "effect": 2,
                "entry_type": 15,
                "payload": "AAAADwAAAAAAAAABAAAAAA=="
              },
              {
                "effect": 0,
                "entry_type": 4,
                "payload": "AAAAEAAAAAQAAAAAR6UVEoy3jHCJAsQ0g2jLFIYGvuam6V/yRao9gQKPNBcAAAADQlRDAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
              },
              {
                "effect": 0,
                "entry_type": 4,
                "payload": "AAAAEAAAAAQAAAAAbm+vsiekcJtUI6lBMDuyuvXDTSsHSolpbK9G7KqrFJEAAAADQlRDAAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
              },
              {
                "effect": 0,
                "entry_type": 4,
                "payload": "AAAAEAAAAAQAAAAAfvxfnJJ6wluOQrvUpNV1aKa0Ngah+n3ZiELlYDnZzo8AAAADQlRDAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
              },
              {
                "effect": 0,
                "entry_type": 6,
                "payload": "AAAAEAAAAAYAAAADQlRDAAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAAD+A6TiHKCPLqwiSE0WbRA0tMM8j7hqI2+wGyqR3DEdYAAAAHB7Im5hbWUiOiJCVEMgbmFtZSIsImxvZ28iOnsidXJsIjoibG9nb191cmwiLCJ0eXBlIjoibG9nb190eXBlIiwia2V5IjoiIn0sInRlcm1zIjp7ImtleSI6IiIsInR5cGUiOiIiLCJuYW1lIjoiIn19f/////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAAAA="
              }
            ]
          },
          ...
        ]
      }
    }
    

    Returns list of transactions with ledger changes history included.

    Query params

    ParameterTypeDefaultDescription
    account_idstringIf present, the result will contain only transactions related to the specified account

    The request returns data in multiple pages, for more information, see Pagination

    🔒 Get transaction by ID

    GET /transactions/b21064dfcc521fe7f7e56d00630aa2675c9b3f5b1a8dd92f74b3c52062d5adb4 HTTP/1.1
    Content-Type: application/json
    
    {
      "id": "b21064dfcc521fe7f7e56d00630aa2675c9b3f5b1a8dd92f74b3c52062d5adb4",
      "paging_token": "73014452224",
      "hash": "b21064dfcc521fe7f7e56d00630aa2675c9b3f5b1a8dd92f74b3c52062d5adb4",
      "ledger": 17,
      "created_at": "2018-04-07T17:40:16Z",
      "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
      "fee_paid": 0,
      "operation_count": 1,
      "envelope_xdr": "AAAAAP4DpOIcoI8urCJITRZtEDS0wzyPuGojb7AbKpHcMR1gAAAAAAAAAAAAAAAAAAAAAAAAAABa0i7rAAAAAAAAAAEAAAAAAAAADwAAAAAAAAADRVRIAAAAAANTVU4AAAAAAEk9itAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdwxHWAAAABAM8AA5OEsbzgc7MVXxI4eaGw6oL275/R2ZSvJQkxQbbxrcbB2TeXPaUDRZmaCK9QcAUVAIaHRajY+9htJwPM3Bg==",
      "result_xdr": "AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAPAAAAAAAAAABJPYrQAAAAAAAAAAA=",
      "result_meta_xdr": "AAAAAAAAAAEAAAABAAAAAAAAABEAAAAMAAAAA0VUSAAAAAADU1VOAAAAAABJPYrQAAAAAEk9itAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "fee_meta_xdr": "AAAAAA==",
      "memo_type": "none",
      "signatures": [
        "M8AA5OEsbzgc7MVXxI4eaGw6oL275/R2ZSvJQkxQbbxrcbB2TeXPaUDRZmaCK9QcAUVAIaHRajY+9htJwPM3Bg=="
      ],
      "valid_after": "1970-01-01T00:00:00Z",
      "valid_before": "2018-04-14T16:40:12Z"
    }
    

    Returns information about a transaction with given identifier.

    Path params

    ParameterDescription
    idThe ID, hash or paging token of the transaction

    🔒 📄 Get transaction operations

    GET /transactions/b21064dfcc521fe7f7e56d00630aa2675c9b3f5b1a8dd92f74b3c52062d5adb4/operations HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "_links": {
              ...
            },
            "id": "73014452225",
            "paging_token": "73014452225",
            "transaction_id": "73014452224",
            "source_account": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "type": "manage_asset_pair",
            "type_i": 15,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-04-07T17:40:16Z",
            "participants": [
              {
                "account_id": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636"
              }
            ],
            "operation_fee": "0.000000",
            "base_asset": "ETH",
            "quote_asset": "SUN",
            "physical_price": "1228.770000",
            "physical_price_correction": "0.000000",
            "max_price_step": "0.000000"
          }
        ]
      }
    }
    

    Returns list of operations performed in the given transaction.

    The request returns data in multiple pages, for more information, see Pagination

    Path params

    ParameterDescription
    idThe ID or hash of the transaction

    🔒 📄 Get transaction payments

    GET /transactions/66e4bce38b9788b818d74e68a90762b664c18df69b58c939aae7d14e1ac73b63/payments HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "_links": {
              ...
            },
            "id": "13383805289107457",
            "paging_token": "13383805289107457",
            "transaction_id": "13383805289107456",
            "source_account": "GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T",
            "type": "payment_v2",
            "type_i": 23,
            "state_i": 2,
            "state": "success",
            "identifier": "0",
            "ledger_close_time": "2018-10-09T12:36:58Z",
            "participants": [
              {
                "account_id": "GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T",
                "balance_id": "BDE6PK62OEHVDBI4ABOH3F4HQNQQDKFWMVXDYQJ63FYAH72CPA65FJVW"
              },
              {
                "account_id": "GDQNYWBSE3YIJOXVTB5YD6BLRATXYWKGFBSDTXVDQTUQHGSHRLK7EPAB",
                "balance_id": "BB4U57JBBPVLQJW3JXTR6JPNTFTWMHKYAXS7CN5JSXNLEXJY6JOEJXQW"
              }
            ],
            "operation_fee": "0.000000",
            "operation_fee_asset": "SWM",
            "payment_id": 93,
            "from": "GAULFBQKQTFHHHZEIRMYVCGTY47FKWEW7P2BY2YT45HAEODAIJUJH23T",
            "to": "GDQNYWBSE3YIJOXVTB5YD6BLRATXYWKGFBSDTXVDQTUQHGSHRLK7EPAB",
            "from_balance": "BDE6PK62OEHVDBI4ABOH3F4HQNQQDKFWMVXDYQJ63FYAH72CPA65FJVW",
            "to_balance": "BB4U57JBBPVLQJW3JXTR6JPNTFTWMHKYAXS7CN5JSXNLEXJY6JOEJXQW",
            "amount": "0.900000",
            "asset": "SWM",
            "source_fee_data": {
              "fixed_fee": "0.000000",
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "SWM"
            },
            "destination_fee_data": {
              "fixed_fee": "0.000000",
              "actual_payment_fee": "0.000000",
              "actual_payment_fee_asset_code": "SWM"
            },
            "source_pays_for_dest": false,
            "subject": "Test",
            "reference": "",
            "source_sent_universal": "0.000000"
          }
        ]
      }
    }
    

    Returns list of payments performed in the given transaction.

    The request returns data in multiple pages, for more information, see Pagination

    Path params

    ParameterDescription
    idThe ID or hash of the transaction

    Submit a transaction

    POST /transactions HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    tx=HEX_ENCODED_TX_ENVELOPE
    
    200 OK
    {  
      "_links":{  
        ...
      },
      "hash":"46595fca1a55158df47cdf00bbfb35bfe888fca8fd62a056a2d9fe1d2c4659b3",
      "ledger":4894559,
      "envelope_xdr":"AAAAAN8bwumT6hrjlzpdE70leR04UmXYMHYTRT/FWFemdoK0AAAAAHvH03cAAAAAAAAAAAAAAABbxdTpAAAAAAAAAAEAAAAAAAAAGQAAAAQAAAAAAAAAMQAAAAAAAAAAAAAAAW2DLNcAAABAWXH3WkdfXnKxhboqkwViZln2G+V8hCdjy+h+FJpnNnFYcQ57AzJ6Tn05nHaAChypnLL9jftnNYqqEo1pCg+nAg==",
      "result_xdr":"AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAZAAAAAAAAACoweDE0MmM4NjNCQmM0ODJCQzNmNmRlMTYxNGZiODFEYzg4MDE4MDBhNDcAAAAAAAAAAAAxAAAAA1NXTQAAAAABAAAAGQAAAAAAAAAAAAAAAAAAAAA=",
      "result_meta_xdr":"AAAAAAAAAAEAAAADAAAAAgAAABAAAAAAyJ78c80nfekO2lyvYmsp/GIWbGYJhPJngV0eXXDH4tIAAAAEAAAAAAAAAAEASq9fAAAAEwAAAAAAAABnAAAABAAAACoweDE0MmM4NjNCQmM0ODJCQzNmNmRlMTYxNGZiODFEYzg4MDE4MDBhNDcAAAAAAAEAAAAA3xvC6ZPqGuOXOl0TvSV5HThSZdgwdhNFP8VYV6Z2grQAAAAAW79LfgAAAABbvKh+xLFUBahsJrkAAAAAAAAAAAAAAAAAAAAAAEqvXwAAABAAAAAA3xvC6ZPqGuOXOl0TvSV5HThSZdgwdhNFP8VYV6Z2grQAAAAEAAAAKjB4MTQyYzg2M0JCYzQ4MkJDM2Y2ZGUxNjE0ZmI4MURjODgwMTgwMGE0NwAAAAAAAAAAAAA="
      "extras":{ }
    }
    

    Submits given transaction. The transaction is being posted as an URL-encoded form paramether.

    If transaction has been failed, the cause can be found in result_codes of the result extras.

    Form params

    ParameterDescription
    txHEX-encoded envelope of the transaction.

    Balances

    📄 Get balances

    GET /balances HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "balance_id": "BBD2KFISRS3YY4EJALCDJA3IZMKIMBV642TOSX7SIWVD3AICR42BOHAK",
            "account_id": "GAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV4",
            "asset": "BTC"
          },
          {
            "balance_id": "BBXG7L5SE6SHBG2UEOUUCMB3WK5PLQ2NFMDUVCLJNSXUN3FKVMKJCXRU",
            "account_id": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "asset": "ETH"
          },
          ...
        ]
      }
    }
    

    Returns list of all balances.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    assetstringIf present, the result will contain only balances of specified asset
    accountstringAccount ID. If present, the result will contain only balances owned by specified account

    Get asset of the balance

    GET /balances/BAKLAUXHAEZXK3ODHAABNPZHRRADH24FZO4F3364VI5CFWXFWEYDW4SY/asset HTTP/1.1
    Content-Type: application/json
    
    {
      "code": "ETH",
      "owner": "",
      "available_for_issuance": "",
      "preissued_asset_signer": "",
      "max_issuance_amount": "",
      "issued": "",
      "pending_issuance": "",
      "policy": 0,
      "policies": null,
      "details": null
    }
    

    Returns asset info for specified balance.

    Path params

    ParameterDescription
    idBalance ID

    Get account ID of the balance

    GET /balances/BAKLAUXHAEZXK3ODHAABNPZHRRADH24FZO4F3364VI5CFWXFWEYDW4SY/account HTTP/1.1
    Content-Type: application/json
    
    {
      "account_id": "GABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVCX"
    }
    

    Returns account ID for specified balance.

    Path params

    ParameterDescription
    idBalance ID

    2FA

    Blobs

    Blobs allow users to store arbitrary text. Any blob has privacy settings and client-provided tags for filtering

    Blob types

    TypeIs PublicFilter
    asset_descriptiont1
    fund_overviewt2
    fund_updatet4
    nav_updatet8
    fund_documentt16
    alphat32
    bravot64
    charliet128
    deltat256
    token_termst512
    token_metricst1024
    kyc_formf2048
    kyc_id_documentf4096
    kyc_poaf8192
    identity_mind_rejectf16384

    🔒 Create user-owned blob

    POST /users/GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3/blobs HTTP/1.1
    Content-Type: application/json
    
    {
        "data": {
            "type": "asset_description",
            "attributes": {
                "value": "foobar"
            }
            "relationships": {
                "some-tag": {
                    "data": {
                        "id": "tag-id"
                    }
                }
            }
        }
    }
    
    
    HTTP/1.1 201
    
    {
        "data": {
            "id": "CMKFL7K43ZG6E4S3QFEYFYM2F7GS2QJHQPLI25PIWFYMT5V4ZOKQ",
            "type": "asset_description",
            "attributes": {
                "value": "foobar"
            },
            "relationships": {
                "some-tag": {
                    "data": {
                        "id": "tag-id"
                    }
                }
            }
        }
    }
    
    const types = sdk.api.blobs.types
    const data = JSON.stringify({
      foo: 'bar'
    })
    const accountId = 'GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3'
    
    const { data } = await sdk.api.blobs.create(types.assetDescription, data, accountId)
    console.log(data.id) // => 'GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3'
    

    POST /users/:address/blobs

    ParameterDescription
    :addressowner account address
    typeblob type
    valuearbitrary text
    relationshipsResource key value to provide tags for filtering

    Get

    GET /users/GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3/blobs/CMKFL7K43ZG6E4S3QFEYFYM2F7GS2QJHQPLI25PIWFYMT5V4ZOKQ HTTP/1.1
    
    HTTP/1.1 200
    Content-Type: application/json
    
    {
        "data": {
            "id": "CMKFL7K43ZG6E4S3QFEYFYM2F7GS2QJHQPLI25PIWFYMT5V4ZOKQ",
            "type": "asset_description",
            "attributes": {
                "value": "foobar"
            }
        }
    }
    
    const accountId = 'GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3'
    const blobId = 'CMKFL7K43ZG6E4S3QFEYFYM2F7GS2QJHQPLI25PIWFYMT5V4ZOKQ'
    
    const blob = await sdk.api.blobs.get(blobId, accountId)
    console.log(blob.data.value) // => "{ "foo": "bar" }"
    

    GET /users/:addres/blobs/:id

    ParameterDescription
    :addressOwner account address
    :idBlob identifier

    Request signature is required for private blobs.

    Filter blobs

    GET /users/GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3/blobs HTTP/1.1
    
    HTTP/1.1 200
    Content-Type: application/json
    
    {
        "data": [
            {
                "id": "ZCPGS6E3MH7I7WNWAHHYW3C6PZI2R4ONUMCEERN35J33MQBAGJ3Q",
                "type": "fund_overview",
                "attributes": {
                    "value": "aaaa"
                }
            },
            {
                "id": "57UOND563OVFKI6BDZU7DBPDZFJJORIGFPEMHZQ44IQLWO4RYUOQ",
                "type": "nav_update",
                "attributes": {
                    "value": "bbbb"
                }
            }
        ]
    }
    
    const accountId = 'GCCJPB7QQLNEMCJ72CQJ4ODAZFFGXHET5UPOGSDWT222GXQPMTO6ZQW3'
    const types = sdk.api.blobs.types
    
    // Get all with 'asset_description' and 'fund_overview' types:
    const type = types.assetDescription | types.fundOverview
    await sdk.api.blobs.getAll({ type }, accountId)
    

    GET /users/:address/blobs

    ParameterDescription
    :addressOwner account address
    typeFilter by type bitmask

    Blobs index also supports filtering by user-provided relationships tags values.

    To access private blobs request signature is required, otherwise only public ones will be returned.

    Documents

    Document types

    TypeVisibility
    asset_logopublic
    fund_logopublic
    fund_documentpublic
    nav_reportpublic

    Allowed content types

    🔒 Upload

    POST /users/GBT3XFWQUHUTKZMI22TVTWRA7UHV2LIO2BIFNRCH3CXWPYVYPTMXMDGC/documents HTTP/1.1
    Content-Type: application/vnd.api+json
    Accept: application/vnd.api+json
    
    {
        "data": {
            "type": "asset_logo",
            "attributes": {
                "content_type": "image/png"
            }
        }
    }
    
    HTTP/1.1 200
    Content-Type: application/vnd.api+json
    
    {
        "data": {
            "type": "upload_policy",
            "attributes": {
                "bucket": "api",
                "key": "dpurgh4infjubjhcost7fvmaij6y2s3as33sueqfjdmnyrxig3qwm3uc",
                "policy": "eyJleHBpcmF0aW9...ZXF1ZXN0Il1dfQ==",
                "url": "http://localhost:9000/api/",
                "x-amz-algorithm": "AWS4-HMAC-SHA256",
                "x-amz-credential": "2SRMRAST49JEIMUUKWKH/20171225/us-east-1/s3/aws4_request",
                "x-amz-date": "20171225T001154Z",
                "x-amz-signature": "4881f2cada23e19df7f5a92fd1d82fe4c8e4b33ea69e61f05ca2a8860d9a5f3b"
            }
        }
    }
    

    Reviewable requests

    🔒 📄 Get requests history

    GET /requests HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "1",
            "paging_token": "1",
            "requestor": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "reviewer": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
            "reference": "BTC",
            "reject_reason": "",
            "hash": "2b973d51a10646505745aa7f1c860a383ea7361dac1b41779cc079dc385870dc",
            "details": {
              "request_type_i": 0,
              "request_type": "asset_create",
              "asset_create": {
                "code": "BTC",
                "policies": [
                  {
                    "name": "AssetPolicyBaseAsset",
                    "value": 2
                  },
                  {
                    "name": "AssetPolicyWithdrawable",
                    "value": 8
                  },
                  {
                    "name": "AssetPolicyTwoStepWithdrawal",
                    "value": 16
                  }
                ],
                "pre_issued_asset_signer": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
                "max_issuance_amount": "9223372036854.775807",
                "initial_preissued_amount": "0.000000",
                "details": {
                  "logo": {
                    "key": "",
                    "type": "logo_type",
                    "url": "logo_url"
                  },
                  "name": "BTC name",
                  "terms": {
                    "key": "",
                    "name": "",
                    "type": ""
                  }
                }
              }
            },
            "created_at": "2018-04-07T17:40:11Z",
            "updated_at": "2018-04-07T17:40:11Z",
            "request_state_i": 3,
            "request_state": "approved"
          },
          ...
        ]
      }
    }
    

    Returns list of all reviewable requests.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp

    🔒 Get request by ID

    GET /requests/1 HTTP/1.1
    Content-Type: application/json
    
    {
      "id": "1",
      "paging_token": "1",
      "requestor": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
      "reviewer": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
      "reference": "BTC",
      "reject_reason": "",
      "hash": "2b973d51a10646505745aa7f1c860a383ea7361dac1b41779cc079dc385870dc",
      "details": {
        "request_type_i": 0,
        "request_type": "asset_create",
        "asset_create": {
          "code": "BTC",
          "policies": [
            {
              "name": "AssetPolicyBaseAsset",
              "value": 2
            },
            {
              "name": "AssetPolicyWithdrawable",
              "value": 8
            },
            {
              "name": "AssetPolicyTwoStepWithdrawal",
              "value": 16
            }
          ],
          "pre_issued_asset_signer": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
          "max_issuance_amount": "9223372036854.775807",
          "initial_preissued_amount": "0.000000",
          "details": {
            "logo": {
              "key": "",
              "type": "logo_type",
              "url": "logo_url"
            },
            "name": "BTC name",
            "terms": {
              "key": "",
              "name": "",
              "type": ""
            }
          }
        }
      },
      "created_at": "2018-04-07T17:40:11Z",
      "updated_at": "2018-04-07T17:40:11Z",
      "request_state_i": 3,
      "request_state": "approved"
    }
    

    Returns specified request.

    Path params

    ParameterDescription
    idID of the request

    🔒 📄 Get assets requests

    GET /request/assets HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
        {
                "id": "11",
                "paging_token": "11",
                "requestor": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
                "reviewer": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
                "reference": "CAT",
                "reject_reason": "",
                "hash": "e3ef53ae1b817e1870f3bc99d5c83cc1a2bccdddcb0d57919538893af3a2d36d",
                "details": {
                  "request_type_i": 0,
                  "request_type": "asset_create",
                  "asset_create": {
                    "code": "CAT",
                    "policies": [],
                    "pre_issued_asset_signer": "GAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV4",
                    "max_issuance_amount": "213123.000000",
                    "initial_preissued_amount": "213123.000000",
                    "details": {
                      "logo": {
                        "key": "dpurgh4infpebjhcost7fvijeh5zh732at53ry4mkuwkvkyx6xxffusl",
                        "mime_type": "image/jpeg",
                        "name": "A-gray-kitten-meowing.jpg",
                        "type": ""
                      },
                      "name": "CAT",
                      "terms": {
                        "key": "",
                        "name": "",
                        "type": ""
                      }
                    }
                  },
                  "two_step_withdrawal": null,
                  "limits_update": null,
                  "aml_alert": null,
                  "update_sale_details": null
                },
                "created_at": "2018-05-19T16:58:47Z",
                "updated_at": "2018-05-19T16:58:47Z",
                "request_state_i": 2,
                "request_state": "canceled"
              }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForAssets({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      asset: 'QTK',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    assetstringIf present, the result will return only requests for specific asset

    🔒 📄 Get sale creation requests

    GET /request/sales HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
    {
            "id": "49",
            "paging_token": "49",
            "requestor": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "reviewer": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
            "reference": null,
            "reject_reason": "",
            "hash": "a654a51fa96981dc70aaab89ae7e6cb8af33bf4d662b669227ef68434854d22c",
            "details": {
              "request_type_i": 5,
              "request_type": "sale",
              "two_step_withdrawal": null,
              "sale": {
                "base_asset": "ETH2",
                "default_quote_asset": "USD",
                "start_time": "2018-06-19T21:00:00Z",
                "end_time": "2018-06-29T21:00:00Z",
                "soft_cap": "10000.000000",
                "hard_cap": "20000.000000",
                "sale_type": {
                  "name": "crowd_funding",
                  "value": 2
                },
                "base_asset_for_hard_cap": "150000.000000",
                "details": {
                  "description": "BUDXEPAFDOG4EQA2C5ZGWFM2BIOS5BFEDE3U465RWLFG6XMSE7OQ",
                  "logo": {
                    "key": "dpurah4infpebjhcost7fvo3l3qinkqqg73q7gakvchkiuvbjsje4osa",
                    "mime_type": "image/jpeg",
                    "name": "flat,800x800,070,f.jpg"
                  },
                  "name": "Eth 2.0 sale",
                  "short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vulputate tristique diam ut efficitur. Fusce dapibus ex vel eros egestas cursus",
                  "youtube_video_id": ""
                },
                "quote_assets": [
                  {
                    "quote_asset": "BTC",
                    "price": "1.000000"
                  }
                ],
                "state": {
                  "name": "none",
                  "value": 0
                }
              },
              "limits_update": null,
              "aml_alert": null,
              "update_sale_details": null
            },
            "created_at": "2018-06-20T18:19:35Z",
            "updated_at": "2018-06-20T18:19:35Z",
            "request_state_i": 3,
            "request_state": "approved"
          }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForSales({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      base_asset: 'QTK',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    base_assetstringIf present, the result will return only requests for specific asset

    🔒 📄 Get pre-issuance requests

    GET /request/preissuances HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
             "id": "77",
             "paging_token": "77",
             "requestor": "GDJIZ3VZP3UWNYHU57XEZXD2BQKY4PGHRODTQHPI3LI4NHUVN3J4F4SV",
             "reviewer": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
             "reference": "ZEAkv2HjgFjruhQkmcKwcGCPjL1xG5pyRXt1V1bDib7Sy",
             "reject_reason": "",
             "hash": "505288bcfb97b3e1886d9572f1e859fdaeba539ddb7207f410913457dc33863b",
             "details": {
               "request_type_i": 2,
               "request_type": "pre_issuance_create",
               "pre_issuance_create": {
                 "asset": "TST",
                 "amount": "100.000000",
                 "signature": "9EBQVAAAAEA2wuDDagEuHO2H8+N8PbCzcFt6cj/Yi0oXJKbO5F/EkDLdeFDI+UnJCpkXZGxwW3w1MHHvf52IbVx0Cm7ufEwH",
                 "reference": "ZEAkv2HjgFjruhQkmcKwcGCPjL1xG5pyRXt1V1bDib7Sy"
               },
               "two_step_withdrawal": null,
               "limits_update": null,
               "aml_alert": null,
               "update_sale_details": null
             },
             "created_at": "2018-06-30T19:11:11Z",
             "updated_at": "2018-06-30T19:11:11Z",
             "request_state_i": 3,
             "request_state": "approved"
           }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForPreissuances({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    assetstringIf present, the result will return only requests for specific asset

    🔒 📄 Get issuance requests

    GET /request/issuances HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "13",
            "paging_token": "13",
            "requestor": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "reviewer": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
            "reference": "some reference",
            "reject_reason": "",
            "hash": "6b4f15c459b0e75fffb2b194716b9ac84a9ee165676486b61c48964ae097b73a",
            "details": {
              "request_type_i": 3,
              "request_type": "issuance_create",
              "issuance_create": {
                "asset": "lazycat",
                "amount": "123.000000",
                "receiver": "BDWCWE3YC6J4QKS5W5X3OQC47CGPH4JLU5IDY5QCHTX6GT3T54UWE3XA",
                "external_details": {}
              },
              "two_step_withdrawal": null,
              "limits_update": null,
              "aml_alert": null,
              "update_sale_details": null
            },
            "created_at": "2018-05-19T19:07:09Z",
            "updated_at": "2018-05-19T19:07:09Z",
            "request_state_i": 3,
            "request_state": "approved"
          }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForIssuances({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor.
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    assetstringIf present, the result will return only requests for specific asset

    🔒 📄 Get withdrawals requests

    GET /request/withdrawals HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "id": "58",
            "paging_token": "58",
            "requestor": "GBWQ6ZWRLYPEF3XJUR4VFTDUL4D554XDZSOXED2K7SEXKACTGDKAJNRD",
            "reviewer": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
            "reference": null,
            "reject_reason": "",
            "hash": "37218112d1f9b1336850288007aaab6a275d8b97c309d55be1a7ad3dc64f8716",
            "details": {
              "request_type_i": 4,
              "request_type": "withdraw",
              "withdraw": {
                "balance_id": "BCQD4KVHA3XIPHTQWQV4GPGMI5VYNEH7S2H2V4B5DUYNBOI6TZRYPS7H",
                "amount": "0.100000",
                "fixed_fee": "0.000000",
                "percent_fee": "0.000000",
                "pre_confirmation_details": {
                  "eth_tx_1_hash": "c91f9ea5949001d994d9dd76ce4b7216d10145322e3d9cd2317a8fca552a83c5",
                  "raw_eth_tx_1": "f8aa808504a817c80083061a8094b7142b49a257b0e09d001adb054941fff34fb4ff80b844413d3cf1000000000000000000000000811ee7668ac7d418c9e95198567f41e3df4d3b9d000000000000000000000000000000000000000000000000016345785d8a00001ba0500c26ed228d0659ee92479cc86808e4afad4ef4d8586c5eebd86ce9d7c52f1fa03db0eb72171ec948b1ec9ae4d0785d7fb28597a7409d725f765bea5641b14eb1"
                },
                "external_details": {
                  "address": "0x811ee7668ac7d418c9e95198567f41e3df4d3b9d"
                },
                "dest_asset_code": "ETH",
                "dest_asset_amount": "0.100000",
                "reviewer_details": {
                  "eth_tx_2_hash": "f31300b30faa0fca5221224c021a941c32dbbbc1c5597c3d49706376954fe780",
                  "raw_eth_tx_2": "f889808504a817c80083061a8094b7142b49a257b0e09d001adb054941fff34fb4ff80a42c48e7db9e77d9a92b89adb32d60644a848199c6d7d660554e12ac31437e4d786a2ab7c51ba02f0fadcc79a50fecf4f70b42adfe2b490bd6e3884e7e7c2146d524dc1d301ec2a02d6175bb72c66815c598f4224dfb71f501ca1960966bc15cc8439ceec03e41b2"
                }
              },
              "two_step_withdrawal": null,
              "limits_update": null,
              "aml_alert": null,
              "update_sale_details": null
            },
            "created_at": "2018-06-28T13:57:58Z",
            "updated_at": "2018-06-28T15:18:29Z",
            "request_state_i": 3,
            "request_state": "approved"
          }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForWithdrawals({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      dest_asset_code: 'BTC',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    dest_asset_codestringIf present, the result will return only requests for specific destination asset

    🔒 📄 Get AML alerts requests

    GET /request/aml_alerts HTTP/1.1
    Content-Type: application/json
    
     
    
    const { data } = await sdk.horizon.request.getAllForAmlAlerts({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp

    🔒 📄 Get limits updates requests

    GET /request/limits_updates HTTP/1.1
    Content-Type: application/json
    
     
    
    const { data } = await sdk.horizon.request.getAllForLimitsUpdates({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp

    🔒 📄 Get update kyc requests

    GET /request/update_kyc HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
             "id": "7",
             "paging_token": "7",
             "requestor": "GCW3Y4ZOS3RN3VG62PF3YDSGJ7VC2HPZ5FCMFYIWBSOAIN6VOOKFDOEK",
             "reviewer": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
             "reference": "3b28a6c3766c6295adad976d349705ef49393fbfdebe4facb5862d2cdfa285d3",
             "reject_reason": "",
             "hash": "425450cffca2893a8f0b20fa8f002bae323352f5d08ccd4b82b6ed811bb82866",
             "details": {
               "request_type_i": 9,
               "request_type": "update_kyc",
               "two_step_withdrawal": null,
               "limits_update": null,
               "aml_alert": null,
               "update_kyc": {
                 "account_to_update_kyc": "GCW3Y4ZOS3RN3VG62PF3YDSGJ7VC2HPZ5FCMFYIWBSOAIN6VOOKFDOEK",
                 "account_type_to_set": {
                   "int": 2,
                   "string": "general"
                 },
                 "kyc_level": 0,
                 "kyc_data": {
                   "blob_id": "JFGEF52BWPJ42D7D43NPJ5CKWL34Q2Q3TA4PGOEM4S5G6OEJ7J4A"
                 },
                 "all_tasks": 30,
                 "pending_tasks": 0,
                 "sequence_number": 0,
                 "external_details": [
                   {}
                 ]
               },
               "update_sale_details": null
             },
             "created_at": "2018-05-19T16:29:58Z",
             "updated_at": "2018-05-19T16:35:53Z",
             "request_state_i": 3,
             "request_state": "approved",
          }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForUpdateKyc({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3, // approved
      mask_set: 3,
      account_to_update_kyc: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3'
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp
    account_to_update_kycstringShould be a valid account ID. If present, the result will return only requests for specific account id. It may differ from requestor, if the request was raised by master signer
    account_type_to_setnumberShould be a valid account Type. If present, the result will return only requests for specific account type
    mask_setnumberBit mask that defines what review tasks are still incomplete for the request. If present, the result will return only requests that has such incomplete tasks.
    mask_set_part_eqnumberIf present, the result will return only requests that has such incomplete tasks and no others.
    mask_not_setnumberBit mask that defines what review tasks are already complete for the request. If present, the result will return only requests that has such complete tasks.

    🔒 📄 Get update sale details requests

    GET /request/update_sale_details HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
              "id": "182",
              "paging_token": "182",
              "requestor": "GAIEBMXUPSGW2J5ELJFOY6PR5IWXXJNHIJSDKTDHK76HHRNYRL2QYU4O",
              "reviewer": "GD7AHJHCDSQI6LVMEJEE2FTNCA2LJQZ4R64GUI3PWANSVEO4GEOWB636",
              "reference": "5b9cb779336c4e25a382b6785779a7313e388fa8944c6e267aeb0d5e9f475d3f",
              "reject_reason": "",
              "hash": "71e802e46a8a05deebf94c0859ffa746d4c07f6349d24e80bcf60e1701d60abc",
              "details": {
                "request_type_i": 10,
                "request_type": "update_sale_details",
                "two_step_withdrawal": null,
                "limits_update": null,
                "aml_alert": null,
                "update_sale_details": {
                  "sale_id": 10,
                  "new_details": {
                    "description": "XZUXFXNYKU3DYN46RZITWRNDP6FAW2BDCY4JZEOMOKNZFBOYKJMA",
                    "logo": {
                      "key": "dpurah4inf7edjhcost7fvlmu3oygszwf7lho4e3h6rqujdxnpwfrkn3",
                      "type": "fund_logo"
                    },
                    "name": "2312321",
                    "short_description": "EVERYBODY LOVES KITTENS"
                  }
                },
                "update_sale_end_time": null,
                "promotion_update_request": null
              },
              "created_at": "2018-05-15T20:31:28Z",
              "updated_at": "2018-05-15T21:52:04Z",
              "request_state_i": 3,
              "request_state": "approved"
           }
        ]
      }
    }
    
    const { data } = await sdk.horizon.request.getAllForUpdateSaleDetails({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp

    🔒 📄 Get update sale end time requests

    GET /request/update_sale_end_time HTTP/1.1
    Content-Type: application/json
    
     
    
    
    const { data } = await sdk.horizon.request.getAllForUpdateSaleEndTime({
      requestor: 'GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3',
      state: 3 // approved
    })
    

    Query params

    ParameterTypeDescription
    reviewerstringShould be a valid account ID. If present, the result will return only requests for specific reviewer (The documentation for possible reviewers is coming)
    requestorstringShould be a valid account ID. If present, the result will return only requests for specific requestor
    statenumberIf present, the result will return only requests for specific state. Pending - 1, Canceled - 2, Approved - 3, Rejected - 4, PermanentlyRejected - 5
    updated_afternumberShould be a timestamp. If present, the result will return only requests, last updated after specific timestamp

    Assets

    Get asset list

    GET /assets HTTP/1.1
    Content-Type: application/json
    
    ```json
    [
      {
        "code": "ETH",
        "owner": "GDGQI3SSB7N7YDBGWCZB3DT7SA23KJWDTYQB5HCYR5VP3EBD6CXQXXG4",
        "available_for_issuance": "0.000000",
        "preissued_asset_signer": "GAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV4",
        "max_issuance_amount": "1000000000.000000",
        "issued": "1000000000.000000",
        "pending_issuance": "0.000000",
        "policy": 1,
        "policies": [
          {
            "name": "AssetPolicyTransferable",
            "value": 1
          },
          {
            "name": "AssetPolicyWithdrawable",
            "value": 8
          }
        ],
        "details": {
          "logo": {
             "key": "dpurgh4infnubjhcost7fvjkdwnvkcedflpqdxlxsc5nlsib4diraweq",
             "name": "ethereum_logo.png",
             "type": "image/png"
          },
          "name": "Ethereum",
          "terms": {
            "key": "",
            "name": "",
            "type": ""
          }
        }
      },
      {
        "code": "BTC",
        "owner": "GA4CZMOLWKO6RBKT77V2W4JGKVKYHSUAATVDJYPUYVGTYQ7BLTVH5CBP",
        "available_for_issuance": "1000000000.000000",
        "preissued_asset_signer": "GBZHP5662QGSAQITTND2VRMMEH5LCTUMGKQWZGG2BJ54IKWXVVTBT2HD",
        "max_issuance_amount": "1000000000.000000",
        "issued": "0.000000",
        "pending_issuance": "0.000000",
        "policy": 12,
        "policies": [
          {
            "name": "AssetPolicyTransferable",
            "value": 1
          },
          {
            "name": "AssetPolicyWithdrawable",
            "value": 8
          }
        ],
        "details": {
          "logo": {
            "key": "dpurgh4infnubjhcost7fvjkdwnvkcedflpqdxlxsc5nlsib4diraweq",
            "name": "bitcoin_logo.png",
            "type": "image/png"
          },
          "name": "Bitcoin",
          "terms": {
            "key": "",
            "name": "",
            "type": ""
          }
        }
      }
    ]
    
    const { data } = await sdk.horizon.assets.getAll()
    

    Get asset by code

    GET /assets/ETH HTTP/1.1
    Content-Type: application/json
    
    ```json
    {
        "code": "ETH",
        "owner": "GDGQI3SSB7N7YDBGWCZB3DT7SA23KJWDTYQB5HCYR5VP3EBD6CXQXXG4",
        "available_for_issuance": "0.000000",
        "preissued_asset_signer": "GAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV4",
        "max_issuance_amount": "1000000000.000000",
        "issued": "1000000000.000000",
        "pending_issuance": "0.000000",
        "policy": 1,
        "policies": [
          {
            "name": "AssetPolicyTransferable",
            "value": 1
          },
          {
            "name": "AssetPolicyWithdrawable",
            "value": 8
          }
        ],
        "details": {
          "logo": {
             "key": "dpurgh4infnubjhcost7fvjkdwnvkcedflpqdxlxsc5nlsib4diraweq",
             "name": "ethereum_logo.png",
             "type": "image/png"
          },
          "name": "Ethereum",
          "terms": {
            "key": "",
            "name": "",
            "type": ""
          }
        }
    }
    
    const code = 'ETH'
    const { data } = await sdk.horizon.assets.get(code)
    

    Return all existing assets in the system. For more information, see Tokens management

    Returns specific asset by it's code. For more information, see Tokens management

    URL params

    ParameterDescription
    codeThe code of the requested asset

    🔒 Get asset holders

    GET /assets/ETH/holders HTTP/1.1
    Content-Type: application/json
    
    [
      {
        "balance_id": "BDZJQYMTKEHA3GDTJJSR5XPY22WHIOIRXWJMPZORZCDFD2EPDOJCROMJ",
        "account_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
        "asset": "ETH",
        "balance": "67.599908",
        "locked": "17.300000",
        "require_review": false
      },
      {
        "balance_id": "BDFRWWJKEOEZJTQWWSKU3S7HG3WYC5T52RWS7AMA32YNYDI7SBV7RACZ",
        "account_id": "GCUILXOKGUOZICOUA2XHOM43TXSFXHGCIM3PNYQ6UENNQW43NVA6V2SN",
        "asset": "ETH",
        "balance": "12.298382",
        "locked": "0.000170",
        "require_review": false
      },
      {
        "balance_id": "BARU3EEP4GQFWOV3NHXWXEGY7BV7JPLZDS5KWBZWSZ5YMSDTTCAMOKEP",
        "account_id": "GDGQI3SSB7N7YDBGWCZB3DT7SA23KJWDTYQB5HCYR5VP3EBD6CXQXXG4",
        "asset": "ETH",
        "balance": "108.760239",
        "locked": "12.050000",
        "require_review": false
      },
      {
        "balance_id": "BCRW7JGPOC7R4CE2O3NTNYER6NB3G4UY4DIBSLX5AYLITXU3XTBPFUHC",
        "account_id": "GDL3W5Z2B2JSET7CKKWRV3ICZL64Y3ZIPX2MMNJFXBCJOCMOSXCC7X4Y",
        "asset": "ETH",
        "balance": "65.500000",
        "locked": "19.000000",
        "require_review": false
      }
    ]
    
    const code = 'ETH'
    const { data } = await sdk.horizon.assets.getHolders(code)
    

    Return all created balances for this asset.

    URL params

    ParameterDescription
    codeThe code of the requested asset

    Asset pairs

    Get asset pairs list

    GET /assets_pairs HTTP/1.1
    Content-Type: application/json
    
    {
        "base": "HHCT",
        "quote": "BTC",
        "current_price": "1.000000",
        "physical_price": "1.000000",
        "physical_price_correction": "0.000000",
        "max_price_step": "0.000000",
        "policy": 0,
        "policies": null
      },
      {
        "base": "ETH",
        "quote": "USD",
        "current_price": "294.470000",
        "physical_price": "294.470000",
        "physical_price_correction": "0.000000",
        "max_price_step": "0.000000",
        "policy": 0,
        "policies": null
      },
    
    const { data } = await sdk.horizon.assetPairs.getAll()
    

    Returns all existing asset pairs in the system

    Get converted amount

    GET /assets_pairs/convert HTTP/1.1
    Content-Type: application/json
    
    {
      "amount": "44.000000"
    }
    
    const destAsset = 'ETH'
    const sourceAsset = 'BTC'
    const amount = '10'
    
    const { data } = await sdk.horizon.assetPairs.convert({
      source_asset: sourceAsset,
      dest_asset: destAsset,
      amount: amount
    })
    

    Converts amount from one asset to another.

    Query params

    ParameterDescription
    dest_assetThe asset to convert to
    source_assetThe asset to convert from
    amountThe amount to convert

    Fees

    Get fees

    GET /fees HTTP/1.1
    Content-Type: application/json
    
    {
      "fees": {
        "BTC": [
          {
            "asset": "BTC",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "BTC",
            "exists": true
          },
          ...
        ],
        "DASH": [
          {
            "asset": "DASH",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "DASH",
            "exists": true
          },
          ...
        ]
      }
    }
    

    Returns list of all possible fees for all assets.

    Get existing fees

    GET /fees_overview HTTP/1.1
    Content-Type: application/json
    
    {
      "fees": {
        "BTC": [
          {
            "asset": "BTC",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "BTC",
            "exists": true
          }
        ],
        "DAI": [
          {
            "asset": "DAI",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "DAI",
            "exists": true
          }
        ],
        "DASH": [
          {
            "asset": "DASH",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "DASH",
            "exists": true
          }
        ],
        "ETH": [
          {
            "asset": "ETH",
            "fixed": "0.000000",
            "percent": "1.000000",
            "fee_type": 4,
            "subtype": 0,
            "account_id": "",
            "account_type": -1,
            "lower_bound": "0.000000",
            "upper_bound": "9223372036854.775807",
            "fee_asset": "ETH",
            "exists": true
          }
        ]
      }
    }
    

    Returns list of existing fees for all assets.

    Get fee by type

    GET /fees/0?account=GDQNYWBSE3YIJOXVTB5YD6BLRATXYWKGFBSDTXVDQTUQHGSHRLK7EPAB&asset=SWM&amount=45&subtype=2 HTTP/1.1
    Content-Type: application/json
    
    {
      "asset": "BTC",
      "fixed": "0.000000",
      "percent": "0.000000",
      "fee_type": 0,
      "subtype": 0,
      "account_id": "",
      "account_type": 0,
      "lower_bound": "0.000000",
      "upper_bound": "0.000000",
      "fee_asset": "SWM",
      "exists": true
    }
    

    Returns specific fee information.

    URL params

    ParameterDescription
    typeType of the fee

    Query params

    ParameterTypeDefaultDescription
    accountstringID of the account related to a payment operation
    assetstringAsset about to be spent
    amountdoubleAmount about to be spent
    subtypeintegerFee subtype, i.e. payment direction (send or receive)

    Sales

    📄 Get sales

    GET /sales HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "paging_token": "1",
            "id": "1",
            "owner_id": "GA4PTMB27RPMIIOBQEIMRY2J2IRTXUUNSYXWUBUDME3V4DVEGGHA4K7Z",
            "base_asset": "CTOKEN",
            "default_quote_asset": "SUN",
            "start_time": "2018-01-29T11:00:00Z",
            "end_time": "2018-07-15T10:00:00Z",
            "soft_cap": "100000000.000000",
            "hard_cap": "250000000.000000",
            "details": {
              "description": "VFVLJFCQCGFTGOP2U7WODZHHO5O2ST6FC43BY5XOQL5PRISL7EMQ",
              "logo": {
                "key": "dpurah4infbubjhcost7fvprh6ms6zoo5jokwuuhaz3spjkohcaiojm6",
                "type": "image/png",
                "url": "https://storage.testnet.tokend.org/api/dpurah4infbubjhcost7fvprh6ms6zoo5jokwuuhaz3spjkohcaiojm6"
              },
              "name": "Coin one token",
              "short_description": "Here goes a short description",
              "youtube_video_id": "B_G17r8-r2U"
            },
            "state": {
              "name": "canceled",
              "value": 4
            },
            "statistics": {
              "investors": 0
            },
            "quote_assets": {
              "quote_assets": [
                {
                  "asset": "BTC",
                  "price": "0.000088",
                  "quote_balance_id": "BDQM4ERMCK6X3CJC3CIKQ6VKGGESUMHONLEPISPIV47JVDFQCRVVW27P",
                  "current_cap": "0.000000"
                },
                {
                  "asset": "ETH",
                  "price": "0.000844",
                  "quote_balance_id": "BAOCWSKEFZWW4RHGMJMRYJCGFFI7LAQP67XFLHZAH7V3GBK7CU4PEKHM",
                  "current_cap": "0.000000"
                }
              ]
            },
            "base_hard_cap": "1.000000",
            "base_current_cap": "0.000000",
            "current_cap": "0.000000",
            "sale_type": {
              "name": "basic_sale",
              "value": 1
            }
          }
          ...
        ]
      }
    }
    

    Returns sales that match specified filters.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    namestringIf present, the result will contain only sales with name contains specified string. Case is ignored
    base_assetstringIf present, the result will contain only sales with base asset matches specified string. Case-sensitive
    ownerstringAccount ID. If present, the result will contain only sales owned by specified account
    open_onlybooleanfalseIf set to true, the result will contain only open sales
    upcomingbooleanfalseIf set to true, the result will contain unpcoming sales
    votingbooleanfalseIf set to true, the result will contain sales on the voting phase
    promotionsbooleanfalseIf set to true, the result will contain sales on the promotion phase

    Get sale by ID

    GET /sales/2 HTTP/1.1
    Content-Type: application/json
    
    {
      "paging_token": "2",
      "id": "2",
      "owner_id": "GAA5WRH3KOAXZPW6PR3BKQSOG3KN3VAW2BO72PC6SHLSUSBW77DQHUB3",
      "base_asset": "test",
      "default_quote_asset": "USD",
      "start_time": "2018-06-19T21:00:00Z",
      "end_time": "2018-06-29T21:00:00Z",
      "soft_cap": "1.000000",
      "hard_cap": "2.000000",
      "details": {
        "description": "FAB6BK75TFNXPRULP6YUDYBMFZUKOEYBYNZPNGRHGDMVROVEJVJQ",
        "logo": {
          "key": "dpurah4infpebjhcost7fvnhjxlqgqdft3bamery2an3otqpbx6jbvdt",
          "mime_type": "image/png",
          "name": "TokenD - Demo - Images (1).png"
        },
        "name": "Pre-sale",
        "short_description": "The best token",
        "youtube_video_id": ""
      },
      "state": {
        "name": "closed",
        "value": 2
      },
      "statistics": {
        "investors": 3
      },
      "quote_assets": {
        "quote_assets": [
          {
            "asset": "ETH",
            "price": "0.000383",
            "quote_balance_id": "BDZJQYMTKEHA3GDTJJSR5XPY22WHIOIRXWJMPZORZCDFD2EPDOJCROMJ",
            "current_cap": "0.003821",
            "total_current_cap": "0.003822",
            "hard_cap": "0.008754"
          }
        ]
      },
      "base_hard_cap": "10.000000",
      "base_current_cap": "0.000000",
      "current_cap": "0.872974",
      "sale_type": {
        "name": "crowd_funding",
        "value": 2
      }
    }
    

    Returns detailed information about the sale with specified ID.

    Path params

    ParameterDescription
    idThe ID of the sale

    🔒 Get sale antes

    GET /sale_antes?sale_id=39&participant_balance_id=BDDS7UEGTAYFV2R5IH2WRZGXOWZ4YUD2NJUTHCTOK2CWSL3J2DQQRIG6 HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "paging_token": "",
            "sale_id": "39",
            "participant_balance_id": "BDDS7UEGTAYFV2R5IH2WRZGXOWZ4YUD2NJUTHCTOK2CWSL3J2DQQRIG6",
            "amount": "1.000001",
            "asset_code": "BTC"
          }
        ]
      }
    }
    

    Returns list of charged antes.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    sale_idintegerIf present, the result will contain only antes for specified sale
    participant_balance_idstringBalance ID. If present, the result will contain only antes for specified balance

    Trades

    📄 Get order book

    GET /order_book?base_asset=RTOKEN&quote_asset=ETH&is_buy=true HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "paging_token": "800000",
            "base_asset_code": "RTOKEN",
            "quote_asset_code": "ETH",
            "is_buy": true,
            "base_amount": "0.900000",
            "quote_amount": "0.720000",
            "price": "0.800000",
            "created_at": "2018-05-24T12:55:03Z"
          }
        ]
      }
    }
    

    Returns order book – a list of active orders for given asset pair.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    base_assetstringRequired
    Base asset of the pair
    quote_assetstringRequired
    Quote asset of the pair
    is_buybooleanfalseFilters the result items by is_buy property
    order_book_idintegerIf present, the result will contain only items from certain order book. For secondary market use 0

    📄 Get matched orders

    GET /trades?base_asset=RTOKEN&quote_asset=ETH HTTP/1.1
    Content-Type: application/json
    
    {
      "_links": {
        ...
      },
      "_embedded": {
        "records": [
          {
            "paging_token": "8",
            "id": 8,
            "base_asset": "RTOKEN",
            "base_amount": "9572.466257",
            "price": "0.000163",
            "created_at": "2018-04-20T16:48:28Z"
          },
          ...
        ]
      }
    }
    

    Returns list of matched orders for given asset pair.

    The request returns data in multiple pages, for more information, see Pagination

    Query params

    ParameterTypeDefaultDescription
    base_assetstringRequired
    Base asset of the pair
    quote_assetstringRequired
    Quote asset of the pair
    is_buybooleanfalseFilters the result items by is_buy property
    order_book_idintegerIf present, the result will contain only items from certain order book. For secondary market use 0

    Key-value storage

    Get key-value entries

    GET /key_value HTTP/1.1
    Content-Type: application/json
    
    [
      {
        "key": "issuance_tasks:ETH",
        "type": {
          "name": "uint32",
          "value": 1
        },
        "uint32_value": 0
      },
      {
        "key": "issuance_tasks:DAI",
        "type": {
          "name": "uint32",
          "value": 1
        },
        "uint32_value": 0
      },
      ...
    ]
    

    Returns list of key-value entries.

    Get key-value entry by key

    GET /key_value/issuance_tasks:ETH HTTP/1.1
    Content-Type: application/json
    
    {
      "key": "issuance_tasks:ETH",
      "type": {
        "name": "uint32",
        "value": 1
      },
      "uint32_value": 0
    }
    

    Returns an entry with the specified key.

    Path params

    ParameterDescription
    keyThe key of the entry