Send native assets and tokens
curl --request POST \
--url https://api.afkcrypto.com/v1/send \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "<string>",
"to": "<string>",
"amount": "<string>",
"from": "<string>",
"token": "<string>"
}
'import requests
url = "https://api.afkcrypto.com/v1/send"
payload = {
"chain": "<string>",
"to": "<string>",
"amount": "<string>",
"from": "<string>",
"token": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
chain: '<string>',
to: '<string>',
amount: '<string>',
from: '<string>',
token: '<string>'
})
};
fetch('https://api.afkcrypto.com/v1/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.afkcrypto.com/v1/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => '<string>',
'to' => '<string>',
'amount' => '<string>',
'from' => '<string>',
'token' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.afkcrypto.com/v1/send"
payload := strings.NewReader("{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.afkcrypto.com/v1/send")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.afkcrypto.com/v1/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{ "id": "tx_...", "status": "SUBMITTED", "hash": "0x...", "explorerUrl": "https://basescan.org/tx/0x...", "chainName": "Base" }
نقاط النهاية
إرسال أصل (EVM + Solana)
أرسل الأصول والرموز على EVM وSolana عبر طلبات POST ذات اللاتغيّر.
POST
/
send
Send native assets and tokens
curl --request POST \
--url https://api.afkcrypto.com/v1/send \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "<string>",
"to": "<string>",
"amount": "<string>",
"from": "<string>",
"token": "<string>"
}
'import requests
url = "https://api.afkcrypto.com/v1/send"
payload = {
"chain": "<string>",
"to": "<string>",
"amount": "<string>",
"from": "<string>",
"token": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
chain: '<string>',
to: '<string>',
amount: '<string>',
from: '<string>',
token: '<string>'
})
};
fetch('https://api.afkcrypto.com/v1/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.afkcrypto.com/v1/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain' => '<string>',
'to' => '<string>',
'amount' => '<string>',
'from' => '<string>',
'token' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.afkcrypto.com/v1/send"
payload := strings.NewReader("{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.afkcrypto.com/v1/send")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.afkcrypto.com/v1/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"<string>\",\n \"to\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": \"<string>\",\n \"token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{ "id": "tx_...", "status": "SUBMITTED", "hash": "0x...", "explorerUrl": "https://basescan.org/tx/0x...", "chainName": "Base" }
يتطلب ترويسة
Idempotency-Key. ERC20 يستدعي transfer()؛ SPL قد ينشئ ATA عند الحاجة.{ "id": "tx_...", "status": "SUBMITTED", "hash": "0x...", "explorerUrl": "https://basescan.org/tx/0x...", "chainName": "Base" }
التفويضات
الترويسات
Provide a unique Idempotency-Key per user to ensure single submission.
الجسم
application/json
Chain slug (e.g., base, base-sepolia, solana-devnet).
Recipient wallet address (owner for token transfers).
Asset type to send.
الخيارات المتاحة:
native, erc20, spl Amount in base units (wei/lamports/token units).
Optional sender wallet; defaults to user's default wallet for the chain.
Token address (EVM) or mint (Solana) when sending tokens.
الاستجابة
Submission accepted
AFK transaction id for the submitted action.
Submission status.
الخيارات المتاحة:
SUBMITTED On-chain transaction hash/signature (may be null at submission time).
Direct link to the transaction on a chain explorer. Null until a hash/signature exists.
Human-readable chain name for display (e.g., Base, Ethereum, Solana).