Introdução

A API FixedFloat permite automatizar o recebimento de informações sobre as taxas de câmbio das moedas, pedidos criados, apresentados no serviço FixedFloat, criar pedidos e gerenciá-los usando-o.

Para usar a API FixedFloat, você precisa obter uma API key e um API secret.

Obtendo a API key

Para obter uma API Key e API Secret, siga estas etapas:

  1. Entre ou Registre-se no FixedFloat
  2. Vá para a seção API management
  3. Clique no botão "Gerar" e siga as instruções na janela que aparece
  4. Copie a API Key e o API Secret e guarde-os em um local seguro. Use esses parâmetros para solicitações à API FixedFloat

Pedido e exemplo

Os dados enviados devem estar no formato JSON com codificação UTF-8.

Para solicitações de API bem-sucedidas, todas as solicitações devem conter alguns cabeçalhos obrigatórios:

  • O cabeçalho Content-Type deve ser application/json; charset=UTF-8
  • O cabeçalho X-API-KEY deve conter sua API Key recebida (YOUR_API_KEY)
  • O cabeçalho X-API-SIGN deve conter a assinatura GENERATED_SIGN. Para obter a assinatura, você deve usar seu API Secret (YOUR_API_SECRET) como a chave de operação HMAC SHA256 e a string de dados json como o valor.
X-API-SIGN generation
[linux]$ echo -n 'DATA_JSON' | openssl dgst -sha256 -hmac "YOUR_API_SECRET"
(stdin)= GENERATED_SIGN
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d 'DATA_JSON'
  "https://ff.io/api/v2/METHOD" -L
import hmac
import json
import hashlib
import requests
  
def sign(data):
  return hmac.new(
    key=YOUR_API_SECRET.encode(),
    msg=data.encode(),
    digestmod=hashlib.sha256
  ).hexdigest()
  
  
def request(method, params={}):
  url = 'https://ff.io/api/v2/' + method
  data = json.dumps(params)
  headers = {
    'X-API-KEY':  YOUR_API_KEY,
    'X-API-SIGN': sign(data)
  }
  r = requests.post(url, data=data, headers=headers)
  return r.json()
  
request(METHOD, DATA)
<?php
  function sign($data) {
    return hash_hmac('sha256', $data, YOUR_API_SECRET);
  }
  
  function request($method, $data) {
    $url = 'https://ff.io/api/v2/'.$method;
    
    $req = json_encode($data);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Content-Type:application/json',
      'X-API-KEY: '  . YOUR_API_KEY,
      'X-API-SIGN: ' . sign($req)
    ));
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    if ($result['code'] == 0) {
      return $result['data'];
    } else {
      throw new Exception($result['msg'], $result['code']);
    }
  }
  
  request(METHOD, DATA);
?>

Solicitar limites

O limite de solicitação por minuto é de 250 unidades.

A solicitação /api/v2/create custa 50 unidades, todas as outras solicitações custam 1 unidade.

Se o limite for excedido, seu token será temporariamente bloqueado. Com cada superação subsequente do limite após o desbloqueio, o tempo de bloqueio aumentará

Bibliotecas Oficiais

Você pode usar bibliotecas prontas para usar a API FixedFloat:

Moedas disponíveis

POSThttps://ff.io/api/v2/ccies

Obtendo uma lista de moedas suportadas pelo serviço FixedFloat, bem como dados em seu display e informações sobre a disponibilidade para recebimento e envio.

Parâmetros

Não há necessidade de passar parâmetros para esta solicitação.

X-API-SIGN é gerado chamando a função HMAC SHA256 de uma string vazia se nenhum parâmetro for passado ou de um objeto JSON vazio.

Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  "https://ff.io/api/v2/ccies" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  return $ff->ccies();
?>

Resposta

