Orbit (deprecated)

Orbit is the old address for one-time Content Research Agents. Use /v1/agents. Your Orbit IDs work there.

At a glance
What it does
Starts a one-time agent. Past its August 3, 2026 removal date, so it can stop anytime.
Cost
$0.50 per run, or $1.50 with Data Intelligence (AI breakdowns of the videos), charged up front on either address. Results are free, except agent hooks ($0.25 without Data Intelligence).
Limits
On Pro, Orbit allows 2 new runs a minute (50 a day, errors count) and 50 a minute for reading lists, agent details, videos, ads or outliers. /v1/agents has only the daily limit.

Old address to new address

OldNew
POST /v1/orbitPOST /v1/agents
GET /v1/orbit or /v1/orbit/listGET /v1/agents?is_recurring=false
GET /v1/orbit/:id/...GET /v1/agents/:id/...

Change what you send

/v1/agents rejects unknown fields (error 400), so:

  • Add the required is_recurring: false and intent (one sentence on your goal).
  • Rename enable_meta_ads to meta_ads_enabled.
  • keywords: up to 50 (was 10). name is optional.
  • Remove min_views, time_period and run_analysis (Orbit ignored them). Filter views and dates on /videos.

POST /v1/agents

curl -X POST https://api.virlo.ai/v1/agents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "is_recurring": false,
    "intent": "Find viral home espresso videos to plan content for a coffee gear brand",
    "name": "Home espresso",
    "keywords": ["home espresso", "espresso machine"],
    "platforms": ["tiktok", "youtube"],
    "meta_ads_enabled": true
  }'

Filter when you read

curl "https://api.virlo.ai/v1/agents/{agent_id}/videos?min_views=10000&start_date=2026-09-01T00:00:00Z&end_date=2026-09-30T23:59:59Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update how you read results

  • data.orbit_id is now data.id.
  • List: orbits, total become agents, page, count (this page only). createdAt becomes created_at; status and video count moved to GET /v1/agents/:id.
  • GET /v1/agents/:id has a latest_run summary instead of results and intent_summary. Get videos from /videos.
  • orbit_id, orbit_name and hasMore become agent_id, agent_name and has_more.
  • Done means finalized: true. If latest_run.status is partial_failure, one platform or keyword failed but the rest is usable (Orbit reported completed).

Webhooks

Each run sends orbit.run.completed and content_research_agent.run.completed. Subscribe to both (an update replaces the whole enabled_events list), then drop the old one.

The new event has the same orbit object, plus is_recurring (failed runs use content_research_agent instead).

Was this page helpful?