Billing and pricing
You pay from a prepaid dollar balance your team shares. No subscription, and the balance never expires.
- What it does
- Explains how you pay for the API.
- You send
- Nothing extra. Paid requests take their price from your balance.
- You get back
- Each successful reply shows its dollar price (
X-Costheader). - Cost
- Checking your balance and re-reading results you paid for are free.
How it works
- Add funds on the Billing page, which shows the minimum.
- You pay for each accepted request, even if it finds nothing. Rejected requests (errors) are free, and so is a request whose reply never reaches you (it timed out or your connection closed first). A one-time agent is charged even if its run fails. A creator, sound, or hashtag lookup that fails (for example, the handle doesn't exist) is refunded later, as is a post collection that finds nothing.
- Optional: turn on auto top-up in Settings to refill from your card when you run low.
Scheduled charges
- Recurring agents: free to create, then $0.50 per run ($1.50 with Data Intelligence). The first run starts right away, so your balance must cover it.
- Tracking: $0.25 to start (covers the first check), then $0.25 per check. Asking for a creator's older posts (
collection_depth) adds a one-time $0.50, $1.00, or $2.00.
Runs and later checks never show up in X-Cost. See each one on the Usage page, or check your balance for free.
If your balance runs out, these pause, and adding funds won't restart them. To resume, set active: true with Update agent, or status: active with Update tracking.
Check your balance
Returns your team's balance. Free.
curl https://api.virlo.ai/v1/account/balance \
-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"balance": "$259.25",
"credits_remaining": 25925,
"status": "active"
}
}
- Name
balance- Type
- string
- Description
Your balance in dollars.
- Name
credits_remaining- Type
- integer
- Description
The same balance in credits (1 credit = $0.01).
- Name
status- Type
- string
- Description
active, orzero_balanceonce it runs out.
Prices
| Task | Price |
|---|---|
| Content Research Agent run | $0.50, $1.50 with Data Intelligence |
| Creator lookup | $0.50, up to $1.75 with add-ons |
| Sound lookup | $0.50, up to $1.00 |
| Hashtag lookup | $0.50, up to $2.50 |
| Topic Trends, digests, trending sounds and hooks | $0.25 |
| Format Trends list | $0.25 |
| One format trend | $0.05 |
| Hashtag stats, sound search, hook library | $0.05 to $0.10 |
Full list below.
| Endpoint | Method | Price per request | What it does |
|---|---|---|---|
/v1/agents | POST | $0.50 / run | Create a Content Research Agent. A one-time agent (is_recurring=false) is charged once, when you create it. A recurring agent (is_recurring=true) is free to create and charged after each run. Listing agents and reading results are free. |
/v1/tracking/creators/:id/posts | ALL | Free | A tracked creator's posts, with numbers for each |
/v1/tracking/creators/:id/posts/:post_id | ALL | Free | One post from a tracked creator |
/v1/tracking/creators/:id/posts/collect | ALL | $0.50 to $2.00 | Collect a tracked creator's older posts (price depends on depth). Refunded if no posts are found. |
/v1/tracking/creators/:id/posts/collect/:collection_id | ALL | Free | Check a post collection's status |
/v1/tracking/creators/:id/posting-cadence | ALL | Free | How often a tracked creator posts |
/v1/satellite/creators/batch | ALL | $0.50 / creator | Batch creator lookup (up to 25 creators). A creator looked up in the last 6 hours with at least the same options comes back from cache, free. |
/v1/satellite/creators/batch/:batch_id | ALL | Free | Check a batch lookup's status |
/v1/tracking/creators/:id/audience-demographics | ALL | Free | A tracked creator's audience by age and gender |
/v1/tracking/creators/:id/audience-geography | ALL | Free | A tracked creator's audience by country |
/v1/tracking/creators/:id/audience-refresh | ALL | $0.50 | Make a new audience snapshot for a tracked creator. Free on a cache hit, or while a snapshot is already being built. |
/v1/tracking/creators/:id/audience-refresh/:jobId | ALL | Free | Check an audience snapshot's status |
/v1/satellite/sounds/status/:job_id | GET | Free | Check a sound lookup's status |
/v1/satellite/runs/:run_id | GET | Free | Re-read a saved lookup |
/v1/satellite/runs | GET | Free | List your saved lookups (runs) |
/v1/satellite/runs/:run_id/videos | GET | Free | Page through a saved lookup's videos |
/v1/hooks/types | GET | Free | Which hook types win most often (free) |
/v1/tracking/creators/:id | ALL | Free | Get, update, or stop tracking a creator |
/v1/tracking/creators/:id/report | ALL | Free | A tracked creator's latest AI report |
/v1/tracking/creators/:id/snapshots | ALL | Free | A tracked creator's numbers at each check |
/v1/tracking/videos/:id | ALL | Free | Get, update, or stop tracking a video |
/v1/tracking/videos/:id/report | ALL | Free | A tracked video's latest AI report |
/v1/tracking/videos/:id/snapshots | ALL | Free | A tracked video's numbers at each check |
/v1/satellite/hashtags/status/:job_id | GET | Free | Check a hashtag lookup's status |
/v1/hooks/library/categories | GET | Free | Hook template categories (free) |
/v1/raw/:platform/creator/:handle | GET | $0.01 | A creator's live profile and counts |
/v1/raw/:platform/video/comments | GET | $0.01 | Live comments on a video: one page. Charged per page, even when empty. |
/v1/raw/:platform/hashtag/:hashtag | GET | $0.01 | Live videos under a hashtag: one page. Charged per page, even when empty. |
/v1/raw/:platform/video/transcript | GET | $0.01 | A TikTok or YouTube video's transcript |
/v1/raw/:platform/creator/:handle/videos | GET | $0.01 | A creator's videos, live: one page. Charged per page, even when empty. |
/v1/raw/:platform/search | GET | $0.01 | Live keyword search: one page of TikTok videos, YouTube Shorts or Instagram Reels. Charged per page, even when empty. |
/v1/raw/:platform/video | GET | $0.01 | One video's live details and counts |
/v1/instagram/hashtags | ALL | $0.05 | Top Instagram Reels hashtags for a date range |
/v1/tiktok/hashtags | ALL | $0.05 | Top TikTok hashtags for a date range |
/v1/youtube/hashtags | ALL | $0.05 | Top YouTube Shorts hashtags for a date range |
/v1/hashtags | ALL | $0.05 | Top hashtags across all platforms for a date range |
/v1/content-trends/:id | GET | $0.05 | One format trend with all its example videos and 30-day history |
/v1/sounds/:sound_id | GET | $0.05 | One sound's details. Matching it to a song (resolve=true) adds $0.10 the first time. |
/v1/sounds/:sound_id/usage-history | GET | $0.05 | A sound's daily usage history |
/v1/hashtags/:hashtag/performance | ALL | $0.05 | One hashtag's video count and views |
/v1/sounds/search | GET | $0.10 | Search sounds by title |
/v1/hooks/library | GET | $0.10 | Hook templates, with why each one works |
/v1/hooks/trending | GET | $0.25 | Top hooks from recent posts |
/v1/content-trends | GET | $0.25 | Format Trends: video formats creators are copying, reviewed by Virlo |
/v1/hooks/search | GET | $0.25 | Search about 1.4 million hooks by phrase or type |
/v1/agents/:id/hooks | GET | $0.25 | Top hooks from an agent's videos. Free when the agent has Data Intelligence, or while it has no hooks yet. |
/v1/tiktok/videos/digest | ALL | $0.25 | Most-viewed TikToks from the last 48 hours |
/v1/tracking/creators | POST | $0.25 | Start tracking a creator. The price covers the first check, and each later check costs the same. |
/v1/instagram/videos/digest | ALL | $0.25 | Most-viewed Instagram Reels from the last 48 hours |
/v1/trends | ALL | $0.25 | Topic Trends: daily lists for a date range |
/v1/trends/digest | ALL | $0.25 | Topic Trends: today's list for a region |
/v1/tracking/videos | POST | $0.25 | Start tracking a video. The price covers the first check, and each later check costs the same. |
/v1/sounds/breakout | GET | $0.25 | Sounds growing fastest from a small start |
/v1/sounds/trending | GET | $0.25 | Trending sounds |
/v1/sounds/:sound_id/videos | GET | $0.25 | Videos that use a sound |
/v1/sounds/by-creator/:platform/:handle | GET | $0.25 | Sounds a creator owns |
/v1/youtube/videos/digest | ALL | $0.25 | Most-viewed YouTube Shorts from the last 48 hours |
/v1/videos/digest | ALL | $0.25 | Most-viewed videos from the last 48 hours, all platforms |
/v1/trends/emerging | ALL | $0.25 | Topic Trends that are new or rising right now |
/v1/satellite/hashtags/:platform/:hashtag | GET | $0.50 | Hashtag lookup: stats, trends, and videos for one hashtag. Refunded in full if the lookup fails. |
/v1/satellite/sounds/:platform/:music_id | GET | $0.50 | Sound lookup (runs in the background). Refunded in full if the lookup fails. |
/v1/satellite/creator/:platform/:username | ALL | $0.50 | Creator lookup (runs in the background). Refunded in full if the lookup fails. |
/v1/satellite/video-outlier | POST | $0.50 | Video outlier check (runs in the background) |
Optional add-ons (charged on top of the base price)
| Add-on | Cost | Applies to |
|---|---|---|
| Data Intelligence for agents | +$1.00per run | data_intelligence_enabled=true on a Content Research Agent. An AI breakdown of every video (79 fields; slideshows get 70). One-time and recurring agents cost the same, and a recurring agent is charged once per run. It cannot be added to a run that already happened. |
| Trend analysis | +$0.50per lookup | trend_analysis=true on a creator, sound, or hashtag lookup. Reads up to about 300 videos and returns the patterns it finds in a trends block. Refunded when no trends come out (fewer than 10 videos, or the analysis step failed). |
| Data Intelligence for creator lookups | +$0.25per lookup | data_intelligence=true on a creator lookup. Adds each video's hook, content format, and visual style (43 fields; 35 for a photo carousel), plus a "what's working" summary. Read it on GET /v1/satellite/runs/:run_id. Refunded when there are no posts to enrich, the analysis fails, or the whole lookup fails. |
| Hashtag depth: deep | +$0.50per lookup | depth=deep (about 300 videos) on a hashtag lookup. Not charged when trend_analysis=true, which already collects that many. |
| Hashtag depth: full | +$1.50per lookup | depth=full (about 500 videos) on a hashtag lookup. |
| Audience snapshot | +$0.50per creator | audience_demographics or audience_geography on a creator lookup or batch lookup, or POST /v1/tracking/creators/:id/audience-refresh. Free when a snapshot from the last 30 days already exists or one is already being built. Refunded when the snapshot fails. |
Data Intelligence add-ons
An AI breakdown of each video:
- Agents:
data_intelligence_enabled: trueadds $1.00 per run (details). On a recurring agent, turning it on or off later affects only future runs. - Creator lookups:
data_intelligence=trueadds $0.25, so a lookup costs $0.75. You get each video's hook, content format, and visual style, plus a summary of what's working.
Response headers
Only successful responses carry these. Amounts have no $ sign.
X-Cost: the exact charge in dollars (0.00if free).X-Credits-Usedgives it in credits.X-Balance-Remaining: your balance afterward, on endpoints that can charge, even when this call was free. OnlyX-Costshows your charge.X-Credits-Remaininggives the balance in credits.
Insufficient balance
If your balance can't cover a request, you get a 402 and aren't charged. Messages vary, so read code, required_credits (price), and remaining_credits (balance), both in cents.
{
"statusCode": 402,
"message": "Insufficient balance. $0.25 required, $0.12 remaining. Add funds at https://dev.virlo.ai/dashboard/billing",
"error": "Payment Required",
"required_credits": 25,
"remaining_credits": 12,
"required_amount": "$0.25",
"remaining_balance": "$0.12",
"code": "insufficient_credits"
}
On auto top-up? The card charge may have failed, so check Billing. A 429 means too many requests, not low funds (Rate limits).