Uma resposta bem-sucedida contém uma matriz de objetos de informações de moeda.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
dataArrayList of currencies supported by FixedFloat
data[].codestringUnique currency code in FixedFloat
data[].coinstringCommon asset ticker
data[].networkstringBlockchain network in which this asset is represented
data[].namestringName of currency
data[].recvbooleanAvailability of currency for acceptance into the service from the client
data[].sendbooleanAvailability of currency to send to the client
data[].tagstringThe name of the additional field, if available; otherwise null
data[].logostringLink to currency image
data[].colorstringCurrency color specified in HEX format
data[].prioritynumberPriority in the list of currencies of the service
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": [
    {
      "code": "BTC",
      "coin": "BTC",
      "network": "BTC",
      "name": "Bitcoin",
      "recv": true,
      "send": true,
      "tag": null,
      "logo": "https://fixedfloat.com/assets/images/coins/svg/btc.svg",
      "color": "#f7931a",
      "priority": "5",
    },
    ...,
  ],
}

Taxa de câmbio

POSThttps://ff.io/api/v2/price

Obtendo a taxa de câmbio de um par de moedas na direção selecionada e tipo de taxa.

ATTENTION! Para obter as taxas de câmbio de todas as moedas disponíveis, você deve usar o arquivo de taxa de exportação disponível no link https://ff.io/rates.xml

Para este método, assim como para o método /api/v2/create, é possível aumentar os ganhos acumulados no programa de afiliados usando o parâmetro afftax.

A taxa de câmbio final ao passar os parâmetros afftax e refcode depende se o código do seu programa de afiliados foi aprovado para ganhar pedidos gerados pela API e a porcentagem base (AFFBASE) definida para o seu código e será calculada de acordo com a fórmula:

total = FF - AFFB + afftax, se afftax < FF - AFFB
total = afftax x 2        , se FF - AFFB < afftax < FF
total = FF + afftax       , se afftax > FF

onde FF é a porcentagem base do serviço para o tipo de câmbio selecionado (1% para taxa fixa e 0,5% para taxa flutuante);
AFFB a porcentagem base do lucro do serviço definido para o código do seu programa de afiliados, para o tipo de taxa de câmbio selecionado (AFFBASE para uma taxa fixa e AFFBASE÷2 para uma taxa flutuante)

Para maior clareza, sugerimos que você se familiarize com a tabela abaixo com AFFBASE=0.4, where FFP = FF - AFFB:

FIXED RATE FLOAT RATE
Total FFP afftax Total FFP afftax
1.0 0.6 0.4 0.5 0.3 0.2
1.1 0.6 0.5 0.55 0.3 0.25
1.2 0.6 0.6 0.6 0.3 0.3
1.4 0.7 0.7 0.7 0.35 0.35
1.6 0.8 0.8 0.8 0.4 0.4
1.8 0.9 0.9 0.9 0.45 0.45
2.0 1.0 1.0 1.0 0.5 0.5
2.1 1.0 1.1 1.05 0.5 0.55
2.2 1.0 1.2 1.1 0.5 0.6

Se o seu código de afiliado não tiver uma porcentagem básica de ganhos da API definida, a taxa de câmbio final será calculada como:

FF + afftax

onde FF é a porcentagem base do serviço para o tipo de câmbio selecionado (1% para taxa fixa e 0,5% para taxa flutuante).

Os ganhos serão creditados em sua conta se o código do programa de afiliados for passado no parâmetro refcode e esse código pertencer à sua conta. Caso contrário, os parâmetros afftax e refcode serão ignorados.

Parâmetros

NameRequiredTypeDescription
typetruestringOrder type
fromCcytruestringCode of the currency the client wants to send
toCcytruestringCode of the currency the client wants to receive
directiontruestring The direction of the exchange determines whether the client wants to send a certain amount or receive a certain amount. Can take one of the following values:
from — if the client wants to send the amount amount in the currency fromCcy
to — if the client wants to receive the amount amount in the currency toCcy
amounttruenumericIf direction="from", then this is the amount in currency fromCcy that the client wants to send.
If direction="to", then this is the amount in currency toCcy that the client wants to receive
cciesfalsebooleanAdding a list of currencies to the response with information about the availability for sending and receiving
usdfalsebooleanAmount in USD, by which fromAmount or toAmount will be changed in case the limits are exceeded
refcodefalsestringAffiliate program code for which earnings will be accrued under the affiliate program. If the afftax parameter is not set and this affiliate program code does not participate in earning via the API, passing this parameter will not affect anything. It is possible to transfer only affiliate program codes that were received in the same account in which the API key used for this request was received
afftaxfalsefloatDesired earnings under the affiliate program as a percentage of the exchange amount. Affects the final exchange rate and earnings under the affiliate program if the refcode parameter is also set.
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"fromCcy":"BTC","toCcy":"USDTTRC","amount":0.5,direction":"from","type":"float"}'
  "https://ff.io/api/v2/price" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'fromCcy'    => 'BTC',
    'toCcy'      => 'USDTTRC',
    'amount'     => '0.5',
    'direction'  => 'from',
    'type'       => 'float',
  );
  
  return $ff->price($data);
