curl --request POST \
--url https://aropay.aro.media/api/v1/fund \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"walletId": "ckwlt0001abcd"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({walletId: 'ckwlt0001abcd'})
};
fetch('https://aropay.aro.media/api/v1/fund', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://aropay.aro.media/api/v1/fund"
payload = { "walletId": "ckwlt0001abcd" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"data": {
"transaction": {
"id": "cktxn0001abcd",
"type": "FUND",
"status": "QUEUED",
"chainId": 11155111,
"amount": "1000.00",
"token": "AROUSD",
"txHash": null,
"settlementTxHash": null,
"explorerUrl": null,
"fromAddress": null,
"toAddress": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
"counterparty": null,
"walletId": "ckwlt0001abcd",
"error": null,
"errorCode": null,
"metadata": null,
"createdAt": "2026-08-13T09:35:00.000Z",
"updatedAt": "2026-08-13T09:35:00.000Z"
}
}
}{
"ok": false,
"error": {
"code": "faucet_cap_exceeded",
"message": "Funding is capped at 1000 AROUSD per 24h. Try again later or request less."
}
}{
"ok": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}{
"ok": false,
"error": {
"code": "account_disabled",
"message": "This account is disabled."
}
}{
"ok": false,
"error": {
"code": "not_found",
"message": "Not found."
}
}{
"ok": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Try again shortly."
}
}{
"ok": false,
"error": {
"code": "internal_error",
"message": "An unexpected error occurred."
}
}{
"ok": false,
"error": {
"code": "fhe_credentials_missing",
"message": "Confidential operations are disabled until FHE relayer credentials are configured."
}
}Fund wallet
Faucet: the platform operator sends test stablecoin to the wallet and
tops up ETH for gas in the same call. amount is optional; omit it
for the deployment default. Faucet volume is capped per account over
a rolling 24 hours.
Sandbox (Sepolia) only. On Production (Mainnet) the faucet would
move real funds, so this endpoint does not exist there and returns
404 before authentication. Fund production wallets by depositing to
their on-chain address instead.
Asynchronous: returns 201 immediately with the transaction in status
QUEUED (txHash: null); a background worker sends the gas top-up
(hash in metadata.gasTxHash) and then the stablecoin transfer
(txHash). Poll GET /transactions/{id} until status is
CONFIRMED or FAILED. Execution failures surface as status FAILED
with errorCode on the transaction (e.g. faucet_failed,
faucet_cap_exceeded), not as an HTTP error.
curl --request POST \
--url https://aropay.aro.media/api/v1/fund \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"walletId": "ckwlt0001abcd"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({walletId: 'ckwlt0001abcd'})
};
fetch('https://aropay.aro.media/api/v1/fund', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://aropay.aro.media/api/v1/fund"
payload = { "walletId": "ckwlt0001abcd" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"data": {
"transaction": {
"id": "cktxn0001abcd",
"type": "FUND",
"status": "QUEUED",
"chainId": 11155111,
"amount": "1000.00",
"token": "AROUSD",
"txHash": null,
"settlementTxHash": null,
"explorerUrl": null,
"fromAddress": null,
"toAddress": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
"counterparty": null,
"walletId": "ckwlt0001abcd",
"error": null,
"errorCode": null,
"metadata": null,
"createdAt": "2026-08-13T09:35:00.000Z",
"updatedAt": "2026-08-13T09:35:00.000Z"
}
}
}{
"ok": false,
"error": {
"code": "faucet_cap_exceeded",
"message": "Funding is capped at 1000 AROUSD per 24h. Try again later or request less."
}
}{
"ok": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}{
"ok": false,
"error": {
"code": "account_disabled",
"message": "This account is disabled."
}
}{
"ok": false,
"error": {
"code": "not_found",
"message": "Not found."
}
}{
"ok": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Try again shortly."
}
}{
"ok": false,
"error": {
"code": "internal_error",
"message": "An unexpected error occurred."
}
}{
"ok": false,
"error": {
"code": "fhe_credentials_missing",
"message": "Confidential operations are disabled until FHE relayer credentials are configured."
}
}Authorizations
AroPay API key, sent as Authorization: Bearer aro_sk_…. Created in
the dashboard under Settings → API keys. Takes precedence over a
session cookie when both are present.