Billing and pricing

You pay from a prepaid dollar balance your team shares. No subscription, and the balance never expires.

At a glance
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-Cost header).
Cost
Checking your balance and re-reading results you paid for are free.

How it works

  1. Add funds on the Billing page, which shows the minimum.
  2. 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.
  3. 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.

GET/v1/account/balance

Check your balance

Returns your team's balance. Free.

You send
GET
/v1/account/balance
curl https://api.virlo.ai/v1/account/balance \
  -H "Authorization: Bearer YOUR_API_KEY"
You get back
{
  "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, or zero_balance once it runs out.

Prices

TaskPrice
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.

EndpointMethodPrice per requestWhat it does
/v1/agentsPOST$0.50 / runCreate 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/postsALLFreeA tracked creator's posts, with numbers for each
/v1/tracking/creators/:id/posts/:post_idALLFreeOne post from a tracked creator
/v1/tracking/creators/:id/posts/collectALL$0.50 to $2.00Collect a tracked creator's older posts (price depends on depth). Refunded if no posts are found.
/v1/tracking/creators/:id/posts/collect/:collection_idALLFreeCheck a post collection's status
/v1/tracking/creators/:id/posting-cadenceALLFreeHow often a tracked creator posts
/v1/satellite/creators/batchALL$0.50 / creatorBatch 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_idALLFreeCheck a batch lookup's status
/v1/tracking/creators/:id/audience-demographicsALLFreeA tracked creator's audience by age and gender
/v1/tracking/creators/:id/audience-geographyALLFreeA tracked creator's audience by country
/v1/tracking/creators/:id/audience-refreshALL$0.50Make 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/:jobIdALLFreeCheck an audience snapshot's status
/v1/satellite/sounds/status/:job_idGETFreeCheck a sound lookup's status
/v1/satellite/runs/:run_idGETFreeRe-read a saved lookup
/v1/satellite/runsGETFreeList your saved lookups (runs)
/v1/satellite/runs/:run_id/videosGETFreePage through a saved lookup's videos
/v1/hooks/typesGETFreeWhich hook types win most often (free)
/v1/tracking/creators/:idALLFreeGet, update, or stop tracking a creator
/v1/tracking/creators/:id/reportALLFreeA tracked creator's latest AI report
/v1/tracking/creators/:id/snapshotsALLFreeA tracked creator's numbers at each check
/v1/tracking/videos/:idALLFreeGet, update, or stop tracking a video
/v1/tracking/videos/:id/reportALLFreeA tracked video's latest AI report
/v1/tracking/videos/:id/snapshotsALLFreeA tracked video's numbers at each check
/v1/satellite/hashtags/status/:job_idGETFreeCheck a hashtag lookup's status
/v1/hooks/library/categoriesGETFreeHook template categories (free)
/v1/raw/:platform/creator/:handleGET$0.01A creator's live profile and counts
/v1/raw/:platform/video/commentsGET$0.01Live comments on a video: one page. Charged per page, even when empty.
/v1/raw/:platform/hashtag/:hashtagGET$0.01Live videos under a hashtag: one page. Charged per page, even when empty.
/v1/raw/:platform/video/transcriptGET$0.01A TikTok or YouTube video's transcript
/v1/raw/:platform/creator/:handle/videosGET$0.01A creator's videos, live: one page. Charged per page, even when empty.
/v1/raw/:platform/searchGET$0.01Live keyword search: one page of TikTok videos, YouTube Shorts or Instagram Reels. Charged per page, even when empty.
/v1/raw/:platform/videoGET$0.01One video's live details and counts
/v1/instagram/hashtagsALL$0.05Top Instagram Reels hashtags for a date range
/v1/tiktok/hashtagsALL$0.05Top TikTok hashtags for a date range
/v1/youtube/hashtagsALL$0.05Top YouTube Shorts hashtags for a date range
/v1/hashtagsALL$0.05Top hashtags across all platforms for a date range
/v1/content-trends/:idGET$0.05One format trend with all its example videos and 30-day history
/v1/sounds/:sound_idGET$0.05One sound's details. Matching it to a song (resolve=true) adds $0.10 the first time.
/v1/sounds/:sound_id/usage-historyGET$0.05A sound's daily usage history
/v1/hashtags/:hashtag/performanceALL$0.05One hashtag's video count and views
/v1/sounds/searchGET$0.10Search sounds by title
/v1/hooks/libraryGET$0.10Hook templates, with why each one works
/v1/hooks/trendingGET$0.25Top hooks from recent posts
/v1/content-trendsGET$0.25Format Trends: video formats creators are copying, reviewed by Virlo
/v1/hooks/searchGET$0.25Search about 1.4 million hooks by phrase or type
/v1/agents/:id/hooksGET$0.25Top hooks from an agent's videos. Free when the agent has Data Intelligence, or while it has no hooks yet.
/v1/tiktok/videos/digestALL$0.25Most-viewed TikToks from the last 48 hours
/v1/tracking/creatorsPOST$0.25Start tracking a creator. The price covers the first check, and each later check costs the same.
/v1/instagram/videos/digestALL$0.25Most-viewed Instagram Reels from the last 48 hours
/v1/trendsALL$0.25Topic Trends: daily lists for a date range
/v1/trends/digestALL$0.25Topic Trends: today's list for a region
/v1/tracking/videosPOST$0.25Start tracking a video. The price covers the first check, and each later check costs the same.
/v1/sounds/breakoutGET$0.25Sounds growing fastest from a small start
/v1/sounds/trendingGET$0.25Trending sounds
/v1/sounds/:sound_id/videosGET$0.25Videos that use a sound
/v1/sounds/by-creator/:platform/:handleGET$0.25Sounds a creator owns
/v1/youtube/videos/digestALL$0.25Most-viewed YouTube Shorts from the last 48 hours
/v1/videos/digestALL$0.25Most-viewed videos from the last 48 hours, all platforms
/v1/trends/emergingALL$0.25Topic Trends that are new or rising right now
/v1/satellite/hashtags/:platform/:hashtagGET$0.50Hashtag lookup: stats, trends, and videos for one hashtag. Refunded in full if the lookup fails.
/v1/satellite/sounds/:platform/:music_idGET$0.50Sound lookup (runs in the background). Refunded in full if the lookup fails.
/v1/satellite/creator/:platform/:usernameALL$0.50Creator lookup (runs in the background). Refunded in full if the lookup fails.
/v1/satellite/video-outlierPOST$0.50Video outlier check (runs in the background)

Optional add-ons (charged on top of the base price)

Add-onCostApplies to
Data Intelligence for agents+$1.00per rundata_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 lookuptrend_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 lookupdata_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 lookupdepth=deep (about 300 videos) on a hashtag lookup. Not charged when trend_analysis=true, which already collects that many.
Hashtag depth: full+$1.50per lookupdepth=full (about 500 videos) on a hashtag lookup.
Audience snapshot+$0.50per creatoraudience_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: true adds $1.00 per run (details). On a recurring agent, turning it on or off later affects only future runs.
  • Creator lookups: data_intelligence=true adds $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.00 if free). X-Credits-Used gives it in credits.
  • X-Balance-Remaining: your balance afterward, on endpoints that can charge, even when this call was free. Only X-Cost shows your charge. X-Credits-Remaining gives 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).

Was this page helpful?