?>

Resposta

Uma resposta bem-sucedida contém informações sobre as moedas do par selecionado, a taxa de câmbio e o valor enviado e recebido.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
dataObjectAn object with information about the currencies of the selected pair, the exchange rate, and the amount sent and received
data.fromObjectData about the asset that the client must send
data.from.codestringUnique currency code in FixedFloat
data.from.networkstringBlockchain network in which this asset is represented
data.from.coinstringCommon asset ticker
data.from.amountstringAmount that the client needs to send
data.from.ratestringFinal exchange rate
data.from.precisionintegerRounding accuracy
data.from.minstringMinimum amount
data.from.maxstringMaximum amount
data.from.usdstringEquivalent in USD
data.from.btcstringEquivalent in BTC
data.toObjectData about the asset that the client will receive
data.to.codestringUnique currency code in FixedFloat
data.to.networkstringBlockchain network in which this asset is represented
data.to.coinstringCommon asset ticker
data.to.amountstringAmount that the client must to receive
data.to.ratestringFinal exchange rate
data.to.precisionintegerRounding accuracy
data.to.minstringMinimum amount
data.to.maxstringMaximum amount
data.to.usdstringEquivalent in USD
data.errorsArrayAn array of a list of errors. If the array is empty, then creating an order with these parameters is possible.
The array may contain the following errors:
MAINTENANCE_FROM — Currency from data.from object under maintenance
MAINTENANCE_TO — Currency from object data.to under maintenance
OFFLINE_FROM — Currency from object data.from is not available
OFFLINE_TO — Currency from object data.to is not available
RESERVE_FROM — Not enough currency reserves from object data.from
RESERVE_TO — Not enough currency reserves from object data.to
LIMIT_MIN — Amount less than limit
LIMIT_MAX — The amount is greater than the limit
data.cciesArrayAdded if the ccies parameter is true. An array containing a list of objects with information about the availability for sending and receiving currencies
data.ccies[].codestringUnique currency code in FixedFloat
data.ccies[].recvbooleanAvailability of currency for acceptance into the service from the client
data.ccies[].sendbooleanAvailability of currency to send to the client
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": {
    "from": {
      "code": "BSC",
      "network": "BSC",
      "coin": "BNB",
      "amount": "0.040297",
      "rate": "0.01452202",
      "precision": 8,
      "min": "0.005053",
      "max": "967.072057",
      "usd": "12.28",
      "btc": "0.00058813",
    },
    "to": {
      "code": "BTC",
      "network": "BTC",
      "coin": "BTC",
      "amount": "0.00055984",
      "rate": "68.164781",
      "precision": 8,
      "min": "0.0000479",
      "max": "14.04381911",
      "usd": "11.69",
    },
    "errors": [],
    "ccies": [
      {
        "code": "ADA",
        "recv": true,
        "send": true,
      },
      ...,
    ],
  },
}

Criar pedido

POSThttps://ff.io/api/v2/create

Criando um pedido para a troca de moedas selecionadas com um valor e endereço especificados.

Para este método, assim como para o método /api/v2/price é possível aumentar os ganhos acumulados no programa de afiliados usando o parâmetro afftax. As regras para uso deste parâmetro estão descritas no método /api/v2/price

Parâmetros

