Developers
API
Send Authorization: Bearer fb_live_… and Content-Type: application/json. Amounts are lamports. 1 SOL is 1000000000.
https://api.voux.fun/api/v1
Scopes
read
Balances, tasks you created, claims, wallets, deposits, and withdrawals.
tasks:write
Create, pause, resume, and cancel tasks.
claims:write
Claim a slot, ask for a follow check, or release a reservation.
wallets:write
Add a follow wallet after its owner signs a challenge.
A key allows 60 requests a minute and 600 an hour. Marketplace reads do not need a key.
Account
GET /me
Your account.
read
GET /balances
available, locked, pending, withdrawing, and total. Each value is lamports, as a string.
read
GET /deposits
Recent deposits.
read
GET /withdrawals
Recent withdrawals.
read
GET /me/earnings
Pending and paid follow earnings.
read
GET /notifications
Recent notifications.
read
Marketplace
GET /tasks?sort=price_desc
Open tasks. sort is price_desc, newest, or ending_soon.
GET /tasks/{id}
One task.
POST /tasks/quote
Body: { quantity, priceLamports }. Returns the fee and the total that would be locked.
Tasks
POST /tasks
Body: { targetAddress, quantity, priceLamports, durationDays, title, note, maxPerAccount, requirements, idempotencyKey }. targetAddress is a Solana address, a pump.fun profile link, or a pump.fun coin link. priceLamports is a string. quantity is 10 to 100,000. Repeat the same idempotencyKey to avoid creating the task twice.
tasks:write
GET /me/tasks
Tasks you created.
read
POST /me/tasks/{id}/pause
Body: {}.
tasks:write
POST /me/tasks/{id}/resume
Body: {}.
tasks:write
POST /me/tasks/{id}/cancel
Body: {}. Refunds slots that are still open.
tasks:write
Claims
GET /tasks/{id}/eligible-wallets
Which of your follow wallets can take this task.
read
POST /tasks/{id}/claims
Body: { walletIds }. 1 to 100 wallet ids. Returns created and skipped.
claims:write
GET /me/claims
Your claims.
read
POST /claims/{id}/verify
Body: {}. Asks for a follow check after you follow on pump.fun.
claims:write
POST /claims/{id}/release
Body: {}. Gives the slot back while it is still reserved.
claims:write
Follow wallets
GET /wallets
Your follow wallets. Optional query: status, q.
read
GET /wallets/summary
Counts by status.
read
POST /wallets/challenge
Body: { address }. Returns a message for that wallet to sign.
wallets:write
POST /wallets
Body: { address, nonce, signature, label }. Sends the signed challenge.
wallets:write
POST /wallets/bulk/challenges
Body: { addresses }. Up to 1,000 addresses.
wallets:write
POST /wallets/bulk/verify
Body: { account, items: [{ address, nonce, signature }] }.
wallets:write
PATCH /wallets/{id}
Body: { label, disabled }.
wallets:write
POST /wallets/{id}/refresh
Body: {}. Checks the pump.fun profile again.
wallets:write
Errors
Failed requests return { "error": { "code", "message" } }. 401 means the key is not valid. 403 means the key is missing the scope. 429 means the key is over its limit.