What to build with it
- Write an explicit research intent, choose platforms and review suggested keywords.
- Create the agent once; keep its ID and decide whether recurring work or autopilot is appropriate.
- Read the compact summary and run status before fetching a large result set. Stop recurring work when the task is finished.
Provider reference: Virlo documentation. Authentication uses a provider-issued Bearer token, stored on your server.
Endpoints and inputs
17 documented operations. Query and path fields are listed separately from JSON request-body fields.
POST/v1/agents/suggest-keywords
No path or query parameters are declared in the captured schema.
JSON body fields
- intent
- string · required
- topic_hint
- string · optional
- platforms
- array · optional
- existing_keywords
- array · optional
- mode
- string · optional · values: create, refresh, opportunity · default: "create"
- desired_count
- number · optional · minimum: 1 · maximum: 50
- use_web_grounding
- boolean · optional · default: false
Documented response fields
- data
- object · required
- data.keywords
- array · required
- data.exclude_keywords
- array · required
- data.reasoning
- string | null · required
- data.quality
- object · required
- data.quality.score
- number | null · required
- data.quality.passes
- boolean | null · required
- data.quality.issues
- array · required
- data.quality.stats
- object · required
- data.timely_context_used
- boolean · required
Documented HTTP responses: 200, 400, 401, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
POST/v1/agents
No path or query parameters are declared in the captured schema.
JSON body fields
- is_recurring
- boolean · required
- intent
- string · required
- keywords
- array · required
- name
- string · optional
- platforms
- array · optional · default: ["youtube","tiktok","instagram"]
- cadence
- string · optional
- exclude_keywords
- array · optional
- exclude_keywords_strict
- boolean · optional · default: false
- meta_ads_enabled
- boolean · optional · default: false
- data_intelligence_enabled
- boolean · optional · default: false
- english_only
- boolean · optional · default: true
- autopilot
- boolean · optional · default: true
Documented response fields
- data
- object · required
- data.id
- string · required
- data.name
- string | null · optional
- data.is_recurring
- boolean · required
- data.active
- boolean · required
- data.team_id
- string | null · optional
- data.source
- string | null · optional
- data.keywords
- array · required
- data.platforms
- array · required
- data.exclude_keywords
- array · required
- data.exclude_keywords_strict
- boolean · required
- data.meta_ads_enabled
- boolean · required
- data.data_intelligence_enabled
- boolean · required
- data.english_only
- boolean · required
- data.intent
- string | null · optional
- data.intent_keywords
- array | null · optional
- data.autopilot
- boolean · required
- data.pinned_keywords
- array | null · optional
- data.autonomy_level
- string · required · values: suggest, autopilot
- data.autopilot_unlocked
- boolean · required
- data.cognition_enabled
- boolean · required
- data.cadence
- string | null · optional
- data.next_run_at
- string | null · optional
- data.last_run_at
- string | null · optional
- data.is_processing
- boolean · required
- data.created_at
- string · required
- data.updated_at
- string · required
- data.latest_run
- object | null · optional
- data.latest_run.id
- string · required
- data.latest_run.agent_id
- string · required
- data.latest_run.status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.latest_run.total_videos_inserted
- number · required
- data.latest_run.total_videos_updated
- number · required
- data.latest_run.total_videos_failed
- number · required
- data.latest_run.videos_linked
- number · required
- data.latest_run.meta_ads_linked
- number · required
- data.latest_run.slideshows_linked
- number · required
- data.latest_run.youtube_count
- number · required
- data.latest_run.tiktok_count
- number · required
- data.latest_run.instagram_count
- number · required
- data.latest_run.exclude_keywords_filtered
- number · required
- data.latest_run.intent_filtered
- number · required
- data.latest_run.language_filtered_count
- number · required
- data.latest_run.duplicates_dropped
- number · required
- data.latest_run.outliers_identified
- number · required
- data.latest_run.trends_detected
- array | null · optional
- data.latest_run.keyword_breakdown
- array | null · optional
- data.latest_run.execution_time_ms
- number · required
- data.latest_run.created_at
- string · required
- data.latest_run.started_at
- string | null · optional
- data.latest_run.completed_at
- string | null · optional
- message
- string · required
Documented HTTP responses: 201, 400, 401, 402, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/agents
Path and query parameters
- is_recurring
- string (query) · optional · values: true, false
- include_inactive
- string (query) · optional · values: true, false
- limit
- number (query) · optional
- page
- number (query) · optional
Documented response fields
- data
- object · required
- data.limit
- number · required
- data.page
- number · required
- data.count
- number · required
- data.agents
- array · required
- data.agents[].id
- string · required
- data.agents[].name
- string | null · optional
- data.agents[].is_recurring
- boolean · required
- data.agents[].active
- boolean · required
- data.agents[].team_id
- string | null · optional
- data.agents[].source
- string | null · optional
- data.agents[].keywords
- array · required
- data.agents[].platforms
- array · required
- data.agents[].exclude_keywords
- array · required
- data.agents[].exclude_keywords_strict
- boolean · required
- data.agents[].meta_ads_enabled
- boolean · required
- data.agents[].data_intelligence_enabled
- boolean · required
- data.agents[].english_only
- boolean · required
- data.agents[].intent
- string | null · optional
- data.agents[].intent_keywords
- array | null · optional
- data.agents[].autopilot
- boolean · required
- data.agents[].pinned_keywords
- array | null · optional
- data.agents[].autonomy_level
- string · required · values: suggest, autopilot
- data.agents[].autopilot_unlocked
- boolean · required
- data.agents[].cognition_enabled
- boolean · required
- data.agents[].cadence
- string | null · optional
- data.agents[].next_run_at
- string | null · optional
- data.agents[].last_run_at
- string | null · optional
- data.agents[].is_processing
- boolean · required
- data.agents[].created_at
- string · required
- data.agents[].updated_at
- string · required
- data.agents[].latest_run
- object | 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/agents/list
Path and query parameters
- is_recurring
- string (query) · optional · values: true, false
- include_inactive
- string (query) · optional · values: true, false
- limit
- number (query) · optional
- page
- number (query) · optional
Documented response fields
- data
- object · required
- data.limit
- number · required
- data.page
- number · required
- data.count
- number · required
- data.agents
- array · required
- data.agents[].id
- string · required
- data.agents[].name
- string | null · optional
- data.agents[].is_recurring
- boolean · required
- data.agents[].active
- boolean · required
- data.agents[].team_id
- string | null · optional
- data.agents[].source
- string | null · optional
- data.agents[].keywords
- array · required
- data.agents[].platforms
- array · required
- data.agents[].exclude_keywords
- array · required
- data.agents[].exclude_keywords_strict
- boolean · required
- data.agents[].meta_ads_enabled
- boolean · required
- data.agents[].data_intelligence_enabled
- boolean · required
- data.agents[].english_only
- boolean · required
- data.agents[].intent
- string | null · optional
- data.agents[].intent_keywords
- array | null · optional
- data.agents[].autopilot
- boolean · required
- data.agents[].pinned_keywords
- array | null · optional
- data.agents[].autonomy_level
- string · required · values: suggest, autopilot
- data.agents[].autopilot_unlocked
- boolean · required
- data.agents[].cognition_enabled
- boolean · required
- data.agents[].cadence
- string | null · optional
- data.agents[].next_run_at
- string | null · optional
- data.agents[].last_run_at
- string | null · optional
- data.agents[].is_processing
- boolean · required
- data.agents[].created_at
- string · required
- data.agents[].updated_at
- string · required
- data.agents[].latest_run
- object | 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/agents/{id}
Path and query parameters
- id
- string (path) · required
Documented response fields
- data
- object · required
- data.id
- string · required
- data.name
- string | null · optional
- data.is_recurring
- boolean · required
- data.active
- boolean · required
- data.team_id
- string | null · optional
- data.source
- string | null · optional
- data.keywords
- array · required
- data.platforms
- array · required
- data.exclude_keywords
- array · required
- data.exclude_keywords_strict
- boolean · required
- data.meta_ads_enabled
- boolean · required
- data.data_intelligence_enabled
- boolean · required
- data.english_only
- boolean · required
- data.intent
- string | null · optional
- data.intent_keywords
- array | null · optional
- data.autopilot
- boolean · required
- data.pinned_keywords
- array | null · optional
- data.autonomy_level
- string · required · values: suggest, autopilot
- data.autopilot_unlocked
- boolean · required
- data.cognition_enabled
- boolean · required
- data.cadence
- string | null · optional
- data.next_run_at
- string | null · optional
- data.last_run_at
- string | null · optional
- data.is_processing
- boolean · required
- data.created_at
- string · required
- data.updated_at
- string · required
- data.latest_run
- object | null · optional
- data.latest_run.id
- string · required
- data.latest_run.agent_id
- string · required
- data.latest_run.status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.latest_run.total_videos_inserted
- number · required
- data.latest_run.total_videos_updated
- number · required
- data.latest_run.total_videos_failed
- number · required
- data.latest_run.videos_linked
- number · required
- data.latest_run.meta_ads_linked
- number · required
- data.latest_run.slideshows_linked
- number · required
- data.latest_run.youtube_count
- number · required
- data.latest_run.tiktok_count
- number · required
- data.latest_run.instagram_count
- number · required
- data.latest_run.exclude_keywords_filtered
- number · required
- data.latest_run.intent_filtered
- number · required
- data.latest_run.language_filtered_count
- number · required
- data.latest_run.duplicates_dropped
- number · required
- data.latest_run.outliers_identified
- number · required
- data.latest_run.trends_detected
- array | null · optional
- data.latest_run.keyword_breakdown
- array | null · optional
- data.latest_run.execution_time_ms
- number · required
- data.latest_run.created_at
- string · required
- data.latest_run.started_at
- string | null · optional
- data.latest_run.completed_at
- string | null · optional
- 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.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.progress_pct
- number | null · optional
- data.stage
- string | null · optional · values: collecting, analyzing, finalizing, completed
- data.eta_seconds
- number | null · 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.
PUT/v1/agents/{id}
Path and query parameters
- id
- string (path) · required
JSON body fields
- name
- string · optional
- active
- boolean · optional
- keywords
- array · optional
- platforms
- array · optional
- cadence
- string · optional
- exclude_keywords
- array · optional
- exclude_keywords_strict
- boolean · optional
- meta_ads_enabled
- boolean · optional
- intent
- string · optional
- data_intelligence_enabled
- boolean · optional
- english_only
- boolean · optional
- autopilot
- boolean · optional
Documented response fields
- data
- object · required
- data.id
- string · required
- data.name
- string | null · optional
- data.is_recurring
- boolean · required
- data.active
- boolean · required
- data.team_id
- string | null · optional
- data.source
- string | null · optional
- data.keywords
- array · required
- data.platforms
- array · required
- data.exclude_keywords
- array · required
- data.exclude_keywords_strict
- boolean · required
- data.meta_ads_enabled
- boolean · required
- data.data_intelligence_enabled
- boolean · required
- data.english_only
- boolean · required
- data.intent
- string | null · optional
- data.intent_keywords
- array | null · optional
- data.autopilot
- boolean · required
- data.pinned_keywords
- array | null · optional
- data.autonomy_level
- string · required · values: suggest, autopilot
- data.autopilot_unlocked
- boolean · required
- data.cognition_enabled
- boolean · required
- data.cadence
- string | null · optional
- data.next_run_at
- string | null · optional
- data.last_run_at
- string | null · optional
- data.is_processing
- boolean · required
- data.created_at
- string · required
- data.updated_at
- string · required
- data.latest_run
- object | null · optional
- data.latest_run.id
- string · required
- data.latest_run.agent_id
- string · required
- data.latest_run.status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.latest_run.total_videos_inserted
- number · required
- data.latest_run.total_videos_updated
- number · required
- data.latest_run.total_videos_failed
- number · required
- data.latest_run.videos_linked
- number · required
- data.latest_run.meta_ads_linked
- number · required
- data.latest_run.slideshows_linked
- number · required
- data.latest_run.youtube_count
- number · required
- data.latest_run.tiktok_count
- number · required
- data.latest_run.instagram_count
- number · required
- data.latest_run.exclude_keywords_filtered
- number · required
- data.latest_run.intent_filtered
- number · required
- data.latest_run.language_filtered_count
- number · required
- data.latest_run.duplicates_dropped
- number · required
- data.latest_run.outliers_identified
- number · required
- data.latest_run.trends_detected
- array | null · optional
- data.latest_run.keyword_breakdown
- array | null · optional
- data.latest_run.execution_time_ms
- number · required
- data.latest_run.created_at
- string · required
- data.latest_run.started_at
- string | null · optional
- data.latest_run.completed_at
- string | null · optional
- message
- 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.
DELETE/v1/agents/{id}
Path and query parameters
- id
- string (path) · required
The captured schema does not enumerate structured response fields for this operation. Check its current provider reference.
Documented HTTP responses: 204, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
GET/v1/agents/{id}/summary
Path and query parameters
- id
- string (path) · required
Documented response fields
- data
- object · required
- data.agent_id
- string · required
- data.agent_name
- string | null · optional
- data.is_recurring
- boolean · required
- data.finalized
- boolean · required
- data.progress_pct
- number | null · optional
- data.stage
- string | null · optional · values: collecting, analyzing, finalizing, completed
- data.eta_seconds
- number | null · optional
- data.run
- object | null · optional
- data.run.status
- string | null · optional · values: pending, processing, completed, partial_failure, failed
- data.run.started_at
- string | null · optional
- data.run.completed_at
- string | null · optional
- data.run.total_videos
- number | null · optional
- data.run.videos_linked
- number | null · optional
- data.run.platform_counts
- object · required
- data.run.outliers_identified
- number | null · optional
- data.counts
- object · required
- data.counts.videos
- number | null · optional
- data.counts.platform_counts
- object | null · optional
- data.counts.slideshows
- number | null · optional
- data.counts.sounds
- number | null · optional
- data.counts.creators
- number | null · optional
- data.top_creators
- array · required
- data.top_creators[].username
- string | null · optional
- data.top_creators[].platform
- string | null · optional
- data.top_creators[].followers
- number | null · optional
- data.top_creators[].weighted_score
- number | null · optional
- data.top_trends
- array · required
- data.top_trends[].name
- string · required
- data.top_trends[].stable_key
- string | null · optional
- data.top_trends[].status
- string | null · optional · values: new, rising, steady, fading
- data.analysis_summary
- string | null · optional
- data.generated_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/agents/{id}/runs
Path and query parameters
- id
- string (path) · required
- limit
- number (query) · optional
- page
- number (query) · optional
Documented response fields
- data
- object · required
- data.agent_id
- string · required
- data.limit
- number · required
- data.offset
- number · required
- data.count
- number · required
- data.runs
- array · required
- data.runs[].id
- string · required
- data.runs[].agent_id
- string · required
- data.runs[].status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.runs[].total_videos_inserted
- number · required
- data.runs[].total_videos_updated
- number · required
- data.runs[].total_videos_failed
- number · required
- data.runs[].videos_linked
- number · required
- data.runs[].meta_ads_linked
- number · required
- data.runs[].slideshows_linked
- number · required
- data.runs[].youtube_count
- number · required
- data.runs[].tiktok_count
- number · required
- data.runs[].instagram_count
- number · required
- data.runs[].exclude_keywords_filtered
- number · required
- data.runs[].intent_filtered
- number · required
- data.runs[].language_filtered_count
- number · required
- data.runs[].duplicates_dropped
- number · required
- data.runs[].outliers_identified
- number · required
- data.runs[].trends_detected
- array | null · optional
- data.runs[].keyword_breakdown
- array | null · optional
- data.runs[].execution_time_ms
- number · required
- data.runs[].created_at
- string · required
- data.runs[].started_at
- string | null · optional
- data.runs[].completed_at
- string | null · 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/agents/{id}/runs/{run_id}
Path and query parameters
- id
- string (path) · required
- run_id
- string (path) · required
Documented response fields
- data
- object · required
- data.id
- string · required
- data.agent_id
- string · required
- data.status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.total_videos_inserted
- number · required
- data.total_videos_updated
- number · required
- data.total_videos_failed
- number · required
- data.videos_linked
- number · required
- data.meta_ads_linked
- number · required
- data.slideshows_linked
- number · required
- data.youtube_count
- number · required
- data.tiktok_count
- number · required
- data.instagram_count
- number · required
- data.exclude_keywords_filtered
- number · required
- data.intent_filtered
- number · required
- data.language_filtered_count
- number · required
- data.duplicates_dropped
- number · required
- data.outliers_identified
- number · required
- data.trends_detected
- array | null · optional
- data.keyword_breakdown
- array | null · optional
- data.execution_time_ms
- number · required
- data.created_at
- string · required
- data.started_at
- string | null · optional
- data.completed_at
- string | null · 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/agents/{id}/activity
Path and query parameters
- id
- string (path) · required
- limit
- number (query) · optional
Documented response fields
- data
- object · required
- data.agent_id
- string · required
- data.count
- number · required
- data.activity
- array · required
- data.activity[].content
- string · required
- data.activity[].category
- string · required · values: observation, decision, milestone, user_pref
- data.activity[].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/agents/{id}/events
Path and query parameters
- id
- string (path) · required
- limit
- number (query) · optional
Documented response fields
- data
- object · required
- data.agent_id
- string · required
- data.count
- number · required
- data.events
- array · required
- data.events[].id
- string · required
- data.events[].title
- string · required
- data.events[].summary
- string | null · optional
- data.events[].source
- string · required · values: corpus_burst, news_scan
- data.events[].salience
- number · required
- data.events[].status
- string · required · values: candidate, confirmed, dismissed, expired
- data.events[].keywords
- array · required
- data.events[].evidence
- array · required
- data.events[].detected_at
- string · required
- data.events[].confirmed_at
- string | null · optional
- data.events[].expires_at
- string | null · 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/agents/{id}/proposals
Path and query parameters
- id
- string (path) · required
- status
- string (query) · optional · values: pending, applied, auto_applied, dismissed, reverted
- limit
- number (query) · optional
Documented response fields
- data
- object · required
- data.agent_id
- string · required
- data.count
- number · required
- data.proposals
- array · required
- data.proposals[].id
- string · required
- data.proposals[].content_research_agent_id
- string · required
- data.proposals[].type
- string · required · values: keyword_refresh, filter_change, cadence_change, pause
- data.proposals[].source
- string · required · values: drift, opportunity, net_new, user
- data.proposals[].rationale
- string · required
- data.proposals[].diff
- object · required
- data.proposals[].status
- string · required · values: pending, auto_applied, applied, dismissed, reverted
- data.proposals[].created_at
- string · required
- data.proposals[].decided_at
- string | null · 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.
POST/v1/agents/{id}/proposals/{proposal_id}/applyDeprecated
Path and query parameters
- id
- string (path) · required
- proposal_id
- string (path) · required
Documented response fields
- data
- object · required
- data.applied
- boolean · required
- data.proposal_id
- string · required
- data.status
- string · required
- data.autopilot_unlocked
- boolean · required
- data.agent
- object · required
- data.agent.id
- string · required
- data.agent.name
- string | null · optional
- data.agent.is_recurring
- boolean · required
- data.agent.active
- boolean · required
- data.agent.team_id
- string | null · optional
- data.agent.source
- string | null · optional
- data.agent.keywords
- array · required
- data.agent.platforms
- array · required
- data.agent.exclude_keywords
- array · required
- data.agent.exclude_keywords_strict
- boolean · required
- data.agent.meta_ads_enabled
- boolean · required
- data.agent.data_intelligence_enabled
- boolean · required
- data.agent.english_only
- boolean · required
- data.agent.intent
- string | null · optional
- data.agent.intent_keywords
- array | null · optional
- data.agent.autopilot
- boolean · required
- data.agent.pinned_keywords
- array | null · optional
- data.agent.autonomy_level
- string · required · values: suggest, autopilot
- data.agent.autopilot_unlocked
- boolean · required
- data.agent.cognition_enabled
- boolean · required
- data.agent.cadence
- string | null · optional
- data.agent.next_run_at
- string | null · optional
- data.agent.last_run_at
- string | null · optional
- data.agent.is_processing
- boolean · required
- data.agent.created_at
- string · required
- data.agent.updated_at
- string · required
- data.agent.latest_run
- object | null · 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.
POST/v1/agents/{id}/proposals/{proposal_id}/dismissDeprecated
Path and query parameters
- id
- string (path) · required
- proposal_id
- string (path) · required
Documented response fields
- data
- object · required
- data.dismissed
- boolean · required
- data.proposal_id
- 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.
POST/v1/agents/{id}/proposals/{proposal_id}/revertDeprecated
Path and query parameters
- id
- string (path) · required
- proposal_id
- string (path) · required
Documented response fields
- data
- object · required
- data.reverted
- boolean · required
- data.proposal_id
- string · required
- data.agent
- object · required
- data.agent.id
- string · required
- data.agent.name
- string | null · optional
- data.agent.is_recurring
- boolean · required
- data.agent.active
- boolean · required
- data.agent.team_id
- string | null · optional
- data.agent.source
- string | null · optional
- data.agent.keywords
- array · required
- data.agent.platforms
- array · required
- data.agent.exclude_keywords
- array · required
- data.agent.exclude_keywords_strict
- boolean · required
- data.agent.meta_ads_enabled
- boolean · required
- data.agent.data_intelligence_enabled
- boolean · required
- data.agent.english_only
- boolean · required
- data.agent.intent
- string | null · optional
- data.agent.intent_keywords
- array | null · optional
- data.agent.autopilot
- boolean · required
- data.agent.pinned_keywords
- array | null · optional
- data.agent.autonomy_level
- string · required · values: suggest, autopilot
- data.agent.autopilot_unlocked
- boolean · required
- data.agent.cognition_enabled
- boolean · required
- data.agent.cadence
- string | null · optional
- data.agent.next_run_at
- string | null · optional
- data.agent.last_run_at
- string | null · optional
- data.agent.is_processing
- boolean · required
- data.agent.created_at
- string · required
- data.agent.updated_at
- string · required
- data.agent.latest_run
- object | null · 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.
PUT/v1/agents/{id}/autonomy
Path and query parameters
- id
- string (path) · required
JSON body fields
- autopilot
- boolean · optional
- autonomy_level
- string · optional · values: suggest, autopilot
- cognition_enabled
- boolean · optional
Documented response fields
- data
- object · required
- data.id
- string · required
- data.name
- string | null · optional
- data.is_recurring
- boolean · required
- data.active
- boolean · required
- data.team_id
- string | null · optional
- data.source
- string | null · optional
- data.keywords
- array · required
- data.platforms
- array · required
- data.exclude_keywords
- array · required
- data.exclude_keywords_strict
- boolean · required
- data.meta_ads_enabled
- boolean · required
- data.data_intelligence_enabled
- boolean · required
- data.english_only
- boolean · required
- data.intent
- string | null · optional
- data.intent_keywords
- array | null · optional
- data.autopilot
- boolean · required
- data.pinned_keywords
- array | null · optional
- data.autonomy_level
- string · required · values: suggest, autopilot
- data.autopilot_unlocked
- boolean · required
- data.cognition_enabled
- boolean · required
- data.cadence
- string | null · optional
- data.next_run_at
- string | null · optional
- data.last_run_at
- string | null · optional
- data.is_processing
- boolean · required
- data.created_at
- string · required
- data.updated_at
- string · required
- data.latest_run
- object | null · optional
- data.latest_run.id
- string · required
- data.latest_run.agent_id
- string · required
- data.latest_run.status
- string · required · values: pending, processing, completed, partial_failure, failed
- data.latest_run.total_videos_inserted
- number · required
- data.latest_run.total_videos_updated
- number · required
- data.latest_run.total_videos_failed
- number · required
- data.latest_run.videos_linked
- number · required
- data.latest_run.meta_ads_linked
- number · required
- data.latest_run.slideshows_linked
- number · required
- data.latest_run.youtube_count
- number · required
- data.latest_run.tiktok_count
- number · required
- data.latest_run.instagram_count
- number · required
- data.latest_run.exclude_keywords_filtered
- number · required
- data.latest_run.intent_filtered
- number · required
- data.latest_run.language_filtered_count
- number · required
- data.latest_run.duplicates_dropped
- number · required
- data.latest_run.outliers_identified
- number · required
- data.latest_run.trends_detected
- array | null · optional
- data.latest_run.keyword_breakdown
- array | null · optional
- data.latest_run.execution_time_ms
- number · required
- data.latest_run.created_at
- string · required
- data.latest_run.started_at
- string | null · optional
- data.latest_run.completed_at
- string | null · optional
- message
- string · required
Documented HTTP responses: 200, 400, 401, 404, 429. Handle each non-success response explicitly; do not silently convert a failed lookup to an empty result.
Before you integrate
- A scheduled agent can continue consuming credits. Proposal mutation routes are deprecated in the current docs; use the current autonomy controls instead of building a new approval loop around them.
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 content research agent api using the documented Virlo API.
Reference: https://allthemapis.com/social-media-apis/content-research-agent-api
Provider documentation: https://dev.virlo.ai/docs/agents
Base URL: https://api.virlo.ai
Starting operation: POST /v1/agents/suggest-keywords
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. Write an explicit research intent, choose platforms and review suggested keywords.
2. Create the agent once; keep its ID and decide whether recurring work or autopilot is appropriate.
3. Read the compact summary and run status before fetching a large result set. Stop recurring work when the task is finished.
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.