NameRequiredTypeDescription
typetruestringOrder type
fromCcytruestringCode of the currency the client wants to send
toCcytruestringCode of the currency the client wants to receive
directiontruestring The direction of the exchange determines whether the client wants to send a certain amount or receive a certain amount. Can take one of the following values:
from — if the client wants to send the amount amount in the currency fromCcy
to — if the client wants to receive the amount amount in the currency toCcy
amounttruenumericIf direction="from", then this is the amount in currency fromCcy that the client wants to send.
If direction="to", then this is the amount in currency toCcy that the client wants to receive
toAddresstruestringDestination address to which the funds will be dispatched upon the successful completion of the Order
tagfalsebooleanIf you need to specify a Memo or Destination Tag when sending, you should specify it here. This parameter can be omitted by specifying the MEMO or Destination Tag in toAddress separated by a colon.
refcodefalsestringAffiliate program code for which earnings will be accrued under the affiliate program. If the afftax parameter is not set and this affiliate program code does not participate in earning via the API, passing this parameter will not affect anything. It is possible to transfer only affiliate program codes that were received in the same account in which the API key used for this request was received
afftaxfalsefloatDesired earnings under the affiliate program as a percentage of the exchange amount. Affects the final exchange rate and earnings under the affiliate program if the refcode parameter is also set.
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"fromCcy":"BTC","toCcy":"USDTTRC","amount":0.5,direction":"from","type":"float","toAddress":"TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr"}'
  "https://ff.io/api/v2/create" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'fromCcy'    => 'BTC',
    'toCcy'      => 'USDTTRC',
    'amount'     => '0.5',
    'direction'  => 'from',
    'type'       => 'float',
    'toAddress'  => 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'
  );
  
  return $ff->create($data);
?>

Resposta

