# Orbit (deprecated)

> Deprecated. Orbit is the old address for a one-time Content Research Agent. How to move from /v1/orbit to /v1/agents.

Source: https://dev.virlo.ai/docs/orbit
Markdown: https://dev.virlo.ai/docs/orbit.md
Section: Legacy (deprecated)

## About the Virlo API (applies to every page)

- Base URL: `https://api.virlo.ai/v1`. Every request needs the header `Authorization: Bearer YOUR_API_KEY` (keys start with `virlo_tkn_`).
- Responses are JSON inside a `data` field, except the `/v1/webhooks` endpoints, which return the object or array directly. Field names are snake_case.
- Prices are in US dollars from a prepaid balance. 1 credit = $0.01. The `X-Cost` response header on each successful response is the exact charge. Errors are free.
- Slow jobs return an ID. Check its status every 15 seconds (or whatever `retry_after_seconds` says) until `finalized` is `true`.
- All docs pages: https://dev.virlo.ai/llms.txt. Every page in one file: https://dev.virlo.ai/llms-full.txt. MCP server for AI assistants: https://dev.virlo.ai/api/mcp/mcp.

---

Orbit is the old address for one-time [Content Research Agents](https://dev.virlo.ai/docs/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](https://dev.virlo.ai/docs/intelligence) (AI breakdowns of the videos), charged up front on either address. Results are free, except [agent hooks](https://dev.virlo.ai/docs/agents#get-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](https://dev.virlo.ai/docs/rate-limits).

## Old address to new address

| Old | New |
| - | - |
| `POST /v1/orbit` | `POST /v1/agents` |
| `GET /v1/orbit` or `/v1/orbit/list` | `GET /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`](https://dev.virlo.ai/docs/agents#writing-a-good-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`](https://dev.virlo.ai/docs/agents#get-agent-videos).

**POST /v1/agents:**

```bash
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:**

```bash
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](https://dev.virlo.ai/docs/webhooks#update-webhook) 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).

---

More in Legacy (deprecated):

- [Comet (recurring agents)](https://dev.virlo.ai/docs/comet.md)
