What to build with it
- Inventory existing Orbit calls and preserve their research identifiers.
- For new work, create a non-recurring content research agent.
- Verify field mappings before moving historical consumers to current result endpoints.
Provider reference: Virlo documentation. Authentication uses a provider-issued Bearer token, stored on your server.
Endpoints and inputs
13 documented operations. Query and path fields are listed separately from JSON request-body fields.
POST/v1/orbitDeprecated
No path or query parameters are declared in the captured schema.
JSON body fields
- name
- string · required
- keywords
- array · required
- platforms
- array · optional
- min_views
- number · optional
- time_period
- string · optional · values: today, this_week, this_month, this_year
- run_analysis
- boolean · optional · default: false
- enable_meta_ads
- boolean · optional · default: false
- exclude_keywords
- array · optional
- exclude_keywords_strict
- boolean · optional · default: false
- intent
- string · optional
- data_intelligence_enabled
- boolean · optional · default: false
- english_only
- boolean · optional · default: true
Documented response fields
- data
- object · required
- data.orbit_id
- string · required
- data.status
- string · required
- data.message
- string · required
Documented HTTP responses: 202, 400, 401, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbitDeprecated
Path and query parameters
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
Documented response fields
- data
- object · required
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.orbits
- array · required
- data.orbits[].id
- string · required
- data.orbits[].name
- string | null · optional
- data.orbits[].keywords
- array · required
- data.orbits[].platforms
- array · required
- data.orbits[].status
- string · required
- data.orbits[].totalVideos
- number · required
- data.orbits[].createdAt
- string · required
- data.orbits[].executionTimeMs
- number | null · optional
Documented HTTP responses: 200, 401, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/creators/outliersDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- order_by
- string (query) · optional · values: outlier_ratio, avg_views, follower_count, weighted_score · default: "outlier_ratio"
- sort
- string (query) · optional · values: asc, desc · default: "desc"
- platform
- string (query) · optional · values: youtube, tiktok, instagram
Documented response fields
- data
- object · required
- data.orbit_id
- string · required
- data.orbit_name
- string | null · optional
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.hasMore
- boolean · required
- data.outliers
- array · required
- data.outliers[].author_id
- string | null · required
- data.outliers[].creator_url
- string | null · required
- data.outliers[].creator_avatar_url
- string | null · required
- data.outliers[].follower_count
- number | null · required
- data.outliers[].avg_views
- number | null · required
- data.outliers[].outlier_ratio
- number | null · required
- data.outliers[].weighted_score
- number · optional
- data.outliers[].videos_analyzed
- number · required
- data.outliers[].creator_topics
- array · required
- data.outliers[].matching_topics
- array · required
- data.outliers[].platform
- string | null · required
- data.outliers[].identified_at
- string | null · required
- data.outliers[].median_views
- number | null · optional
- data.outliers[].top_video_views
- number | null · optional
- data.outliers[].breakout_video_count
- number · optional
- data.outliers[].avg_engagement_rate
- number | null · optional
- data.outliers[].posts_per_week
- number | null · optional
- data.outliers[].content_angle
- string | null · optional
- data.outliers[].growth_followers
- number | null · optional
- data.outliers[].growth_views
- number | null · optional
- data.outliers[].growth_video_count
- number | null · optional
- data.outliers[].local_video_count
- number · optional
- data.outliers[].videos
- array · optional
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/slideshowsDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- min_views
- number (query) · optional
- platforms
- array (query) · optional
- start_date
- string (query) · optional
- end_date
- string (query) · optional
- order_by
- string (query) · optional · values: publish_date, views, created_at · default: "publish_date"
- sort
- string (query) · optional · values: asc, desc · default: "desc"
- intent_match
- boolean (query) · optional
Documented response fields
- data
- object · required
- data.orbit_id
- string · required
- data.orbit_name
- string | null · optional
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.slideshows
- array · required
- data.slideshows[].url
- string · required
- data.slideshows[].description
- string | null · optional
- data.slideshows[].platform
- string · required
- data.slideshows[].views
- number · required
- data.slideshows[].likes
- number · required
- data.slideshows[].shares
- number · required
- data.slideshows[].comments
- number · required
- data.slideshows[].bookmarks
- number | null · optional
- data.slideshows[].publish_date
- string | null · optional
- data.slideshows[].hashtags
- array · required
- data.slideshows[].thumbnail_url
- string | null · optional
- data.slideshows[].images
- array · required
- data.slideshows[].author
- object · optional
- data.slideshows[].keyword_found_by
- string · optional
- data.slideshows[].is_eligible_for_commission
- boolean · optional
- data.slideshows[].region
- string | null · optional
- data.slideshows[].intelligence
- object | null · optional
- data.slideshows[].intelligence_status
- string · optional · values: ready, pending, disabled, failed, skipped
- data.slideshows[].intelligence_skip_reason
- string | null · optional · values: intent_mismatch, too_old, under_followers
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/videosDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- min_views
- number (query) · optional
- platforms
- array (query) · optional
- start_date
- string (query) · optional
- end_date
- string (query) · optional
- order_by
- string (query) · optional · values: publish_date, views, created_at · default: "publish_date"
- sort
- string (query) · optional · values: asc, desc · default: "desc"
- intent_match
- boolean (query) · optional
Documented response fields
- data
- object · required
- data.orbit_id
- string · required
- data.orbit_name
- string | null · optional
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.videos
- array · required
- data.videos[].url
- string · required
- data.videos[].description
- string | null · optional
- data.videos[].platform
- string · required
- data.videos[].views
- number · required
- data.videos[].likes
- number · required
- data.videos[].shares
- number · required
- data.videos[].comments
- number · required
- data.videos[].bookmarks
- number | null · optional
- data.videos[].publish_date
- string | null · optional
- data.videos[].hashtags
- array · required
- data.videos[].thumbnail_url
- string | null · optional
- data.videos[].author
- object · optional
- data.videos[].keyword_found_by
- string · optional
- data.videos[].sound
- object | null · optional
- data.videos[].intelligence
- object | null · optional
- data.videos[].intelligence_status
- string · optional · values: ready, pending, disabled, failed, skipped
- data.videos[].intelligence_skip_reason
- string | null · optional · values: intent_mismatch, too_old, under_followers
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/adsDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- order_by
- string (query) · optional · values: created_at, page_like_count · default: "created_at"
- sort
- string (query) · optional · values: asc, desc · default: "desc"
Documented response fields
- data
- object · required
- data.orbit_id
- string · required
- data.orbit_name
- string | null · optional
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.ads
- array · required
- data.ads[].id
- number · required
- data.ads[].ad_archive_id
- string | null · required
- data.ads[].page_id
- string | null · required
- data.ads[].page_profile_url
- string | null · optional
- data.ads[].page_profile_picture_url
- string | null · optional
- data.ads[].is_active
- boolean | null · optional
- data.ads[].start_date
- string | null · optional
- data.ads[].end_date
- string | null · optional
- data.ads[].url
- string | null · optional
- data.ads[].caption
- string | null · optional
- data.ads[].body
- string | null · optional
- data.ads[].cta_type
- string | null · optional
- data.ads[].page_like_count
- number | null · optional
- data.ads[].title
- string | null · optional
- data.ads[].video_url
- string | null · optional
- data.ads[].created_at
- string · required
- data.ads[].keyword_found_by
- string · optional
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/listDeprecated
Path and query parameters
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
Documented response fields
- data
- object · required
- data.total
- number · required
- data.limit
- number · required
- data.offset
- number · required
- data.orbits
- array · required
- data.orbits[].id
- string · required
- data.orbits[].name
- string | null · optional
- data.orbits[].keywords
- array · required
- data.orbits[].platforms
- array · required
- data.orbits[].status
- string · required
- data.orbits[].totalVideos
- number · required
- data.orbits[].createdAt
- string · required
- data.orbits[].executionTimeMs
- number | null · optional
Documented HTTP responses: 200, 401, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}Deprecated
Path and query parameters
- orbit_id
- string (path) · required
- order_by
- string (query) · optional · values: views, likes, shares, comments, bookmarks, publish_date, author.followers
- sort
- string (query) · optional · values: asc, desc · default: "desc"
Documented response fields
- data
- object · required
- data.id
- string · required
- data.status
- string · required
- data.finalized
- boolean · optional
- data.pending_jobs
- array · optional
- data.pending_jobs[].type
- string · required · values: viral_analysis, audience_demographics, audience_geography, tracking_report, data_intelligence
- data.pending_jobs[].status
- string · required · values: pending, processing
- data.pending_jobs[].job_id
- string · optional
- data.pending_jobs[].poll_url
- string · optional
- data.pending_jobs[].result_path
- string · optional
- data.pending_jobs[].webhook_event
- string · optional
- data.pending_jobs[].started_at
- string · optional
- data.pending_jobs[].retry_after_seconds
- number · optional
- data.name
- string | null · optional
- data.keywords
- array · required
- data.intent
- string | null · optional
- data.data_intelligence_enabled
- boolean · required
- data.analysis
- string | null · optional
- data.analysis_data
- object | null · optional
- data.analysis_batch_start
- string | null · optional
- data.analysis_batch_end
- string | null · optional
- data.started_at
- string · required
- data.order_by
- string · optional
- data.sort
- string · optional
- data.results
- object | null · optional
- data.results.total_videos
- number · required
- data.results.total_slideshows
- number · required
- data.results.youtube_count
- number · required
- data.results.tiktok_count
- number · required
- data.results.instagram_count
- number · required
- data.results.trends
- array · required
- data.results.videos
- array · required
- data.results.slideshows
- array · required
- data.results.ads
- array · required
- data.results.execution_time_ms
- number | null · optional
- data.results.keyword_breakdown
- array · optional
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/trends/latestDeprecated
Path and query parameters
- orbit_id
- string (path) · required
Documented response fields
- data
- object · required
- data.reference_id
- string · required
- data.insight_type
- string · required · values: custom_niche, orbit
- data.viral_insight_id
- string | null · optional
- data.batch_start
- string | null · optional
- data.batch_end
- string | null · optional
- data.total
- number · required
- data.trends
- array · required
- data.trends[].id
- string · required
- data.trends[].viral_insight_id
- string · required
- data.trends[].insight_type
- string · required · values: custom_niche, orbit
- data.trends[].reference_id
- string · required
- data.trends[].batch_start
- string · required
- data.trends[].batch_end
- string · required
- data.trends[].rank
- number · required
- data.trends[].stable_key
- string · required
- data.trends[].name
- string · required
- data.trends[].why_it_works
- string | null · optional
- data.trends[].tactics
- array · optional
- data.trends[].confidence
- number | null · optional
- data.trends[].evidence_video_ids
- array · optional
- data.trends[].evidence_videos
- array | null · optional
- data.trends[].video_count
- number | null · optional
- data.trends[].total_views
- number | null · optional
- data.trends[].total_likes
- number | null · optional
- data.trends[].total_comments
- number | null · optional
- data.trends[].total_shares
- number | null · optional
- data.trends[].avg_virality_score
- number | null · optional
- data.trends[].platform_breakdown
- object | null · optional
- data.trends[].top_creators
- array | null · optional
- data.trends[].peak_hour_utc
- number | null · optional
- data.trends[].status
- string | null · optional · values: new, rising, steady, fading
- data.trends[].first_seen_at
- string | null · optional
- data.trends[].prev_video_count
- number | null · optional
- data.trends[].prev_total_views
- number | null · optional
- data.trends[].created_at
- string · required
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/trendsDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- stable_key
- string (query) · optional
- start_date
- string (query) · optional
- end_date
- string (query) · optional
Documented response fields
- data
- array · required
- data[].id
- string · required
- data[].viral_insight_id
- string · required
- data[].insight_type
- string · required · values: custom_niche, orbit
- data[].reference_id
- string · required
- data[].batch_start
- string · required
- data[].batch_end
- string · required
- data[].rank
- number · required
- data[].stable_key
- string · required
- data[].name
- string · required
- data[].why_it_works
- string | null · optional
- data[].tactics
- array · optional
- data[].confidence
- number | null · optional
- data[].evidence_video_ids
- array · optional
- data[].evidence_videos
- array | null · optional
- data[].video_count
- number | null · optional
- data[].total_views
- number | null · optional
- data[].total_likes
- number | null · optional
- data[].total_comments
- number | null · optional
- data[].total_shares
- number | null · optional
- data[].avg_virality_score
- number | null · optional
- data[].platform_breakdown
- object | null · optional
- data[].top_creators
- array | null · optional
- data[].top_creators[].username
- string | null · optional
- data[].top_creators[].platform
- string | null · optional
- data[].top_creators[].followers
- number | null · optional
- data[].top_creators[].video_count
- number | null · optional
- data[].top_creators[].total_views
- number | null · optional
- data[].peak_hour_utc
- number | null · optional
- data[].status
- string | null · optional · values: new, rising, steady, fading
- data[].first_seen_at
- string | null · optional
- data[].prev_video_count
- number | null · optional
- data[].prev_total_views
- number | null · optional
- data[].created_at
- string · required
- pagination
- object · required
- pagination.page
- number · required
- pagination.limit
- number · required
- pagination.total
- number · required
- pagination.total_pages
- number · required
- pagination.has_next_page
- boolean · required
- pagination.has_prev_page
- boolean · required
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/analysis/latestDeprecated
Path and query parameters
- orbit_id
- string (path) · required
Documented response fields
- data
- object | null · required
- data.id
- string · required
- data.insight_type
- string · required · values: custom_niche, orbit
- data.reference_id
- string · required
- data.batch_start
- string · required
- data.batch_end
- string · required
- data.analysis
- string | null · optional
- data.analysis_data
- object · required
- data.video_count
- number | null · optional
- data.analyzed_video_ids
- array · optional
- data.created_at
- string · required
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/analysisDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 50 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
- start_date
- string (query) · optional
- end_date
- string (query) · optional
Documented response fields
- data
- array · required
- data[].id
- string · required
- data[].insight_type
- string · required · values: custom_niche, orbit
- data[].reference_id
- string · required
- data[].batch_start
- string · required
- data[].batch_end
- string · required
- data[].analysis
- string | null · optional
- data[].analysis_data
- object · required
- data[].video_count
- number | null · optional
- data[].analyzed_video_ids
- array · optional
- data[].created_at
- string · required
- pagination
- object · required
- pagination.page
- number · required
- pagination.limit
- number · required
- pagination.total
- number · required
- pagination.total_pages
- number · required
- pagination.has_next_page
- boolean · required
- pagination.has_prev_page
- boolean · required
Documented HTTP responses: 200, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/orbit/{orbit_id}/soundsDeprecated
Path and query parameters
- orbit_id
- string (path) · required
- limit
- number (query) · optional · default: 20 · minimum: 1 · maximum: 100
- page
- number (query) · optional · default: 1 · minimum: 1
Documented response fields
- data
- array · required
- data[].id
- string · required
- data[].external_id
- string | null · optional
- data[].title
- string · required
- data[].platform
- string · required · values: tiktok, youtube, instagram
- data[].duration
- number | null · optional
- data[].cover_url
- string | null · optional
- data[].owner_handle
- string | null · optional
- data[].owner_nickname
- string | null · optional
- data[].is_original
- boolean | null · optional
- data[].is_commerce_music
- boolean | null · optional
- data[].usage_count
- number | null · optional
- data[].video_count
- number · required
- data[].avg_views
- number · required
- data[].growth_video_count
- number | null · optional
- data[].growth_views
- number | null · optional
- data[].lifecycle
- string · optional · values: new, rising, steady, fading
- pagination
- object · required
- pagination.page
- number · required
- pagination.limit
- number · required
- pagination.total
- number · required
- pagination.total_pages
- number · required
- pagination.has_next_page
- boolean · required
- pagination.has_prev_page
- boolean · required
Documented HTTP responses: 200, 401, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
Before you integrate
- These routes are deprecated. They are retained here for migration reference, not recommended for new integrations.
Check the provider's current price, allowed use and retention terms before sending requests. An optional field can be absent; the schema alone does not establish its completeness or accuracy.
Give this task to your coding agent
Help me implement virlo orbit endpoint migration reference using the documented Virlo API.
Reference: https://allthemapis.com/social-media-apis/virlo-orbit-migration
Provider documentation: https://dev.virlo.ai/docs/orbit
Base URL: https://api.virlo.ai
Starting operation: POST /v1/orbit
Read the current provider docs and confirm the required inputs before writing code. Load VIRLO_API_KEY from a server-side environment variable and use Bearer authentication. Do not put the key in client code, logs, analytics, or the chat.
Ask me for any missing video URL, creator handle, research intent, or job ID. Do not invent a result. Ask for approval before starting billable lookups, recurring jobs, or destructive changes. For jobs, keep the returned ID and poll with the documented delay instead of starting the job twice. Handle pagination, rate limits, partial results, and missing fields explicitly.
Build the smallest integration for this task:
1. Inventory existing Orbit calls and preserve their research identifiers.
2. For new work, create a non-recurring content research agent.
3. Verify field mappings before moving historical consumers to current result endpoints.
Return the code, the environment variables I need, and a short explanation of what was actually retrieved versus inferred. Do not execute paid requests until I approve.Sources and review dates
Virlo's public documentation and OpenAPI schema reviewed October 27, 2026. Endpoint paths and field names below refer to that provider's API. This is an integration reference, not a measured performance ranking.
Corrections: email faizank@docsalot.dev with an official source.