Uma resposta bem-sucedida contém um objeto com informações sobre todos os dados do pedido criado, incluindo o parâmetro token, para posteriormente obter informações atualizadas sobre o pedido usando o método /api/v2/ pedido e gerenciamento de pedidos.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
dataObjectObject with information about all the data of the created order
data.tokenstringOrder access token
data.idstringOrder ID. Consists of 6 characters
data.typestringOrder type. Can be one of the values:
fixed — fixed rate order
float — floating rate order
data.emailstringEmail address for the order to receive notifications about changes in the order
data.statusstringOrder status. Can be one of the values:
NEW — New order
PENDING — Transaction received, pending confirmation
EXCHANGE — Transaction confirmed, exchange in progress
WITHDRAW — Sending funds
DONE — Order completed
EXPIRED — Order expired
EMERGENCY — Emergency, customer choice required
data.timeObjectObject containing timestamp data
data.time.regnumberOrder creation timestamp
data.time.startnumberTransaction receive timestamp
data.time.finishnumberTimestamp when the order was completed
data.time.updatenumberTimestamp of last order update
data.time.expirationnumberTimestamp when order expires
data.time.leftnumberThe number of seconds before the end of the order
data.fromObjectAn object containing information about the currency sent by clients and transactions
data.from.codestringCurrency code
data.from.coinstringCommon asset ticker
data.from.networkstringBlockchain network in which this asset is represented
data.from.namestringName of currency
data.from.aliasstringAlias for creating qr code
data.from.amountstringAmount that the client needs to send
data.from.addressstringThe destination address to which the user is ought to deposit his funds in order for the trade to execute
data.from.tagstringMEMO or Destination Tag if required
data.from.addressMixstringAddress with a colon-connected tag
data.from.reqConfirmationsnumberRequired number of transaction confirmations
data.from.maxConfirmationsnumberThe maximum number of transaction confirmations that system updates
data.from.txObjectAn object containing data about the received transaction
data.from.tx.idstringTransaction hash
data.from.tx.amountstringTransaction amount
data.from.tx.feestringMiner fee
data.from.tx.ccyfeestringCurrency of Miner fee
data.from.tx.timeRegnumberTransaction registration timestamp
data.from.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.from.tx.confirmationsnumberNumber of transaction confirmations
data.toObjectAn object containing information about the currency received by the client and the transaction
data.to.codestringCurrency code
data.to.coinstringCommon asset ticker
data.to.networkstringBlockchain network in which this asset is represented
data.to.namestringName of currency
data.to.aliasstringAlias for creating qr code
data.to.amountstringAmount that the client must to receive
data.to.addressstringThe destination address to which the funds will be dispatched upon the successful completion of the order
data.to.tagstringMEMO or Destination Tag if required
data.to.addressMixstringAddress with a colon-connected tag
data.to.txObjectAn object containing data about the sent transaction
data.to.tx.idstringTransaction hash
data.to.tx.amountstringTransaction amount
data.to.tx.feestringMiner fee
data.to.tx.ccyfeestringCurrency of Miner fee
data.to.tx.timeRegnumberTransaction registration timestamp
data.to.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.to.tx.confirmationsnumberNumber of transaction confirmations
data.backObjectAn object containing information about the currency returned to the client and the transaction
data.back.codestringCurrency code
data.back.coinstringCommon asset ticker
data.back.networkstringBlockchain network in which this asset is represented
data.back.namestringName of currency
data.back.aliasstringAlias for creating qr code
data.back.amountstringThe amount that the client should receive upon return, excluding the miner fee
data.back.addressstringThe return address to which the funds will be sent when choosing a refund
data.back.tagstringMEMO or Destination Tag if required
data.back.addressMixstringAddress with a colon-connected tag
data.back.txObjectAn object containing data about the returned transaction
data.back.tx.idstringTransaction hash
data.back.tx.amountstringTransaction amount
data.back.tx.feestringMiner fee
data.back.tx.ccyfeestringCurrency of Miner fee
data.back.tx.timeRegnumberTransaction registration timestamp
data.back.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.back.tx.confirmationsnumberNumber of transaction confirmations
data.emergencyObjectAn object containing data about the emergency in the order
data.emergency.statusArrayEmergency status. Can be multiple values from:
EXPIRED — the transaction was received after the expiration of the order
LESS — a transaction was sent with an amount less than in the order
MORE — a transaction was sent with an amount greater than in the order
LIMIT — a transaction was sent with an amount less or more than the limit; used with LESS or MORE
data.emergency.choicestringuser choice. Can be one of the values:
NONE — Choice not made
EXCHANGE — Continue order at the new market rate
REFUND — Make a refund minus the network commission
data.emergency.repeatbooleanif true, then a repeated transaction has been received for this order
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": {
    "id": "TESTID",
    "type": "float",
    "email": "",
    "status": "NEW",
    "time": {
      "reg": 1676458603,
      "start": null,
      "finish": null,
      "update": 1676458603,
      "expiration": 1676460403,
      "left": 1800,
    },
    "from": {
      "code": "BTC",
      "coin": "BTC",
      "network": "BTC",
      "name": "Bitcoin",
      "alias": "bitcoin",
      "amount": "0.50000000",
      "address": "bc1qm8e58htm6qlhz5u7awhe4a5kxt3w86ffwtl9j0",
      "addressAlt": null,
      "tag": null,
      "tagName": null,
      "reqConfirmations": 1,
      "maxConfirmations": 6,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "to": {
      "code": "USDTTRC",
      "coin": "USDT",
      "network": "TRX",
      "name": "Tether (TRC20)",
      "alias": "usdt",
      "amount": "11062.06500000",
      "address": "TVnbp1VCJ1TpWMom4k3URfFky9FGfPdZPd",
      "tag": null,
      "tagName": null,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "back": {
      "code": null,
      "coin": null,
      "network": null,
      "name": null,
      "alias": null,
      "amount": null,
      "address": null,
      "tag": null,
      "tagName": null,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "emergency": {
      "status": [],
      "choice": "NONE",
      "repeat": 0,
    },
    "token": "TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7",
  },
}

Obter detalhes do pedido

POSThttps://ff.io/api/v2/order

O método recebe os dados atualizados do pedido.

Parâmetros

NameRequiredTypeDescription
idtruestringOrder ID
tokentruestringOrder security token received when creating an order in data.token
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"id":"TESTID","token":"TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7"}'
  "https://ff.io/api/v2/order" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'id'    => 'TESTID',
    'token' => 'TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7',
  );
  
  return $ff->order($data);
?>

Resposta

