Billing & Deposits

Understand how API billing works, make deposits, and manage your account balance.

⚠️ Important: No Withdrawals

Deposits are final and cannot be withdrawn. Your deposited funds can only be used to pay for API requests. Only deposit what you intend to use.

How Billing Works

1

Prepaid Balance

Deposit SOL or USDC to your account. Deposits are converted to USD at current market rates.

2

Pay Per Request

Each API request costs a small amount in USD. The cost is deducted from your balance immediately.

3

Cost in Response

Every response includes a costUsd field showing exactly what was charged.

Complete API Pricing

All prices are in USD and deducted from your prepaid balance. Failed requests are not charged.

Spot Requests (Immediate)

EndpointMethodCostDescription
/price/:symbolGET$0.01Single VWAP price lookup
/price/batchPOST$0.05 + $0.01/symbolBatch prices (max 50 symbols)
/ai/resolvePOST$0.25AI multi-model consensus resolution
/ai/request/:idGETFreePoll AI resolution status
/historical/price/:symbolGET$0.05Historical price data (max 1000 points)
/marketsGET$0.05List markets with filters
/markets/:idGET$0.02Single market details

Scheduled Requests (Future Execution)

Note: Scheduled requests cost more than spot requests because they include guaranteed execution at a specific time plus webhook delivery of results.

EndpointMethodCostDescription
/price/schedulePOST$0.05Schedule price check + webhook
/ai/schedulePOST$0.50Schedule AI resolution + webhook
/price/scheduledGETFreeList scheduled price jobs
/ai/scheduledGETFreeList scheduled AI jobs
*/scheduled/:id/cancelPOSTFree (refund)Cancel job & get full refund

WebSocket (Real-time Streaming)

EndpointCostDescription
/ws$0.10/hourReal-time price subscriptions (billed hourly while connected)

Spot vs Scheduled Comparison

Request TypeSpot (Now)Scheduled (Future)Difference
Price Query$0.01$0.05+$0.04 (webhook + scheduling)
AI Resolution$0.25$0.50+$0.25 (webhook + scheduling)

Scheduled requests include guaranteed execution at your specified time and automatic webhook delivery of results. Cancelled jobs receive a full refund.

Making Deposits

You can deposit SOL or USDC to fund your API account.

Accepted Tokens

TokenMint AddressConversion
SOLNativeMarket rate at deposit time
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v1:1 USD

Deposit Methods

1. Dashboard Deposit Button

Use the "Deposit Funds" button in your API Dashboard to deposit directly from your connected wallet.

2. Direct Transfer

Send SOL or USDC directly to the treasury address shown in your dashboard. Deposits are automatically detected and credited.

Rate Limit Tiers

Your rate limit tier is determined by your lifetime deposits. Higher tiers get more requests per minute.

TierRequests/minRequirement
STANDARD60Default tier
PRO300$100+ lifetime deposits
ENTERPRISE1000Contact sales

Tier upgrades are automatic when you reach the deposit threshold. You'll see a notification in your dashboard.

Per-Key Customization: You can set custom rate limits on individual API keys (up to your tier's maximum) and configure daily/monthly request quotas. See Authentication for details.

Usage Quotas

In addition to rate limits, you can set usage quotas on individual API keys to control total request volume.

  • Daily Quota — Limit requests per day (resets at midnight UTC)
  • Monthly Quota — Limit requests per month (resets on the 1st)
  • Quotas are measured in request count, not dollar amounts

Quotas help prevent unexpected usage spikes and allow you to allocate request budgets across different keys for different applications or environments.

Checking Your Balance

Use the account endpoint to check your current balance:

cURL
curl -X GET "https://api.predikt.fun/api/v1/account" \
-H "Authorization: Bearer pk_live_your_api_key"
Response (200)
{
"id": "acc_abc123",
"balanceUsd": "45.67",
"totalDepositsUsd": "100.00",
"totalSpentUsd": "54.33",
"rateLimitTier": "PRO",
"totalRequests": 2456
}

Insufficient Balance

If your balance is too low to complete a request, you'll receive a 402 error:

Response (402)
{
"error": "Insufficient balance",
"code": "INSUFFICIENT_BALANCE",
"balanceUsd": "0.01",
"requiredUsd": "0.02"
}

Next Steps