Skip to main content
POST
/
v1
/
transfers
/
create
Create Transfer (beta)
curl --request POST \
  --url https://api.streambird.io/v1/transfers/create \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "dest_currency": "solana",
  "source": "wallet_2DJJmE5IhB1M7I8jJ7JuyCiOtiC",
  "dest": "3eiTLfEg8koaNgNMcmygm2nQ3APNNNWAyHGiooGwAziK",
  "source_amount": "0.005",
  "notes": "test",
  "amount_includes_fees": true,
  "user_id": "user_2DJJeF75Jd2NIj6NyJMxEw0pXiA"
}'
{
  "id": "transfer_2DJMdUNmkPDIFNVWiTNHTiBL0NB",
  "app_id": "app_25ldv51seNohTaYRsxdfoxMlAa2",
  "user_id": "user_2DJJeF75Jd2NIj6NyJMxEw0pXiA",
  "status": "unconfirmed",
  "source": "wallet_2DJJmE5IhB1M7I8jJ7JuyCiOtiC",
  "source_amount": "0.005",
  "dest": "3eiTLfEg8koaNgNMcmygm2nQ3APNNNWAyHGiooGwAziK",
  "dest_amount": "0.004995",
  "dest_currency": "solana",
  "source_currency": "solana",
  "custom_id": null,
  "total_fees": "0.000005",
  "notes": "test",
  "blockchain_tx_hash": "",
  "completed_at": 0,
  "cancelled_at": 0,
  "expires_at": 1660412941,
  "created_at": 1660412821,
  "updated_at": 1660412821
}

Authorizations

Authorization
string
header
required

Auth Platform API includes all the Auth related features. All Users, Phone Numbers, Emails, and OTPs are associated with an App as the container.

Endpoints only accept App's Secret API keys other than certain endpoints that are used client side or via SDK that accept the public_token.

Authentication using App Api Key

Header:

Authorization: Bearer {api_key}

Authenticated Request

curl \
-X GET https://api.streambird.io/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \
-H "Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r"

Body

application/json
dest_currency
string
required

Token currency to send to the destination from the specified wallet. We will first check to make sure the wallet contains the amount you intend to send. However, since these are actual wallets, there could be a delay from the blockchain network that claims the balance is higher if multiple requests are being sent in a short window. This could result in the system thinking that it has enough balance but when the user confirms it, it will fail due to insufficient balance. Same issues can apply if a deposit is made to the wallet recently and not reflected in the blockchain yet. Possible values: bitcoin, ethereum, solana, AVAX, MATIC, DOT, XLM (more coming soon).

  • Wallet type ethereum is compatible with the following currencies: ethereum, MATIC, AVAX.
  • Wallet type solana is compatible with the following currencies: solana.
  • Wallet type bitcoin is compatible with the following currencies: bitcoin.
  • Wallet type DOT is compatible with the following currencies: DOT.
  • Wallet type XLM is compatible with the following currencies: XLM.
source
string
required

Unique wallet ID of the wallet to retrieve balance for.

dest
string
required

Any wallet address of the same wallet type as the source. For example, wallet_type of ethereum will only be compatible with a dest that is an ethereum address.

Blockchain specific transfer behaviors:

  • XLM (Stellar)

Different from other protocol/chains, when transferring from Streambird wallet to an external address, user is required to include a memo attached to the end of the address separated by :. For example: GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37:3652667947 where the destination address is GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37 and stellar memo is 3652667947.

source_amount
string
required

decimal in string The total amount to transfer to the destination. If amount_includes_fees is set to true, we will auto calculate the fees to ensure the maximum amount withdrawn from the source is same as the specified amount. However, if amount_includes_fees is set to false, we will calculate the fees and auto increment the source_amount that gets returned in the response. We recommend that you show both the returned source_amount, dest_amount (how much recipient will receive), and also the total_fees to your user. Source amount stored with a transfer object will always be an all inclusive amount containing any fees calculated by the platform.

notes
string

Optional notes you want to store with this transaction.

amount_includes_fees
boolean

Determines of the source_amount includes fees. If set to false, we will increment the source_amount automatically.

user_id
string

Optional user ID to send in with the transfer, which will trigger a platform validation to ensure the source wallet is owned by the specified user to avoid usage error.

Response

200 - application/json

Create Transfer (beta) response

id
string
app_id
string
user_id
string
status
string
source
string
source_amount
string
dest
string
dest_amount
string
dest_currency
string
source_currency
string
custom_id
any
total_fees
string
notes
string
blockchain_tx_hash
string
completed_at
integer
cancelled_at
integer
expires_at
integer
created_at
integer
updated_at
integer