Uma resposta bem-sucedida contém contém um objeto com informações sobre todos os dados do pedido criado

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
dataObjectObject with information about all the data of the created order
data.idstringOrder ID. Consists of 6 characters
data.typestringOrder type. Can be one of the values:
fixed — fixed rate order
float — floating rate order
data.emailstringEmail address for the order to receive notifications about changes in the order
data.statusstringOrder status. Can be one of the values:
NEW — New order
PENDING — Transaction received, pending confirmation
EXCHANGE — Transaction confirmed, exchange in progress
WITHDRAW — Sending funds
DONE — Order completed
EXPIRED — Order expired
EMERGENCY — Emergency, customer choice required
data.timeObjectObject containing timestamp data
data.time.regnumberOrder creation timestamp
data.time.startnumberTransaction receive timestamp
data.time.finishnumberTimestamp when the order was completed
data.time.updatenumberTimestamp of last order update
data.time.expirationnumberTimestamp when order expires
data.time.leftnumberThe number of seconds before the end of the order
data.fromObjectAn object containing information about the currency sent by clients and transactions
data.from.codestringCurrency code
data.from.coinstringCommon asset ticker
data.from.networkstringBlockchain network in which this asset is represented
data.from.namestringName of currency
data.from.aliasstringAlias for creating qr code
data.from.amountstringAmount that the client needs to send
data.from.addressstringThe destination address to which the user is ought to deposit his funds in order for the trade to execute
data.from.tagstringMEMO or Destination Tag if required
data.from.addressMixstringAddress with a colon-connected tag
data.from.reqConfirmationsnumberRequired number of transaction confirmations
data.from.maxConfirmationsnumberThe maximum number of transaction confirmations that system updates
data.from.txObjectAn object containing data about the received transaction
data.from.tx.idstringTransaction hash
data.from.tx.amountstringTransaction amount
data.from.tx.feestringMiner fee
data.from.tx.ccyfeestringCurrency of Miner fee
data.from.tx.timeRegnumberTransaction registration timestamp
data.from.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.from.tx.confirmationsnumberNumber of transaction confirmations
data.toObjectAn object containing information about the currency received by the client and the transaction
data.to.codestringCurrency code
data.to.coinstringCommon asset ticker
data.to.networkstringBlockchain network in which this asset is represented
data.to.namestringName of currency
data.to.aliasstringAlias for creating qr code
data.to.amountstringAmount that the client must to receive
data.to.addressstringThe destination address to which the funds will be dispatched upon the successful completion of the order
data.to.tagstringMEMO or Destination Tag if required
data.to.addressMixstringAddress with a colon-connected tag
data.to.txObjectAn object containing data about the sent transaction
data.to.tx.idstringTransaction hash
data.to.tx.amountstringTransaction amount
data.to.tx.feestringMiner fee
data.to.tx.ccyfeestringCurrency of Miner fee
data.to.tx.timeRegnumberTransaction registration timestamp
data.to.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.to.tx.confirmationsnumberNumber of transaction confirmations
data.backObjectAn object containing information about the currency returned to the client and the transaction
data.back.codestringCurrency code
data.back.coinstringCommon asset ticker
data.back.networkstringBlockchain network in which this asset is represented
data.back.namestringName of currency
data.back.aliasstringAlias for creating qr code
data.back.amountstringThe amount that the client should receive upon return, excluding the miner fee
data.back.addressstringThe return address to which the funds will be sent when choosing a refund
data.back.tagstringMEMO or Destination Tag if required
data.back.addressMixstringAddress with a colon-connected tag
data.back.txObjectAn object containing data about the returned transaction
data.back.tx.idstringTransaction hash
data.back.tx.amountstringTransaction amount
data.back.tx.feestringMiner fee
data.back.tx.ccyfeestringCurrency of Miner fee
data.back.tx.timeRegnumberTransaction registration timestamp
data.back.tx.timeBlocknumberTimestamp for adding a transaction to a block
data.back.tx.confirmationsnumberNumber of transaction confirmations
data.emergencyObjectAn object containing data about the emergency in the order
data.emergency.statusArrayEmergency status. Can be multiple values from:
EXPIRED — the transaction was received after the expiration of the order
LESS — a transaction was sent with an amount less than in the order
MORE — a transaction was sent with an amount greater than in the order
LIMIT — a transaction was sent with an amount less or more than the limit; used with LESS or MORE
data.emergency.choicestringuser choice. Can be one of the values:
NONE — Choice not made
EXCHANGE — Continue order at the new market rate
REFUND — Make a refund minus the network commission
data.emergency.repeatbooleanif true, then a repeated transaction has been received for this order
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": {
    "id": "TESTID",
    "type": "float",
    "email": "",
    "status": "NEW",
    "time": {
      "reg": 1676458603,
      "start": null,
      "finish": null,
      "update": 1676458603,
      "expiration": 1676460403,
      "left": 1800,
    },
    "from": {
      "code": "BTC",
      "coin": "BTC",
      "network": "BTC",
      "name": "Bitcoin",
      "alias": "bitcoin",
      "amount": "0.50000000",
      "address": "bc1qm8e58htm6qlhz5u7awhe4a5kxt3w86ffwtl9j0",
      "addressAlt": null,
      "tag": null,
      "tagName": null,
      "reqConfirmations": 1,
      "maxConfirmations": 6,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "to": {
      "code": "USDTTRC",
      "coin": "USDT",
      "network": "TRX",
      "name": "Tether (TRC20)",
      "alias": "usdt",
      "amount": "11062.06500000",
      "address": "TVnbp1VCJ1TpWMom4k3URfFky9FGfPdZPd",
      "tag": null,
      "tagName": null,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "back": {
      "code": null,
      "coin": null,
      "network": null,
      "name": null,
      "alias": null,
      "amount": null,
      "address": null,
      "tag": null,
      "tagName": null,
      "tx": {
        "id": null,
        "amount": null,
        "fee": null,
        "ccyfee": null,
        "timeReg": null,
        "timeBlock": null,
        "confirmations": null,
      },
    },
    "emergency": {
      "status": [],
      "choice": "NONE",
      "repeat": 0,
    },
  },
}

