Issue a reward
curl --request POST \
--url https://api.staging.blackbird.xyz/flynet/v1/issue_rewardconst options = {method: 'POST'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/issue_reward', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'POST'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/issue_reward', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Rewards
Issue a reward
POST
/
issue_reward
Issue a reward
curl --request POST \
--url https://api.staging.blackbird.xyz/flynet/v1/issue_rewardconst options = {method: 'POST'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/issue_reward', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'POST'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/issue_reward', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Issue a FLY reward from your app’s wallet to a member. The transfer is
immediate and credited straight to the member’s wallet.
Auth: API key in
X-API-Key. The key must carry the write:rewards scope, and
your app’s wallet must hold enough FLY to cover the amount.
Chef’s warning — rewards are irreversible. There is no refund once issued.
The call is idempotent, though: replaying the same
idempotency_key returns the
reward you already issued instead of sending a second one, so retries are safe.Example
curl -X POST "https://api.staging.blackbird.xyz/flynet/v1/issue_reward" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "{uuid}",
"amount": { "value": "1000000000000000000", "currency": "FLY" },
"description": "Loyalty streak reward",
"idempotency_key": "reward-12345"
}'
Response
201 on a new reward; 200 on an idempotent replay.
{
"id": "{uuid}",
"object": "reward",
"user_id": "{uuid}",
"amount": { "value": "1000000000000000000", "currency": "FLY" },
"description": "Loyalty streak reward",
"metadata": null,
"created_at": "2026-06-21T18:18:31.078859Z"
}
| Field | Type | Notes |
|---|---|---|
id | UUID | The reward id. |
amount.value | string | FLY in wei (18-decimal). Send and read it as a string. |
idempotency_key | string | Replaying it returns the existing reward, not a new one. |
Tasting note —
amount.value is FLY wei as a string: a 1 FLY reward is
"1000000000000000000". Your app’s wallet must hold enough FLY; an insufficient
balance is rejected, so top up before issuing.