Escolha de Ação de Emergência

POSThttps://ff.io/api/v2/emergency

Selecionar uma ação (continuação da troca ou devolução) para um pedido no status EMERGENCY.

Parâmetros

NameRequiredTypeDescription
idtruestringOrder ID
tokentruestringOrder security token received when creating an order in data.token
choice true string Choice of action in the EMERGENCY status. Can be one of the values:
EXCHANGE — Continue the exchange at the market rate at the time the selection was made or at the time the order was corrected
REFUND — Refund minus miner fee
addressfalse*stringThe address to which the refund is to be made. Required if choice="REFUND".
tagfalsestringMEMO or Destination Tag if required
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"id":"TESTID","token":"TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7","choice":"EXCHANGE"}'
  "https://ff.io/api/v2/emergency" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'id'    => 'TESTID',
    'token' => 'TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7',
    'choice' => 'EXCHANGE',
  );
  
  return $ff->emergency($data);
?>

Resposta

Uma resposta bem-sucedida contém True se a escolha na ordem foi definida.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
databooleanTrue if successful
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": true,
}

Inscrever-se na notificação

POSThttps://ff.io/api/v2/setEmail

Inscreva-se para receber notificações por e-mail sobre uma alteração no status do pedido selecionado.

Parâmetros

NameRequiredTypeDescription
idtruestringOrder ID
tokentruestringOrder security token received when creating an order in data.token
emailfalse*stringEmail address to which email notifications about order status changes should be sent
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"id":"TESTID","token":"TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7","email":"[email protected]"}'
  "https://ff.io/api/v2/setEmail" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'id'    => 'TESTID',
    'token' => 'TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7',
    'email' => '[email protected]',
  );
  
  return $ff->setEmail($data);
?>

Resposta

Uma resposta bem-sucedida contém True se a notificação foi inscrita.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
databooleanTrue if successful
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": true,
}

Imagens de códigos QR

POSThttps://ff.io/api/v2/qr

Obtendo uma lista de imagens de códigos QR para um pedido

Parâmetros

NameRequiredTypeDescription
idtruestringOrder ID
tokentruestringOrder security token received when creating an order in data.token
Example request
cURL -X POST \
  -H "Accept: application/json" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "X-API-SIGN: GENERATED_SIGN" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"id":"TESTID","token":"TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7","choice":"EXCHANGE"}'
  "https://ff.io/api/v2/qr" -L
<?php
  require_once('fixedfloat.php');
  
  $ff = new FixedFloatApi(YOUR_API_KEY, YOUR_API_SECRET);
  
  $data = array(
    'id'    => 'TESTID',
    'token' => 'TESTTOKENvRB90NOtr397kHY3PJ1VRy2p29HHaN7',
  );
  
  return $ff->qr($data);
?>

Resposta

Uma resposta bem-sucedida contém uma matriz de objetos com informações sobre o nome do código QR e sua imagem no formato Base64.

FieldTypeDescription
codenumberResponse status code. If the request is successful, then the status code is "0", otherwise it is an error
msgstringStatus message
dataArrayArray of objects with information about the name of the QR code and its image in Base64 format
data[].titlestringQR code name
data[].srcstringBase64 encoded QR code image
data[].checkedbooleanIf True, then defined as the default QR code
Example JSON response
{
  "code": 0,
  "msg": "",
  "data": [
    {
      "title": "With amount",
      "src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAECAQMAAAAvgUsTAAAABlBMVEX///8AAABVwtN+AAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAjlJREFUaIHdmeFtxSAMhC0xwBuJ1RmJAZBc7s5O+tQJrlGaNuH742LOZ4j4R9dIXPHJ3IE71/kkRyYGthWx8YLnJw8HLjFy5Z6hUSdi4oXDujv4ef8RjsQNLz7rxEUXAuZ3V4IpeDCFd+YWg3ckkHn3J7dScHVefuepBUF1wDz9ub/0w4F4lHlA4xbmj8vpHTMi7lcMZ+UclhPmT3p3rIiB8K4iBD/di39TIG7MXgQhqHaI4JwxfiwtL+L+Gvq0q6YCwpy1UvgQkLmr0XhhzD1njN+MUO3R/I1fc6b404pQ4QytH4V3n9lm1IrQi+oNUpB6R1sABTxhRezZAs2FBBFfmkVotxWhlcMegNZTr+gKZIDciKd80j0fVqMjHd9OBLSA3SaykO4ZPSdDHe3pXAh5Ai0hqp4C7qcV0dWUi4f5J4sD1aPjMSKUhWo+T7WdUzre2xw+BAVO2ZZU6iw/OqMvF0Lm5kjs2uVw2JIol8Mm55Vsdgi5nYgofwPJPhK+PUu4o4uQCVHNsyxavnW0ddyK2Ko6qqD0N4SSe2pSbRsi8zHQyVaTel3NW/lTH0ING+vNVLRKR+0SWhGLdm1pW1N9jpxo93NOhHob7TjL8aAxyHyjNSGeKiN/NmpfI8fbFdgQ2qVlqBpG25ltQ80I7mayN0j1OVHpGLXx4UTMzrZeTp98rNtwJKrh1NlM9PlTpiHxHPupc5ZA/PZ0JkRlYXQd1Yqqg0AvIsuZ6bz8sPbQSa9vpTMg/tH1A833/BcCRiH/AAAAAElFTkSuQmCC",
      "checked": true,
    },
    {
      "title": "Address",
      "src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOoAAADqAQMAAACWWksNAAAABlBMVEX///8AAABVwtN+AAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAdtJREFUWIXVmOGtBCEIhEksYEuy9S3JAkw4mAHfu1wDo9nbuH7+4YABNbt2DM9hTz5j2Y6l5/U1c3Vp4/jZjKUA8c0nV4ik8Qwzhr/xON694lfgMCw+gm04ads1ON4bXsmJ2SU4Q4cuiVVE0k+saWIk8IBt/5+v/JbENR5sCtuetPBHOyVxJkC6JCaUzhRNT90UxxExDtExiCbUE5FE85RxCU05Y6dvch4TeZzO4NtbgOCPyQTWxekSh0RCdx5Hf1C9gjQOlyATTuinV5ZVi6ON2X5Vc5MMterpNFDFWHqtot+ZwNiRm6SxcTZZaLE0K6uXNsZfz9CBG3ITgqmrgSoGaNvoD5jXsaaMIZQstChaJ5h4ZJLFZpOHvdpUmRyfPrQx+/Wxqo/3Uk/DPnWcNclhSfY3qfW700MZUzTZyhii/wRTSY8sNsPR46X6UPQzn9mQCePR1wEDBw9kRSWzOLaqUmzFJn1TRxF5nM5ADEFAnVX2eEwWwyUlmnTMrvCq87cs5mChtb4pYHOwTRrXhWnfvwxcO/Jew8TxuR5FZdp/+2iYMq4LUzZkyIrZ1l6A2bKzM7BubvYduBqC6mbq7CSO7biBhz2WKIcGSWPGDeQet0jVGYzWVFl87fgAoKe53k6WtX8AAAAASUVORK5CYII=",
      "checked": false,
    },
  ],
}