Source OpenAPI: https://api.visyble.ai/openapi.json
- Total operations discovered: 273
| Method | Path | Summary | OperationId | Params | Body | Responses | Frontend Usage |
|---|---|---|---|---|---|---|---|
GET | /api/actions | List Actions | list_actions_api_actions_get | 5 | No | 200, 422 | frontend/src/hooks/useApi.ts |
POST | /api/actions | Create Action | create_action_api_actions_post | 3 | Yes | 200, 422 | frontend/src/pages/Actions.tsx |
POST | /api/actions/generate | Generate Actions | generate_actions_api_actions_generate_post | 3 | No | 200, 422 | Not discovered |
GET | /api/actions/timeline | Get Timeline | get_timeline_api_actions_timeline_get | 3 | No | 200, 422 | Not discovered |
DELETE | /api/actions/{action_id} | Delete Action | delete_action_api_actions__action_id__delete | 4 | No | 200, 422 | frontend/src/pages/Actions.tsx |
PUT | /api/actions/{action_id} | Update Action | update_action_api_actions__action_id__put | 4 | Yes | 200, 422 | Not discovered |
POST | /api/actions/{action_id}/complete | Complete Action | complete_action_api_actions__action_id__complete_post | 4 | Yes | 200, 422 | Not discovered |
POST | /api/actions/{action_id}/plan | Add To Plan | add_to_plan_api_actions__action_id__plan_post | 4 | Yes | 200, 422 | Not discovered |
POST | /api/actions/{action_id}/postpone | Postpone Action | postpone_action_api_actions__action_id__postpone_post | 4 | Yes | 200, 422 | Not discovered |
POST | /api/actions/{action_id}/start | Start Action | start_action_api_actions__action_id__start_post | 4 | No | 200, 422 | Not discovered |
POST | /api/actions/{action_id}/verify | Verify Action | verify_action_api_actions__action_id__verify_post | 4 | Yes | 200, 422 | Not discovered |
GET | /api/active-sessions | Get active scraping sessions | get_active_sessions_api_active_sessions_get | 0 | No | 200 | Not discovered |
POST | /api/admin/assign-brands-to-org | Assign brands to an organization by clerk org ID | admin_assign_brands_to_org_api_admin_assign_brands_to_org_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/admin/assign-templates-to-org | Assign templates to an organization by clerk org ID | admin_assign_templates_to_org_api_admin_assign_templates_to_org_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/admin/docs | Admin Dashboard Documentation | get_admin_documentation_api_admin_docs_get | 0 | No | 200 | Not discovered |
POST | /api/admin/import | Bulk import scraped results | admin_bulk_import_api_admin_import_post | 0 | Yes | 200, 422 | Not discovered |
GET | /api/agent-analytics/bots | List Bot Visits | list_bot_visits_api_agent_analytics_bots_get | 9 | No | 200, 422 | frontend/src/pages/AgentAnalytics.tsx |
POST | /api/agent-analytics/cloudflare/enroll | Enroll Cloudflare Worker | enroll_cloudflare_worker_api_agent_analytics_cloudflare_enroll_post | 3 | Yes | 200, 422 | frontend/src/pages/AgentAnalytics.tsx |
POST | /api/agent-analytics/cloudflare/logs | Ingest Cloudflare Worker Logs | ingest_cloudflare_worker_logs_api_agent_analytics_cloudflare_logs_post | 1 | Yes | 200, 422 | Not discovered |
POST | /api/agent-analytics/cloudflare/network/configure | Configure Cloudflare Network | configure_cloudflare_network_api_agent_analytics_cloudflare_network_configure_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/agent-analytics/cloudflare/network/profile/select | Select Cloudflare Network Profile | select_cloudflare_network_profile_api_agent_analytics_cloudflare_network_profile_select_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/agent-analytics/cloudflare/network/profiles | Cloudflare Network Profiles | cloudflare_network_profiles_api_agent_analytics_cloudflare_network_profiles_get | 3 | No | 200, 422 | Not discovered |
GET | /api/agent-analytics/cloudflare/network/status | Cloudflare Network Status | cloudflare_network_status_api_agent_analytics_cloudflare_network_status_get | 3 | No | 200, 422 | frontend/src/pages/AgentAnalytics.tsx |
GET | /api/agent-analytics/cloudflare/status | Cloudflare Worker Status | cloudflare_worker_status_api_agent_analytics_cloudflare_status_get | 3 | No | 200, 422 | frontend/src/pages/AgentAnalytics.tsx |
GET | /api/agent-analytics/heatmap | Heatmap Report | heatmap_report_api_agent_analytics_heatmap_get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
POST | /api/agent-analytics/ingest | Ingest Logs | ingest_logs_api_agent_analytics_ingest_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/agent-analytics/overview | Overview | overview_api_agent_analytics_overview_get | 3 | No | 200, 422 | Not discovered |
GET | /api/agent-analytics/pages | Pages Report | pages_report_api_agent_analytics_pages_get | 5 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/agent-analytics/pages/detail | Pages Detail Report | pages_detail_report_api_agent_analytics_pages_detail_get | 7 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/agent-analytics/pages/index | Pages Index Report | pages_index_report_api_agent_analytics_pages_index_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/agent-analytics/referrals | List Referral Visits | list_referral_visits_api_agent_analytics_referrals_get | 8 | No | 200, 422 | frontend/src/pages/AgentAnalytics.tsx |
GET | /api/agent-analytics/reports/bots | Report Bots Daily | report_bots_daily_api_agent_analytics_reports_bots_get | 3 | No | 200, 422 | Not discovered |
GET | /api/agent-analytics/reports/referrals | Report Referrals Daily | report_referrals_daily_api_agent_analytics_reports_referrals_get | 3 | No | 200, 422 | Not discovered |
GET | /api/agent-analytics/xyops/status | Xyops Status | xyops_status_api_agent_analytics_xyops_status_get | 3 | No | 200, 422 | frontend/src/pages/CostManagement.tsx |
GET | /api/agents/providers/status | Get Agent Provider Status | get_agent_provider_status_api_agents_providers_status_get | 3 | No | 200, 422 | Not discovered |
GET | /api/agents/runs | List Agent Runs | list_agent_runs_api_agents_runs_get | 5 | No | 200, 422 | frontend/src/hooks/useApi.ts |
POST | /api/agents/runs | Create Agent Run | create_agent_run_api_agents_runs_post | 3 | Yes | 201, 422 | frontend/src/pages/Agents.tsx |
GET | /api/agents/runs/{run_id} | Get Agent Run | get_agent_run_api_agents_runs__run_id__get | 4 | No | 200, 422 | Not discovered |
GET | /api/agents/templates | List Agent Templates | list_agent_templates_api_agents_templates_get | 3 | No | 200, 422 | Not discovered |
GET | /api/analytics/citations/categories | Citation Categories | citation_categories_api_analytics_citations_categories_get | 3 | No | 200, 422 | Not discovered |
GET | /api/analytics/citations/graph | Citation Graph | citation_graph_api_analytics_citations_graph_get | 4 | No | 200, 422 | frontend/src/components/insights/CitationsTab.tsx |
GET | /api/analytics/citations/watched-pages | List Watched Pages | list_watched_pages_api_analytics_citations_watched_pages_get | 3 | No | 200, 422 | Not discovered |
POST | /api/analytics/citations/watched-pages | Add Watched Page | add_watched_page_api_analytics_citations_watched_pages_post | 3 | Yes | 201, 422 | Not discovered |
DELETE | /api/analytics/citations/watched-pages/{page_id} | Remove Watched Page | remove_watched_page_api_analytics_citations_watched_pages__page_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/analytics/extraction-quality/latest | Extraction Quality Latest | extraction_quality_latest_api_analytics_extraction_quality_latest_get | 4 | No | 200, 422 | frontend/src/pages/CostManagement.tsx |
GET | /api/analytics/network/distribution | Network Distribution | network_distribution_api_analytics_network_distribution_get | 5 | No | 200, 422 | frontend/src/hooks/useApi.ts, frontend/src/pages/CostManagement.tsx |
GET | /api/analytics/network/latency | Network Latency | network_latency_api_analytics_network_latency_get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/analytics/platforms | Platform Breakdown | platform_breakdown_api_analytics_platforms_get | 5 | No | 200, 422 | frontend/src/components/insights/PlatformsTab.tsx, frontend/src/components/insights/VisibilityTab.tsx |
GET | /api/analytics/platforms/analysis | Platform Analysis | platform_analysis_api_analytics_platforms_analysis_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/analytics/query-fanouts | Query Fanouts | query_fanouts_api_analytics_query_fanouts_get | 3 | No | 200, 422 | Not discovered |
GET | /api/analytics/query-fanouts/analyze | Query Fanout Analyze | query_fanout_analyze_api_analytics_query_fanouts_analyze_get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/analytics/regions | Region Breakdown | region_breakdown_api_analytics_regions_get | 5 | No | 200, 422 | Not discovered |
GET | /api/analytics/scrape-quality/latest | Latest Scrape Quality | latest_scrape_quality_api_analytics_scrape_quality_latest_get | 6 | No | 200, 422 | Not discovered |
GET | /api/analytics/sentiment | Sentiment Analysis | sentiment_analysis_api_analytics_sentiment_get | 5 | No | 200, 422 | Not discovered |
POST | /api/analytics/sentiment/generate | Generate Sentiment | generate_sentiment_api_analytics_sentiment_generate_post | 4 | No | 200, 422 | Not discovered |
GET | /api/analytics/sentiment/status | Sentiment Status | sentiment_status_api_analytics_sentiment_status_get | 3 | No | 200, 422 | Not discovered |
GET | /api/analytics/share-of-voice | Share Of Voice | share_of_voice_api_analytics_share_of_voice_get | 7 | No | 200, 422 | Not discovered |
GET | /api/analytics/topic-performance | Topic Performance | topic_performance_api_analytics_topic_performance_get | 11 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/analytics/visibility-settings | Get Visibility Settings | get_visibility_settings_api_analytics_visibility_settings_get | 3 | No | 200, 422 | Not discovered |
PUT | /api/analytics/visibility-settings | Update Visibility Settings | update_visibility_settings_api_analytics_visibility_settings_put | 3 | Yes | 200, 422 | Not discovered |
GET | /api/analytics/visibility/drilldown | Visibility Drilldown | visibility_drilldown_api_analytics_visibility_drilldown_get | 11 | No | 200, 422 | frontend/src/components/insights/VisibilityTab.tsx |
GET | /api/annotations | List Annotations | list_annotations_api_annotations_get | 5 | No | 200, 422 | Not discovered |
POST | /api/annotations | Create Annotation | create_annotation_api_annotations_post | 3 | Yes | 200, 422 | Not discovered |
DELETE | /api/annotations/{annotation_id} | Delete Annotation | delete_annotation_api_annotations__annotation_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/annotations/{annotation_id} | Get Annotation | get_annotation_api_annotations__annotation_id__get | 4 | No | 200, 422 | Not discovered |
PUT | /api/annotations/{annotation_id} | Update Annotation | update_annotation_api_annotations__annotation_id__put | 4 | Yes | 200, 422 | Not discovered |
GET | /api/api-keys | List API keys | list_api_keys_api_api_keys_get | 3 | No | 200, 422 | frontend/src/pages/CostManagement.tsx |
POST | /api/api-keys | Create API key | create_api_key_api_api_keys_post | 3 | Yes | 201, 422 | frontend/src/pages/Settings.tsx |
DELETE | /api/api-keys/{key_id} | Revoke API key | revoke_api_key_api_api_keys__key_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/audit-logs | List audit logs | list_audit_logs_api_audit_logs_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/auth/me | Get current user info | get_me_api_auth_me_get | 3 | No | 200, 422 | Not discovered |
GET | /api/auth/provider/status | Get auth provider readiness | get_auth_provider_status_api_auth_provider_status_get | 3 | No | 200, 422 | Not discovered |
POST | /api/auth/provider/switch | Switch active auth provider at runtime | switch_auth_provider_api_auth_provider_switch_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/benchmark/leaderboard | Provider leaderboard | get_leaderboard_api_benchmark_leaderboard_get | 4 | No | 200, 422 | Not discovered |
POST | /api/benchmark/run | Start a benchmark run | start_benchmark_api_benchmark_run_post | 3 | Yes | 201, 422 | Not discovered |
GET | /api/benchmark/runs | List benchmark runs | list_benchmark_runs_api_benchmark_runs_get | 5 | No | 200, 422 | Not discovered |
GET | /api/benchmark/runs/{run_id} | Get benchmark run details | get_benchmark_run_api_benchmark_runs__run_id__get | 4 | No | 200, 422 | Not discovered |
POST | /api/billing/admin/account-status | Admin Billing Account Status | admin_billing_account_status_api_billing_admin_account_status_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/billing/admin/unlock-account | Admin Unlock Account Billing | admin_unlock_account_billing_api_billing_admin_unlock_account_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/billing/change-plan | Change Plan | change_plan_api_billing_change_plan_post | 3 | Yes | 200, 422 | frontend/src/pages/CostManagement.tsx |
POST | /api/billing/create-checkout-session | Create Checkout Session | create_checkout_session_api_billing_create_checkout_session_post | 3 | Yes | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/onboarding/TrialPricingStep.tsx |
POST | /api/billing/create-portal-session | Create Portal Session | create_portal_session_api_billing_create_portal_session_post | 3 | No | 200, 422 | Not discovered |
GET | /api/billing/plans | List Plans | list_plans_api_billing_plans_get | 0 | No | 200 | Not discovered |
GET | /api/billing/status | Get Billing Status | get_billing_status_api_billing_status_get | 3 | No | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
GET | /api/brands | List all brands | get_brands_api_brands_get | 9 | No | 200, 422 | frontend/src/pages/Suggestions.tsx |
POST | /api/brands | Create a new brand | create_brand_api_brands_post | 3 | Yes | 201, 400, 422 | frontend/src/pages/Brands.tsx |
GET | /api/brands/details | Get detailed brand analytics | get_brands_details_api_brands_details_get | 3 | No | 200, 422 | Not discovered |
GET | /api/brands/suggested | Get suggested brands from recent chats | get_suggested_brands_api_brands_suggested_get | 3 | No | 200, 422 | Not discovered |
DELETE | /api/brands/{brand_id} | Delete a brand | delete_brand_api_brands__brand_id__delete | 4 | No | 200, 400, 404, 422 | Not discovered |
PATCH | /api/brands/{brand_id} | Update brand advanced settings | update_brand_advanced_api_brands__brand_id__patch | 4 | Yes | 200, 422 | frontend/src/pages/Brands.tsx |
GET | /api/brands/{brand_id}/domains | Get domains for a brand | get_brand_domains_api_brands__brand_id__domains_get | 4 | No | 200, 422 | Not discovered |
POST | /api/brands/{brand_id}/domains | Add domain to a brand | add_brand_domain_api_brands__brand_id__domains_post | 4 | Yes | 200, 422 | Not discovered |
DELETE | /api/brands/{brand_id}/domains/{domain_id} | Remove domain from a brand | delete_brand_domain_api_brands__brand_id__domains__domain_id__delete | 5 | No | 200, 422 | Not discovered |
GET | /api/brands/{brand_id}/link-destinations | Get link destinations for a brand | get_link_destinations_api_brands__brand_id__link_destinations_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
PUT | /api/brands/{brand_id}/set-primary | Set a brand as primary | set_brand_primary_api_brands__brand_id__set_primary_put | 4 | No | 200, 422 | Not discovered |
GET | /api/chats | List Chats | list_chats_api_chats_get | 7 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/chats/{chat_id} | Get Chat Detail | get_chat_detail_api_chats__chat_id__get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/citations | Get citation statistics | get_citation_stats_api_citations_get | 6 | No | 200, 422 | Not discovered |
GET | /api/citations/mismatches | Get mismatch alerts | get_mismatch_alerts_api_citations_mismatches_get | 7 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/compare | Compare two periods | compare_periods_api_compare_get | 9 | No | 200, 400, 422 | frontend/src/hooks/useApi.ts |
GET | /api/config | Get system configuration | get_system_config_api_config_get | 0 | No | 200 | Not discovered |
GET | /api/content-cms/articles | List Articles | list_articles_api_content_cms_articles_get | 3 | No | 200, 422 | Not discovered |
POST | /api/content-cms/articles | Create Article | create_article_api_content_cms_articles_post | 3 | Yes | 200, 422 | Not discovered |
DELETE | /api/content-cms/articles/{article_id} | Delete Article | delete_article_api_content_cms_articles__article_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/content-cms/articles/{article_id} | Get Article | get_article_api_content_cms_articles__article_id__get | 4 | No | 200, 422 | Not discovered |
PUT | /api/content-cms/articles/{article_id} | Update Article | update_article_api_content_cms_articles__article_id__put | 4 | Yes | 200, 422 | Not discovered |
POST | /api/content-cms/articles/{article_id}/generate-draft | Generate Draft | generate_draft_api_content_cms_articles__article_id__generate_draft_post | 4 | No | 200, 422 | Not discovered |
GET | /api/content-cms/articles/{article_id}/workflow-status | Get Workflow Status | get_workflow_status_api_content_cms_articles__article_id__workflow_status_get | 4 | No | 200, 422 | Not discovered |
GET | /api/content-cms/connectors/status | Connectors Status | connectors_status_api_content_cms_connectors_status_get | 0 | No | 200 | Not discovered |
POST | /api/content-cms/generate-brief | Generate Brief | generate_brief_api_content_cms_generate_brief_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/content-cms/publish | Publish Article | publish_article_api_content_cms_publish_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/content-cms/publish/targets | List Publish Targets | list_publish_targets_api_content_cms_publish_targets_get | 3 | No | 200, 422 | Not discovered |
GET | /api/content-cms/templates | List Templates | list_templates_api_content_cms_templates_get | 0 | No | 200 | Not discovered |
POST | /api/content/analyze | Analyze Content | analyze_content_api_content_analyze_post | 3 | Yes | 200, 422 | frontend/src/pages/ContentOptimization.tsx |
GET | /api/content/optimizations | List Optimizations | list_optimizations_api_content_optimizations_get | 5 | No | 200, 422 | frontend/src/hooks/useApi.ts |
DELETE | /api/content/optimizations/{optimization_id} | Delete Optimization | delete_optimization_api_content_optimizations__optimization_id__delete | 4 | No | 200, 422 | frontend/src/pages/ContentOptimization.tsx |
GET | /api/content/optimizations/{optimization_id} | Get Optimization Detail | get_optimization_detail_api_content_optimizations__optimization_id__get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/cost-estimate | Estimate daily costs | estimate_costs_api_cost_estimate_get | 4 | No | 200, 422 | Not discovered |
GET | /api/countries | List Countries | list_countries_api_countries_get | 3 | No | 200, 422 | Not discovered |
PUT | /api/daily-quota | Update daily quota | update_daily_quota_api_daily_quota_put | 1 | No | 200, 422 | Not discovered |
GET | /api/daily-stats | Get daily statistics | get_daily_stats_api_daily_stats_get | 1 | No | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
GET | /api/docker/containers | List Docker containers | list_docker_containers_api_docker_containers_get | 0 | No | 200 | Not discovered |
GET | /api/docker/logs/{container} | Get Docker container logs | get_docker_logs_api_docker_logs__container__get | 3 | No | 200, 422 | Not discovered |
POST | /api/embeddings/sync | Sync Embeddings | sync_embeddings_api_embeddings_sync_post | 4 | No | 200, 422 | Not discovered |
GET | /api/export/citations.csv | Export citations domain breakdown as CSV | export_citations_csv_api_export_citations_csv_get | 6 | No | 200, 422 | frontend/src/components/insights/CitationsTab.tsx |
GET | /api/export/{section}.csv | Export analytics section as CSV | export_csv_api_export__section__csv_get | 7 | No | 200, 422 | Not discovered |
POST | /api/geo/competitor-gaps | Generate Competitor Gaps | generate_competitor_gaps_api_geo_competitor_gaps_post | 5 | No | 200, 422 | Not discovered |
POST | /api/geo/content-opportunities | Generate Content Opportunities | generate_content_opportunities_api_geo_content_opportunities_post | 5 | No | 200, 422 | Not discovered |
POST | /api/geo/outreach-targets | Generate Outreach Targets | generate_outreach_targets_api_geo_outreach_targets_post | 5 | No | 200, 422 | Not discovered |
POST | /api/geo/quick-wins | Generate Quick Wins | generate_quick_wins_api_geo_quick_wins_post | 5 | No | 200, 422 | Not discovered |
POST | /api/geo/recommendations | Generate Recommendations Endpoint | generate_recommendations_endpoint_api_geo_recommendations_post | 5 | No | 200, 422 | frontend/src/components/geo/KanbanBoard.tsx |
GET | /api/geo/recommendations/{brand_id} | Get Recommendations Endpoint | get_recommendations_endpoint_api_geo_recommendations__brand_id__get | 4 | No | 200, 422 | frontend/src/components/geo/KanbanBoard.tsx |
PATCH | /api/geo/recommendations/{recommendation_id}/status | Update Recommendation Status | update_recommendation_status_api_geo_recommendations__recommendation_id__status_patch | 4 | Yes | 200, 422 | Not discovered |
POST | /api/geo/strategic-summary | Generate Strategic Summary | generate_strategic_summary_api_geo_strategic_summary_post | 5 | No | 200, 422 | Not discovered |
POST | /api/geo/technical-checklist | Generate Technical Checklist | generate_technical_checklist_api_geo_technical_checklist_post | 5 | No | 200, 422 | Not discovered |
GET | /api/health | Health check | health_check_api_health_get | 0 | No | 200 | Not discovered |
GET | /api/integrations | List integration connections | list_integrations_api_integrations_get | 3 | No | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
POST | /api/integrations | Create integration connection | create_integration_api_integrations_post | 3 | Yes | 201, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
GET | /api/integrations/catalog | List supported integration providers | integrations_catalog_api_integrations_catalog_get | 3 | No | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
DELETE | /api/integrations/{integration_id} | Delete integration connection | delete_integration_api_integrations__integration_id__delete | 4 | No | 200, 422 | Not discovered |
POST | /api/integrations/{integration_id}/test | Test integration connectivity | test_integration_api_integrations__integration_id__test_post | 4 | No | 200, 422 | frontend/src/pages/Settings.tsx |
GET | /api/job-history | Get job execution history | get_job_history_api_job_history_get | 4 | No | 200, 422 | Not discovered |
GET | /api/jobs | List scraping jobs | list_jobs_api_jobs_get | 6 | No | 200, 422 | frontend/src/pages/CostManagement.tsx, frontend/src/pages/Settings.tsx |
POST | /api/jobs/scrape | Create scraping job | create_scrape_job_api_jobs_scrape_post | 3 | Yes | 201, 422, 500 | Not discovered |
GET | /api/jobs/{job_id} | Get job details | get_job_api_jobs__job_id__get | 1 | No | 200, 422 | Not discovered |
GET | /api/jobs/{job_id}/details | Get detailed job information | get_job_details_api_jobs__job_id__details_get | 1 | No | 200, 422 | frontend/src/pages/CostManagement.tsx |
GET | /api/jobs/{job_id}/html | Get job HTML snapshot | get_job_html_api_jobs__job_id__html_get | 1 | No | 200, 422 | Not discovered |
GET | /api/knowledge-bases | List Knowledge Bases | list_knowledge_bases_api_knowledge_bases_get | 3 | No | 200, 422 | Not discovered |
POST | /api/knowledge-bases | Create Knowledge Base | create_knowledge_base_api_knowledge_bases_post | 3 | Yes | 201, 422 | frontend/src/pages/KnowledgeBases.tsx |
GET | /api/knowledge-bases/status | Knowledge Base Status | knowledge_base_status_api_knowledge_bases_status_get | 3 | No | 200, 422 | Not discovered |
DELETE | /api/knowledge-bases/{kb_id} | Delete Knowledge Base | delete_knowledge_base_api_knowledge_bases__kb_id__delete | 4 | No | 200, 422 | Not discovered |
PATCH | /api/knowledge-bases/{kb_id} | Update Knowledge Base | update_knowledge_base_api_knowledge_bases__kb_id__patch | 4 | Yes | 200, 422 | Not discovered |
GET | /api/knowledge-bases/{kb_id}/documents | List Documents | list_documents_api_knowledge_bases__kb_id__documents_get | 4 | No | 200, 422 | Not discovered |
DELETE | /api/knowledge-bases/{kb_id}/documents/{document_id} | Delete Document | delete_document_api_knowledge_bases__kb_id__documents__document_id__delete | 5 | No | 200, 422 | Not discovered |
POST | /api/knowledge-bases/{kb_id}/documents/{document_id}/reindex | Reindex Document | reindex_document_api_knowledge_bases__kb_id__documents__document_id__reindex_post | 5 | No | 200, 422 | Not discovered |
POST | /api/knowledge-bases/{kb_id}/import-url | Import Url | import_url_api_knowledge_bases__kb_id__import_url_post | 4 | Yes | 201, 422 | Not discovered |
POST | /api/knowledge-bases/{kb_id}/search | Search Knowledge Base | search_knowledge_base_api_knowledge_bases__kb_id__search_post | 4 | Yes | 200, 422 | Not discovered |
POST | /api/knowledge-bases/{kb_id}/upload | Upload Document | upload_document_api_knowledge_bases__kb_id__upload_post | 4 | Yes | 201, 422 | Not discovered |
GET | /api/metrics | Get dashboard metrics | get_metrics_api_metrics_get | 9 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/models | List Ai Models | list_ai_models_api_models_get | 3 | No | 200, 422 | Not discovered |
POST | /api/onboarding/account-type | Save Account Type | save_account_type_api_onboarding_account_type_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/onboarding/admin/account-status | Admin Onboarding Account Status | admin_onboarding_account_status_api_onboarding_admin_account_status_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/onboarding/admin/sync-account | Admin Onboarding Sync Account | admin_onboarding_sync_account_api_onboarding_admin_sync_account_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/onboarding/admin/unlock-account | Admin Onboarding Unlock Account | admin_onboarding_unlock_account_api_onboarding_admin_unlock_account_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/onboarding/agency-waitlist | Join Agency Waitlist | join_agency_waitlist_api_onboarding_agency_waitlist_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/onboarding/complete | Complete Onboarding | complete_onboarding_api_onboarding_complete_post | 3 | No | 200, 422 | Not discovered |
POST | /api/onboarding/discover-competitors | Discover Competitors | discover_competitors_api_onboarding_discover_competitors_post | 3 | No | 200, 422 | Not discovered |
POST | /api/onboarding/generate-prompts | Generate Ai Prompts | generate_ai_prompts_api_onboarding_generate_prompts_post | 3 | No | 200, 422 | frontend/src/pages/onboarding/OnboardingWizard.tsx |
GET | /api/onboarding/prompts | Get Prompts For Review | get_prompts_for_review_api_onboarding_prompts_get | 3 | No | 200, 422 | frontend/src/pages/onboarding/OnboardingWizard.tsx |
POST | /api/onboarding/prompts | Save Prompts | save_prompts_api_onboarding_prompts_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/onboarding/status | Get Onboarding Status | get_onboarding_status_api_onboarding_status_get | 3 | No | 200, 422 | frontend/src/components/layout/Sidebar.tsx, frontend/src/pages/onboarding/OnboardingWizard.tsx |
GET | /api/onboarding/topics | Get Available Topics | get_available_topics_api_onboarding_topics_get | 3 | No | 200, 422 | frontend/src/pages/onboarding/OnboardingWizard.tsx |
POST | /api/onboarding/topics | Save Topics | save_topics_api_onboarding_topics_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/personas | List Personas | list_personas_api_personas_get | 3 | No | 200, 422 | frontend/src/pages/Settings.tsx |
POST | /api/personas | Create Persona | create_persona_api_personas_post | 3 | Yes | 200, 422 | frontend/src/components/insights/PersonasTab.tsx, frontend/src/pages/Settings.tsx |
DELETE | /api/personas/{persona_id} | Delete Persona | delete_persona_api_personas__persona_id__delete | 4 | No | 200, 422 | frontend/src/components/insights/PersonasTab.tsx, frontend/src/pages/Settings.tsx |
GET | /api/personas/{persona_id} | Get Persona | get_persona_api_personas__persona_id__get | 4 | No | 200, 422 | Not discovered |
PUT | /api/personas/{persona_id} | Update Persona | update_persona_api_personas__persona_id__put | 4 | Yes | 200, 422 | frontend/src/components/insights/PersonasTab.tsx |
GET | /api/prompt-templates | List prompt templates | list_prompt_templates_api_prompt_templates_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
POST | /api/prompt-templates | Create prompt template | create_prompt_template_api_prompt_templates_post | 3 | Yes | 201, 422 | frontend/src/pages/PromptManagement.tsx |
DELETE | /api/prompt-templates/{template_id} | Delete prompt template | delete_prompt_template_api_prompt_templates__template_id__delete | 4 | No | 200, 422 | frontend/src/pages/PromptManagement.tsx |
PUT | /api/prompt-templates/{template_id} | Update prompt template | update_prompt_template_api_prompt_templates__template_id__put | 4 | Yes | 200, 422 | frontend/src/pages/PromptManagement.tsx |
POST | /api/prompt-templates/{template_id}/accept | Accept suggested template | accept_template_api_prompt_templates__template_id__accept_post | 4 | No | 200, 422 | frontend/src/pages/PromptManagement.tsx |
POST | /api/prompt-templates/{template_id}/reject | Reject and delete suggested template | reject_template_api_prompt_templates__template_id__reject_post | 4 | No | 200, 422 | frontend/src/pages/PromptManagement.tsx |
GET | /api/prompt-volumes | Get Prompt Volumes | get_prompt_volumes_api_prompt_volumes_get | 7 | No | 200, 422 | frontend/src/hooks/useApi.ts, frontend/src/pages/AnswerEngineInsights.tsx |
GET | /api/prompts | List all prompts | get_prompts_api_prompts_get | 6 | No | 200, 422 | frontend/src/hooks/useApi.ts |
POST | /api/prompts/batch | Batch action on templates | batch_action_api_prompts_batch_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/prompts/estimate-volume | Estimate search volume | estimate_volume_api_prompts_estimate_volume_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/prompts/suggest | AI-powered prompt suggestions | suggest_prompts_api_prompts_suggest_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/prompts/upload-csv | Upload CSV of prompts | upload_csv_api_prompts_upload_csv_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/prompts/{query_id} | Get prompt details | get_prompt_detail_api_prompts__query_id__get | 4 | No | 200, 400, 404, 422 | frontend/src/hooks/useApi.ts, frontend/src/hooks/useApi.ts |
GET | /api/prompts/{query_id}/analysis | Get full prompt analysis | get_prompt_analysis_api_prompts__query_id__analysis_get | 7 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/prompts/{query_id}/history | Get prompt history (audit trail) | get_prompt_history_api_prompts__query_id__history_get | 7 | No | 200, 404, 422 | frontend/src/hooks/useApi.ts, frontend/src/pages/Prompts.tsx |
GET | /api/proxy-providers | List all proxy providers and their status | list_proxy_providers_api_proxy_providers_get | 0 | No | 200 | Not discovered |
GET | /api/reference | API Reference | get_api_reference_api_reference_get | 0 | No | 200 | Not discovered |
POST | /api/schedule-batch | Schedule batch of prompts | schedule_batch_api_schedule_batch_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/scheduled-jobs | List scheduled/recurring jobs | list_scheduled_jobs_api_scheduled_jobs_get | 3 | No | 200, 422 | frontend/src/pages/Settings.tsx |
DELETE | /api/scheduled-jobs/{job_id} | Delete a scheduled job | delete_scheduled_job_api_scheduled_jobs__job_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/scheduled-jobs/{job_id} | Get scheduled job details | get_scheduled_job_api_scheduled_jobs__job_id__get | 1 | No | 200, 422 | Not discovered |
PUT | /api/scheduled-jobs/{job_id}/pause | Pause a scheduled job | pause_scheduled_job_api_scheduled_jobs__job_id__pause_put | 4 | No | 200, 422 | Not discovered |
PUT | /api/scheduled-jobs/{job_id}/resume | Resume a paused job | resume_scheduled_job_api_scheduled_jobs__job_id__resume_put | 4 | No | 200, 422 | Not discovered |
GET | /api/scheduler-status | Get scheduler status | get_scheduler_status_api_scheduler_status_get | 0 | No | 200 | frontend/src/pages/Settings.tsx |
GET | /api/screenshots | List all screenshots | list_screenshots_api_screenshots_get | 2 | No | 200, 422 | Not discovered |
GET | /api/screenshots/{filename} | Get screenshot image | get_screenshot_api_screenshots__filename__get | 1 | No | 200, 422 | Not discovered |
GET | /api/settings | Get workspace settings | get_settings_api_settings_get | 3 | No | 200, 422 | Not discovered |
PUT | /api/settings | Update workspace settings | update_settings_api_settings_put | 3 | Yes | 200, 422 | frontend/src/pages/Settings.tsx |
GET | /api/settings/export | Export workspace data snapshot | export_workspace_data_api_settings_export_get | 3 | No | 200, 422 | frontend/src/pages/Settings.tsx |
POST | /api/settings/ga/connect | Connect Ga | connect_ga_api_settings_ga_connect_post | 3 | Yes | 200, 422 | Not discovered |
POST | /api/settings/ga/deep-analysis | Trigger Deep Analysis | trigger_deep_analysis_api_settings_ga_deep_analysis_post | 3 | No | 200, 422 | Not discovered |
POST | /api/settings/ga/disconnect | Disconnect Ga | disconnect_ga_api_settings_ga_disconnect_post | 3 | No | 200, 422 | Not discovered |
GET | /api/settings/ga/oauth/callback | Oauth Callback | oauth_callback_api_settings_ga_oauth_callback_get | 2 | No | 200, 422 | Not discovered |
POST | /api/settings/ga/oauth/connect | Oauth Connect | oauth_connect_api_settings_ga_oauth_connect_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/settings/ga/oauth/properties | Oauth Properties | oauth_properties_api_settings_ga_oauth_properties_get | 4 | No | 200, 422 | Not discovered |
POST | /api/settings/ga/oauth/start | Oauth Start | oauth_start_api_settings_ga_oauth_start_post | 3 | No | 200, 422 | Not discovered |
GET | /api/settings/ga/status | Ga Status | ga_status_api_settings_ga_status_get | 3 | No | 200, 422 | frontend/src/pages/AgentAnalytics.tsx, frontend/src/pages/Settings.tsx |
GET | /api/settings/ga/summary | Ga Summary | ga_summary_api_settings_ga_summary_get | 4 | No | 200, 422 | Not discovered |
GET | /api/settings/metric-formulas | List all metric formulas and explanations | list_metric_formulas_api_settings_metric_formulas_get | 3 | No | 200, 422 | frontend/src/pages/MetricFormulas.tsx |
PUT | /api/settings/metric-formulas/{metric_key} | Update or reset a metric formula override | update_metric_formula_api_settings_metric_formulas__metric_key__put | 4 | Yes | 200, 422 | frontend/src/pages/MetricFormulas.tsx |
POST | /api/settings/request-account-deletion | Create account deletion request | request_account_deletion_api_settings_request_account_deletion_post | 3 | Yes | 200, 422 | Not discovered |
GET | /api/settings/support-ticket-instructions | Get support ticket instructions | get_support_ticket_instructions_api_settings_support_ticket_instructions_get | 3 | No | 200, 422 | Not discovered |
GET | /api/settings/support-tickets | List support tickets | list_support_tickets_api_settings_support_tickets_get | 4 | No | 200, 422 | Not discovered |
POST | /api/settings/support-tickets | Create support ticket | create_support_ticket_api_settings_support_tickets_post | 3 | Yes | 201, 422 | Not discovered |
GET | /api/sources | List all sources | get_sources_api_sources_get | 3 | No | 200, 422 | Not discovered |
GET | /api/sources/analytics | Get source analytics | get_sources_analytics_api_sources_analytics_get | 6 | No | 200, 422 | Not discovered |
POST | /api/sources/classify | Classify Sources | classify_sources_api_sources_classify_post | 3 | No | 200, 422 | Not discovered |
GET | /api/sources/domains | Get Domain Analytics | get_domain_analytics_api_sources_domains_get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/sources/gap-analysis | Get Gap Analysis | get_gap_analysis_api_sources_gap_analysis_get | 4 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/sources/urls | Get Url Analytics | get_url_analytics_api_sources_urls_get | 4 | No | 200, 422 | frontend/src/pages/Sources.tsx |
GET | /api/stats/database | Get database statistics | get_database_stats_api_stats_database_get | 3 | No | 200, 422 | frontend/src/pages/Settings.tsx |
GET | /api/suggestions | Get SEO suggestions | get_suggestions_api_suggestions_get | 3 | No | 200, 422 | Not discovered |
POST | /api/suggestions/generate | Generate Ai Suggestions | generate_ai_suggestions_api_suggestions_generate_post | 5 | Yes | 200, 422 | Not discovered |
POST | /api/suggestions/generate/v2 | Generate Ai Suggestions V2 | generate_ai_suggestions_v2_api_suggestions_generate_v2_post | 5 | Yes | 200, 422 | Not discovered |
GET | /api/suggestions/status | Get Suggestions Status | get_suggestions_status_api_suggestions_status_get | 3 | No | 200, 422 | Not discovered |
GET | /api/support/ticket-instructions | Get support ticket instructions | get_support_ticket_instructions_api_support_ticket_instructions_get | 3 | No | 200, 422 | frontend/src/pages/Support.tsx |
GET | /api/support/tickets | List support tickets | list_support_tickets_api_support_tickets_get | 4 | No | 200, 422 | frontend/src/pages/Support.tsx |
POST | /api/support/tickets | Create support ticket | create_support_ticket_api_support_tickets_post | 3 | Yes | 201, 422 | frontend/src/pages/Support.tsx |
GET | /api/tags | List tags for org | list_tags_api_tags_get | 3 | No | 200, 422 | frontend/src/components/filters/DashboardFilters.tsx |
POST | /api/tags | Create tag | create_tag_api_tags_post | 3 | Yes | 201, 422 | frontend/src/pages/PromptManagement.tsx |
DELETE | /api/tags/{tag_id} | Delete tag | delete_tag_api_tags__tag_id__delete | 4 | No | 200, 422 | frontend/src/pages/PromptManagement.tsx |
PUT | /api/tags/{tag_id} | Update tag name | update_tag_api_tags__tag_id__put | 4 | Yes | 200, 422 | frontend/src/pages/PromptManagement.tsx |
GET | /api/templates | List prompt templates | list_templates_api_templates_get | 4 | No | 200, 422 | Not discovered |
POST | /api/templates | Create prompt template | create_template_api_templates_post | 3 | Yes | 200, 422 | Not discovered |
DELETE | /api/templates/{template_id} | Delete template | delete_template_api_templates__template_id__delete | 4 | No | 200, 422 | Not discovered |
GET | /api/templates/{template_id} | Get template by ID | get_template_api_templates__template_id__get | 4 | No | 200, 422 | Not discovered |
PUT | /api/templates/{template_id} | Update template | update_template_api_templates__template_id__put | 4 | Yes | 200, 422 | Not discovered |
GET | /api/topics | List topics for org | list_topics_api_topics_get | 3 | No | 200, 422 | frontend/src/components/filters/DashboardFilters.tsx |
POST | /api/topics | Create topic | create_topic_api_topics_post | 3 | Yes | 201, 422 | frontend/src/pages/PromptManagement.tsx |
DELETE | /api/topics/{topic_id} | Delete topic | delete_topic_api_topics__topic_id__delete | 4 | No | 200, 422 | frontend/src/pages/PromptManagement.tsx |
PUT | /api/topics/{topic_id} | Update topic name | update_topic_api_topics__topic_id__put | 4 | Yes | 200, 422 | frontend/src/pages/PromptManagement.tsx |
GET | /api/visibility | Get visibility data | get_visibility_data_api_visibility_get | 8 | No | 200, 422 | frontend/src/hooks/useApi.ts |
GET | /api/vpn/ip/{country} | Get VPN container IP | get_vpn_ip_api_vpn_ip__country__get | 1 | No | 200, 422 | Not discovered |
POST | /api/vpn/rotate/{country} | Rotate VPN IP | rotate_vpn_ip_api_vpn_rotate__country__post | 1 | No | 200, 422 | Not discovered |
GET | /api/vpn/servers | Get VPN servers | get_vpn_servers_api_vpn_servers_get | 0 | No | 200, 503 | Not discovered |
GET | /api/vpn/status | Get all VPN status | get_all_vpn_status_api_vpn_status_get | 0 | No | 200 | Not discovered |
GET | /api/webhooks | List webhook endpoints | list_webhooks_api_webhooks_get | 3 | No | 200, 422 | Not discovered |
POST | /api/webhooks | Create webhook endpoint | create_webhook_api_webhooks_post | 3 | Yes | 201, 422 | frontend/src/pages/Settings.tsx |
POST | /api/webhooks/clerk | Handle Clerk Webhook | handle_clerk_webhook_api_webhooks_clerk_post | 0 | No | 200 | Not discovered |
POST | /api/webhooks/stripe | Handle Stripe Webhook | handle_stripe_webhook_api_webhooks_stripe_post | 0 | No | 200 | Not discovered |
DELETE | /api/webhooks/{webhook_id} | Delete webhook endpoint | delete_webhook_api_webhooks__webhook_id__delete | 4 | No | 200, 422 | Not discovered |
PATCH | /api/webhooks/{webhook_id}/toggle | Toggle webhook active state | toggle_webhook_api_webhooks__webhook_id__toggle_patch | 4 | No | 200, 422 | Not discovered |
POST | /api/xyops/control/dispatch-due | Dispatch due recurring jobs (xyOps controlled) | xyops_dispatch_due_jobs_api_xyops_control_dispatch_due_post | 1 | Yes | 200, 422 | Not discovered |
POST | /api/xyops/control/run-job/{job_id} | Run a specific job/template (xyOps controlled) | xyops_run_specific_job_api_xyops_control_run_job__job_id__post | 2 | No | 200, 422 | Not discovered |
GET | /api/xyops/control/status | Get xyOps control-plane status | xyops_control_status_api_xyops_control_status_get | 1 | No | 200, 422 | Not discovered |
GET | /api/xyops/control/templates | Get production xyOps event templates | xyops_control_templates_api_xyops_control_templates_get | 1 | No | 200, 422 | Not discovered |
GET | /v1/brands | List Brands | list_brands_v1_brands_get | 1 | No | 200, 422 | Not discovered |
GET | /v1/chats | List Chats | list_chats_v1_chats_get | 3 | No | 200, 422 | Not discovered |
GET | /v1/chats/{chat_id} | Get Chat Detail | get_chat_detail_v1_chats__chat_id__get | 2 | No | 200, 422 | Not discovered |
GET | /v1/models | List Models | list_models_v1_models_get | 1 | No | 200, 422 | Not discovered |
GET | /v1/prompts | List Prompts | list_prompts_v1_prompts_get | 1 | No | 200, 422 | Not discovered |
POST | /v1/reports/brands | Report Brands | report_brands_v1_reports_brands_post | 1 | Yes | 200, 422 | Not discovered |
POST | /v1/reports/domains | Report Domains | report_domains_v1_reports_domains_post | 1 | Yes | 200, 422 | Not discovered |
GET | /v1/tags | List Tags | list_tags_v1_tags_get | 1 | No | 200, 422 | Not discovered |
GET | /v1/topics | List Topics | list_topics_v1_topics_get | 1 | No | 200, 422 | Not discovered |
Endpoint contract details
| Method | Path | Tags | Parameters | Request Body Types | Description |
|---|---|---|---|---|---|
GET | /api/actions | actions | query:status, query:category, header:authorization, header:x-admin-key, header:x-organization-id | - | List all suggestion actions for the current organization. Automatically un-postpones actions whose postpone period has expired. |
POST | /api/actions | actions | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a new suggestion action (from AI suggestion or manual). |
POST | /api/actions/generate | actions | header:authorization, header:x-admin-key, header:x-organization-id | - | Auto-generate actions from sources with gap_score > 0.3. Uses Gemini for intelligent recommendations, falls back to heuristics. |
GET | /api/actions/timeline | actions | header:authorization, header:x-admin-key, header:x-organization-id | - | Get a timeline view of all planned/in-progress/done actions, grouped by time period (overdue, today, this week, this month, future, completed). |
DELETE | /api/actions/{action_id} | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete a suggestion action. |
PUT | /api/actions/{action_id} | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Update an existing action's details. |
POST | /api/actions/{action_id}/complete | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Mark an action as done. Still needs verification. |
POST | /api/actions/{action_id}/plan | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Add a suggestion to the marketing plan timeline with a target date. |
POST | /api/actions/{action_id}/postpone | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Postpone a suggestion so it's hidden for a number of days. |
POST | /api/actions/{action_id}/start | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Move an action to in_progress status. |
POST | /api/actions/{action_id}/verify | actions | path:action_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Verify a completed action. Only verifiable when status is 'done'. |
GET | /api/active-sessions | analytics | - | - | Get all currently running scraping sessions with real-time status. |
POST | /api/admin/assign-brands-to-org | admin | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Assign a list of brand IDs to a specific organization. Body: |
POST | /api/admin/assign-templates-to-org | admin | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Assign templates to a specific organization. Body: |
GET | /api/admin/docs | system | - | - | Complete documentation for the admin dashboard interface. |
POST | /api/admin/import | admin | - | application/json | Import pre-scraped results into the database. Requires admin API key. |
GET | /api/agent-analytics/bots | agent-analytics | query:limit<integer>, query:offset<integer>, query:bot_name, query:bot_provider, query:start_date, query:end_date, header:authorization, header:x-admin-key, header:x-organization-id | - | List bot visits with optional filters. |
POST | /api/agent-analytics/cloudflare/enroll | agent-analytics | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Enroll Cloudflare Worker ingestion for the active Visyble organization. Generates a dedicated write API key and setup payload. |
POST | /api/agent-analytics/cloudflare/logs | agent-analytics | header:X-API-Key | application/json | Public ingestion endpoint for Cloudflare Worker middleware. Authenticates with an API key generated during enrollment. |
POST | /api/agent-analytics/cloudflare/network/configure | agent-analytics | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/agent-analytics/cloudflare/network/profile/select | agent-analytics | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
GET | /api/agent-analytics/cloudflare/network/profiles | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/agent-analytics/cloudflare/network/status | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/agent-analytics/cloudflare/status | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/agent-analytics/heatmap | agent-analytics | query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Return day/hour hit cells for traffic heatmap. |
POST | /api/agent-analytics/ingest | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Ingest server log entries. Classifies bots via user-agent and creates BotVisit records. Creates ReferralVisit when referer matches AI sources. |
GET | /api/agent-analytics/overview | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Dashboard overview: totals, top bots, top referrers, last 30 days daily counts. |
GET | /api/agent-analytics/pages | agent-analytics | query:limit<integer>, query:bot_provider, header:authorization, header:x-admin-key, header:x-organization-id | - | Aggregate crawl hits by URL/path for pages table. |
GET | /api/agent-analytics/pages/detail | agent-analytics | query:path<string>, query:bot_provider, query:limit_related<integer>, query:limit_recent<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Return detail data for one selected page path. |
GET | /api/agent-analytics/pages/index | agent-analytics | query:limit<integer>, query:bot_provider, query:search, header:authorization, header:x-admin-key, header:x-organization-id | - | Aggregate crawl hits by path for the dedicated Pages tab. |
GET | /api/agent-analytics/referrals | agent-analytics | query:limit<integer>, query:offset<integer>, query:start_date, query:end_date, query:referral_source, header:authorization, header:x-admin-key, header:x-organization-id | - | List referral visits with optional filters. |
GET | /api/agent-analytics/reports/bots | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Pre-aggregated daily bot report: group by date + bot_name. |
GET | /api/agent-analytics/reports/referrals | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Pre-aggregated daily referral report: group by date + referral_source. |
GET | /api/agent-analytics/xyops/status | agent-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/agents/providers/status | agents | header:authorization, header:x-admin-key, header:x-organization-id | - | Return configured primary/fallback providers and runtime gateway status. |
GET | /api/agents/runs | agents | query:status, query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/agents/runs | agents | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/agents/runs/{run_id} | agents | path:run_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/agents/templates | agents | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/analytics/citations/categories | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | - | Return citation source classification rules: user overrides + default heuristics. |
GET | /api/analytics/citations/graph | analytics-insights | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Return materialized citation graph for 2D/3D network views. Falls back to on-the-fly derivation from prompts/sources when no materialized edges are available. |
GET | /api/analytics/citations/watched-pages | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | - | List all watched pages for the organization. |
POST | /api/analytics/citations/watched-pages | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Add a new URL to the watched pages list. |
DELETE | /api/analytics/citations/watched-pages/{page_id} | analytics-insights | path:page_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Remove a watched page by ID. |
GET | /api/analytics/extraction-quality/latest | analytics-insights | query:limit_per_provider<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Latest successful extraction quality metrics by provider. Designed for resilient telemetry in Cost Management and Insights. |
GET | /api/analytics/network/distribution | analytics-insights | query:days<integer>, query:map_limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Cloudflare + proxy network location distribution for mapcn-style UI. |
GET | /api/analytics/network/latency | analytics-insights | query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Periodic and route latency analytics for optimization. |
GET | /api/analytics/platforms | analytics-insights | query:metric<string>, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Pivot visibility/citation data by AI platform (ChatGPT, Perplexity, Google AI). Returns matrix data for the Platforms tab. |
GET | /api/analytics/platforms/analysis | analytics-insights | query:start_date, query:end_date, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Full platform analytics view for the Platforms tab: - Summary KPIs for primary brand - Per-platform metrics and trends - Recent execution rows (prompt runs) |
GET | /api/analytics/query-fanouts | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | - | Return stored query fanout patterns from LLM search behavior. Groups individual fanout records by original query. |
GET | /api/analytics/query-fanouts/analyze | analytics-insights | query:original_query!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Analyze query fanout variations for a single original prompt query. Returns both unique variations and per-execution fanout runs. |
GET | /api/analytics/regions | analytics-insights | query:brand_id, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Aggregate visibility + proxy connection intelligence by region. |
GET | /api/analytics/scrape-quality/latest | analytics-insights | query:providers<string>, query:limit<integer>, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Latest successful scrape extraction quality, resilient to provider UI changes. Returns per-job quality metrics and provider aggregates. |
GET | /api/analytics/sentiment | analytics-insights | query:brand_id, query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Return cached sentiment analysis results for the organization. Data is populated by background Gemini analysis jobs. |
POST | /api/analytics/sentiment/generate | analytics-insights | query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Trigger sentiment analysis generation via Gemini for org brands. Runs in the background and caches results in the SentimentAnalysis table. |
GET | /api/analytics/sentiment/status | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/analytics/share-of-voice | analytics-insights | query:brand_id, query:platform, query:persona_id, query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Aggregate brand mention percentages across scraped prompts. Optional platform filter: chatgpt, perplexity, google_ai. |
GET | /api/analytics/topic-performance | analytics-insights | query:start_date, query:end_date, query:model, query:country, query:topic_id, query:tag_id, query:brand_id, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Compute topic performance using REAL org data. - Topic source of truth: PromptTopic + PromptTemplate(topic_id) - Visibility: brand mentions / prompt runs in each topic - Citation share: direct-link mentions / total mentions in each topic |
GET | /api/analytics/visibility-settings | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/analytics/visibility-settings | analytics-insights | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/analytics/visibility/drilldown | analytics-insights | query:dimension!<string>, query:entity_id!<string>, query:start_date, query:end_date, query:brand_id, query:persona_id, query:model, query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Detailed drilldown for visibility interactions. Supports dimensions: - daily: entity_id is YYYY-MM-DD - topic: entity_id is topic_id - platform: entity_id is ai_model (chatgpt|perplexity|google_ai|...) - brand: entity_id is brand_id |
GET | /api/annotations | annotations | query:start_date, query:end_date, header:authorization, header:x-admin-key, header:x-organization-id | - | List all chart annotations for the current organization. Optionally filter by date range. |
POST | /api/annotations | annotations | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a new chart annotation. |
DELETE | /api/annotations/{annotation_id} | annotations | path:annotation_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete an annotation. |
GET | /api/annotations/{annotation_id} | annotations | path:annotation_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get a specific annotation by ID. |
PUT | /api/annotations/{annotation_id} | annotations | path:annotation_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Update an existing annotation. |
GET | /api/api-keys | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/api-keys | settings | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
DELETE | /api/api-keys/{key_id} | settings | path:key_id!<integer>, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
GET | /api/audit-logs | settings | query:limit<integer>, query:offset<integer>, query:action, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
GET | /api/auth/me | auth | header:authorization, header:x-admin-key, header:x-organization-id | - | Return the authenticated user's profile and active organization. Used by the frontend to verify authentication state. |
GET | /api/auth/provider/status | auth | header:x-admin-key, header:authorization, header:x-organization-id | - | Return login provider configuration readiness for production operations. Designed for Cost Management -> Login & Identity tab. |
POST | /api/auth/provider/switch | auth | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Runtime switch for login provider to support rapid rollback/cutover. Guarded behind AUTH_PROVIDER_RUNTIME_SWITCH_ENABLED=true. Note: applies per running process and is not persisted across restarts. |
GET | /api/benchmark/leaderboard | benchmark | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Aggregates results across all completed benchmark runs into a ranked leaderboard. Composite score = success_rate0.4 + fingerprint_score0.3 + cost_efficiency0.15 + speed0.15 |
POST | /api/benchmark/run | benchmark | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Fire parallel scrape jobs across providers x targets x countries. |
GET | /api/benchmark/runs | benchmark | query:limit<integer>, query:offset<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Returns all benchmark runs ordered by creation date. |
GET | /api/benchmark/runs/{run_id} | benchmark | path:run_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Returns all results for a run, grouped by provider. |
POST | /api/billing/admin/account-status | billing | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Admin-only: inspect target account billing state. |
POST | /api/billing/admin/unlock-account | billing | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Admin-only: unlock/activate account billing bypass for a target account. |
POST | /api/billing/change-plan | billing | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Immediate proration plan change (upgrade or downgrade). Swaps the subscription item to the new price, prorated automatically. |
POST | /api/billing/create-checkout-session | billing | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Create a Stripe Checkout session with a free trial. |
POST | /api/billing/create-portal-session | billing | header:authorization, header:x-admin-key, header:x-organization-id | - | Create a Stripe Customer Portal session for self-service management. |
GET | /api/billing/plans | billing | - | - | Return the full plan catalog with feature matrix. |
GET | /api/billing/status | billing | header:authorization, header:x-admin-key, header:x-organization-id | - | Return subscription status, plan limits, and resource usage. |
GET | /api/brands | brands | query:start_date, query:end_date, query:compare_start, query:compare_end, query:model, query:country, header:authorization, header:x-admin-key, header:x-organization-id | - | Get all brands with computed visibility metrics for a specified date range. Parameters: - start_date / end_date: Primary period (defaults to last 30 days) - compare_start / compare_end: Comparison period for trend (defaults to previous 30 days) Metrics include: - Visibility: Percentage of prompts mentioning the brand - Average Position: Average position when mentioned - Trend: Period-over-period trend (up/down/stable) - Sentiment: Most common sentiment Brands are sorted with primary brand first, then by visibility descending. |
POST | /api/brands | brands | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a new brand and automatically sync mentions from all existing prompts. The system will: 1. Create the brand record 2. Scan all existing prompts for brand mentions 3. Create mention records with position and sentiment 4. Return the created brand with analytics Brand ID Format: - Lowercase, no spaces - Use hyphens for multi-word names - Example: "adobe-commerce", "shopify-plus" Brand Types: - primary: Your main brand (only one allowed) - competitor: Competitor brands |
GET | /api/brands/details | brands | header:authorization, header:x-admin-key, header:x-organization-id | - | Get comprehensive brand analytics with monthly breakdown. Includes: - Current month metrics (January 2026) - Monthly visibility trends (Sep 2025 - Jan 2026) - Top prompts where brand is mentioned - Total mentions across all time - Brand variations and search terms |
GET | /api/brands/suggested | brands | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
DELETE | /api/brands/{brand_id} | brands | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete a brand and all its mention records. Warning: This operation cannot be undone. Restrictions: - Cannot delete primary brand (type='primary') - All mention records will be permanently deleted |
PATCH | /api/brands/{brand_id} | brands | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/brands/{brand_id}/domains | brands | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get all domains registered for a brand. |
POST | /api/brands/{brand_id}/domains | brands | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Add a domain to a brand for citation matching. |
DELETE | /api/brands/{brand_id}/domains/{domain_id} | brands | path:brand_id!<string>, path:domain_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Remove a domain from a brand. |
GET | /api/brands/{brand_id}/link-destinations | brands | path:brand_id!<string>, query:start_date<string>, query:end_date<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get where traffic goes when a brand is mentioned. Shows breakdown of domains that get cited when AI mentions this brand. |
PUT | /api/brands/{brand_id}/set-primary | brands | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Sets the specified brand as the primary brand. Only one brand can be primary at a time. |
GET | /api/chats | chats | query:limit<integer>, query:offset<integer>, query:model, query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | List recent chats (prompts) for the org. Query params: limit, offset, model (filter by ai_model), brand_id (filter to prompts mentioning this brand). |
GET | /api/chats/{chat_id} | chats | path:chat_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Full chat detail with response text, brand mentions, and sources. |
GET | /api/citations | analytics | query:start_date<string>, query:end_date<string>, query:brand_id<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get aggregated citation statistics. Shows how often brands are mentioned vs directly linked. |
GET | /api/citations/mismatches | analytics | query:start_date<string>, query:end_date<string>, query:brand_id<string>, query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get detailed mismatch alerts. Shows prompts where a brand was mentioned but the links went to third-party sites. |
GET | /api/compare | analytics | query:start_a!<string>, query:end_a!<string>, query:start_b!<string>, query:end_b!<string>, query:brand_id, query:granularity<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Compare visibility metrics between two date periods side-by-side. Required Parameters: - start_a / end_a: Period A date range - start_b / end_b: Period B date range Optional Parameters: - brand_id: Brand to analyze (defaults to primary brand) - granularity: 'day', 'week', or 'month' for daily_data breakdown Returns: - Period A statistics - Period B statistics - Delta/change between periods - Daily data for each period (for charts) |
GET | /api/config | system | - | - | Get system configuration including available scrapers and proxies. Returns: - Available scraper types - Configured proxy countries - Default scraper selection This endpoint proxies the scraper service config endpoint. |
GET | /api/content-cms/articles | content-cms | header:authorization, header:x-admin-key, header:x-organization-id | - | List all articles for the current organization. |
POST | /api/content-cms/articles | content-cms | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a new content article. |
DELETE | /api/content-cms/articles/{article_id} | content-cms | path:article_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete an article. |
GET | /api/content-cms/articles/{article_id} | content-cms | path:article_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get a single article by ID. |
PUT | /api/content-cms/articles/{article_id} | content-cms | path:article_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Update an article's content or status. |
POST | /api/content-cms/articles/{article_id}/generate-draft | content-cms | path:article_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate a final draft from the content brief. |
GET | /api/content-cms/articles/{article_id}/workflow-status | content-cms | path:article_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get the current workflow progress for an article. |
GET | /api/content-cms/connectors/status | content-cms | - | - | Expose enabled publishing connectors and basic health flags. |
POST | /api/content-cms/generate-brief | content-cms | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create an article and start brief generation in the background. |
POST | /api/content-cms/publish | content-cms | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Publish an article to an external CMS connector. Supports WordPress today; other connectors return staged status. |
GET | /api/content-cms/publish/targets | content-cms | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/content-cms/templates | content-cms | - | - | Return available content generation templates. |
POST | /api/content/analyze | content-optimization | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Submit content for AEO analysis. Creates a ContentOptimization record with status=completed and mock analysis. |
GET | /api/content/optimizations | content-optimization | query:limit<integer>, query:offset<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | List past AEO analyses for the organization. |
DELETE | /api/content/optimizations/{optimization_id} | content-optimization | path:optimization_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete an AEO analysis record. |
GET | /api/content/optimizations/{optimization_id} | content-optimization | path:optimization_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get full analysis detail for a single optimization record. Returns the record with analysis_json and recommendations_json parsed. |
GET | /api/cost-estimate | analytics | query:prompts<integer>, query:countries<integer>, query:runs_per_prompt<integer>, query:scraper_type<string> | - | Estimate costs for running prompts with different configurations. Cost breakdown by provider: - VPN Direct: Free (after VPN subscription) - BrightData Residential: ~$0.004/req - BrightData Unlocker: ~$0.008/req - BrightData Browser: ~$0.025/req - Oxylabs Residential: ~$0.005/req - Oxylabs Mobile: ~$0.012/req - ScrapFly: ~$0.003/req - Scrape.do: ~$0.002/req - Zyte API: ~$0.004/req |
GET | /api/countries | dashboard-filters, dashboard-filters | header:authorization, header:x-admin-key, header:x-organization-id | - | List countries with prompt-template counts. |
PUT | /api/daily-quota | analytics | query:quota<integer> | - | Update the daily prompt quota. |
GET | /api/daily-stats | analytics | query:date<string> | - | Get statistics for today or a specific date. Includes: - Prompt counts (scheduled, completed, failed) - Jobs by scraper type - Cost breakdown by proxy layer - Performance metrics - Quota status |
GET | /api/docker/containers | system | - | - | List all running Docker containers with their status. |
GET | /api/docker/logs/{container} | system | path:container!<string>, query:lines<integer>, query:since<string> | - | Fetch logs from a Docker container. Useful for debugging and monitoring. |
POST | /api/embeddings/sync | - | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Backfill embeddings for existing prompts (requires PostgreSQL + pgvector). |
GET | /api/export/citations.csv | analytics | query:start_date, query:end_date, query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/export/{section}.csv | analytics | path:section!<string>, query:start_date, query:end_date, query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Generic CSV export endpoint for analytics sections. Supported sections: - citations: domain-level citation breakdown with authority score |
POST | /api/geo/competitor-gaps | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate competitor gaps section. Returns cached version unless force_refresh=True. |
POST | /api/geo/content-opportunities | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate content opportunities section. Returns cached version unless force_refresh=True. |
POST | /api/geo/outreach-targets | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate outreach targets section. Returns cached version unless force_refresh=True. |
POST | /api/geo/quick-wins | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate quick wins section. Returns cached version unless force_refresh=True. |
POST | /api/geo/recommendations | recommendations | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate AI-powered GEO recommendations using Gemini. Returns existing recommendations if available, or generates new ones. |
GET | /api/geo/recommendations/{brand_id} | recommendations | path:brand_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get existing recommendations for a brand. |
PATCH | /api/geo/recommendations/{recommendation_id}/status | recommendations | path:recommendation_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Update a recommendation's status (for Kanban drag-and-drop). |
POST | /api/geo/strategic-summary | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate strategic summary section. Returns cached version unless force_refresh=True. |
POST | /api/geo/technical-checklist | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | Generate technical GEO checklist section. Returns cached version unless force_refresh=True. |
GET | /api/health | health | - | - | Check if the backend API service is running and healthy. |
GET | /api/integrations | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/integrations | settings | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
GET | /api/integrations/catalog | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
DELETE | /api/integrations/{integration_id} | settings | path:integration_id!<integer>, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
POST | /api/integrations/{integration_id}/test | settings | path:integration_id!<integer>, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
GET | /api/job-history | analytics | query:limit<integer>, query:status<string>, query:scraper_type<string>, query:country<string> | - | Get recent job history with timing and performance data. |
GET | /api/jobs | jobs | query:status, query:limit<integer>, query:exclude_templates<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | - | List all scraping jobs with optional status filter. Status Values: - pending: Job is queued but not started - running: Job is currently executing - completed: Job finished successfully - failed: Job encountered an error - scheduled: Recurring job waiting for next run Query Parameters: - status: Filter jobs by status (optional) Returns list of jobs with: - Job ID, query, status, country - Scraper type, frequency (if scheduled) - Creation time, next run time (if scheduled) |
POST | /api/jobs/scrape | jobs | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a new scraping job that executes immediately or on a schedule. ## Job Types ### One-time Job - Set frequency to null or omit it - Executes immediately - Returns job_id and prompt_id when complete ### Scheduled Job - Set frequency to daily, weekly, or hourly - Optionally set start_date (defaults to now) - Returns job_id and next_run_at - Scheduler automatically creates new runs ## Scraper Types - google_ai: Google AI Overview (default) - perplexity: Perplexity AI - brightdata: BrightData residential proxy ## Proxy Options - Datacenter VPN: Standard VPN proxy (use_residential_proxy=false) - Residential Proxy: Residential IP proxy (use_residential_proxy=true, requires sidecar) ## Anti-Detection Configure browser fingerprinting via device_type, os_type, browser_type, and human_behavior settings. |
GET | /api/jobs/{job_id} | jobs | path:job_id!<integer> | - | Get detailed information about a specific scrape job including HTML snapshot. |
GET | /api/jobs/{job_id}/details | jobs | path:job_id!<integer> | - | Get comprehensive job details including config, logs, screenshots, and error info. |
GET | /api/jobs/{job_id}/html | jobs | path:job_id!<integer> | - | Get the raw HTML content captured during the scrape. |
GET | /api/knowledge-bases | knowledge-bases | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/knowledge-bases | knowledge-bases | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/knowledge-bases/status | knowledge-bases | header:authorization, header:x-admin-key, header:x-organization-id | - | Operational status for KB integrations and runtime providers. |
DELETE | /api/knowledge-bases/{kb_id} | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PATCH | /api/knowledge-bases/{kb_id} | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/knowledge-bases/{kb_id}/documents | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
DELETE | /api/knowledge-bases/{kb_id}/documents/{document_id} | knowledge-bases | path:kb_id!<integer>, path:document_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete a document and its chunks from a knowledge base. |
POST | /api/knowledge-bases/{kb_id}/documents/{document_id}/reindex | knowledge-bases | path:kb_id!<integer>, path:document_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Queue re-indexing for a document. |
POST | /api/knowledge-bases/{kb_id}/import-url | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/knowledge-bases/{kb_id}/search | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/knowledge-bases/{kb_id}/upload | knowledge-bases | path:kb_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | multipart/form-data | - |
GET | /api/metrics | analytics | query:start_date, query:end_date, query:compare_start, query:compare_end, query:model, query:country, header:authorization, header:x-admin-key, header:x-organization-id | - | Get dashboard KPIs with period-over-period changes. Supports dynamic date ranges via query parameters: - start_date / end_date: Define the primary period (defaults to last 30 days) - compare_start / compare_end: Define comparison period (defaults to previous 30 days) Metrics include: - Visibility: Primary brand visibility percentage - Total Prompts: Total unique queries tracked - Total Sources: Total source citations - Average Position: Average position when mentioned |
GET | /api/models | dashboard-filters, dashboard-filters | header:authorization, header:x-admin-key, header:x-organization-id | - | List distinct AI model values from scrape results. |
POST | /api/onboarding/account-type | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Step 1: Save account type and brand details. |
POST | /api/onboarding/admin/account-status | onboarding | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/onboarding/admin/sync-account | onboarding | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/onboarding/admin/unlock-account | onboarding | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/onboarding/agency-waitlist | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Save agency interest and mark user as waitlisted. The user picks "agency" on step 1, fills in agency name / URL, and we record them but don't advance through the wizard. |
POST | /api/onboarding/complete | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Finalize onboarding: create the Brand and PromptTemplate records, then mark user as onboarded. |
POST | /api/onboarding/discover-competitors | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Discover competitors using Gemini + Google Search grounding. Called in parallel after Step 1 to provide context for topic/prompt selection. Results are stored in UserOnboarding for use during onboarding completion (auto-creating competitor Brand records). |
POST | /api/onboarding/generate-prompts | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Generate AI-powered prompts using Gemini with Google Search grounding. Falls back to static templates on any failure. The prompts are generated in the appropriate language based on the user's selected location (e.g., Italy -> Italian, Germany -> German). |
GET | /api/onboarding/prompts | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Step 3: Return generated prompts for selected topics (5 per topic, 3 pre-selected). |
POST | /api/onboarding/prompts | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Step 3: Save selected prompts. |
GET | /api/onboarding/status | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Return the current onboarding state for the authenticated user. |
GET | /api/onboarding/topics | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | - | Return the available topic categories for step 2. |
POST | /api/onboarding/topics | onboarding | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Step 2: Save selected topics. |
GET | /api/personas | dashboard-filters, personas | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/personas | dashboard-filters, personas | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
DELETE | /api/personas/{persona_id} | dashboard-filters, personas | path:persona_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/personas/{persona_id} | dashboard-filters, personas | path:persona_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/personas/{persona_id} | dashboard-filters, personas | path:persona_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/prompt-templates | prompt-management | query:topic_id, query:tag_id, query:state, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/prompt-templates | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
DELETE | /api/prompt-templates/{template_id} | prompt-management | path:template_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/prompt-templates/{template_id} | prompt-management | path:template_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/prompt-templates/{template_id}/accept | prompt-management | path:template_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/prompt-templates/{template_id}/reject | prompt-management | path:template_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/prompt-volumes | prompt-volumes | query:start_date, query:end_date, query:platform, query:persona_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Return per-day prompt volume rows and totals. |
GET | /api/prompts | prompts | query:start_date, query:end_date, query:model, header:authorization, header:x-admin-key, header:x-organization-id | - | Get all unique queries with aggregated statistics across all runs. For each query, returns: - Average visibility across all runs - Average position across all runs - Total number of runs - Aggregated brand mentions (mentioned if mentioned in ANY run) Results are grouped by query, with metrics averaged across all runs. |
POST | /api/prompts/batch | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/prompts/estimate-volume | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/prompts/suggest | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
POST | /api/prompts/upload-csv | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | multipart/form-data | - |
GET | /api/prompts/{query_id} | prompts | path:query_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | Get detailed information for a specific prompt query with all runs. Query ID Format: - Use format: query-1, query-2, etc. - Number corresponds to order from list prompts endpoint - Example: First query = query-1, second = query-2 Returns: - Query text - Aggregated metrics across all runs - Individual run details with sources and brand mentions - Full response text for each run |
GET | /api/prompts/{query_id}/analysis | prompts | path:query_id!<string>, query:start_date, query:end_date, query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Full prompt analysis view used by the Answer Engine Insights Prompts tab. Includes: - Prompt-level metrics (visibility, average position, citation shares) - Daily trend points - Citation share by platform - Full execution rows (response, mentions, citations, search fanouts, platform, region) |
GET | /api/prompts/{query_id}/history | prompts | path:query_id!<string>, query:start_date, query:end_date, query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Get detailed run history for a specific prompt query within a date range. Parameters: - query_id: Query ID (e.g., "query-1") or URL-encoded query text - start_date / end_date: Date range to filter runs - brand_id: Optional brand to focus on (defaults to primary brand) Returns: - All runs within the date range - Daily aggregated statistics - Per-brand visibility summary |
GET | /api/proxy-providers | system | - | - | Returns every registered proxy provider with configuration status, cost, success rate, and whether credentials are set. |
GET | /api/reference | documentation | - | - | Complete API reference with all options and examples. |
POST | /api/schedule-batch | scheduling | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Schedule a batch of prompts from templates across multiple countries. Optimizes scheduling to: - Spread jobs throughout the day - Respect daily quota - Balance across countries - Minimize costs For 100 prompts/day across 3 countries with 3 runs each: - 100 prompts ÷ 3 countries = ~33 prompts per country - 33 prompts × 3 runs = ~11 unique queries per country |
GET | /api/scheduled-jobs | jobs | header:authorization, header:x-admin-key, header:x-organization-id | - | List all active scheduled jobs that will run periodically. Supported Frequencies: - hourly: Every hour - 2_per_day: Every 12 hours - 1_per_day / daily: Every 24 hours - 2_per_week: Every 3.5 days - weekly: Every 7 days - monthly: Every 30 days |
DELETE | /api/scheduled-jobs/{job_id} | jobs | path:job_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Delete a recurring job. This will stop all future runs. |
GET | /api/scheduled-jobs/{job_id} | jobs | path:job_id!<integer> | - | Get details of a specific scheduled job. |
PUT | /api/scheduled-jobs/{job_id}/pause | jobs | path:job_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Pause a recurring job. It will not run until resumed. |
PUT | /api/scheduled-jobs/{job_id}/resume | jobs | path:job_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Resume a paused recurring job. |
GET | /api/scheduler-status | system | - | - | Check if the background scheduler is running and view upcoming jobs. |
GET | /api/screenshots | system | query:job_id<integer>, query:limit<integer> | - | List all available screenshots with metadata. |
GET | /api/screenshots/{filename} | system | path:filename!<string> | - | Serve a screenshot file by filename. |
GET | /api/settings | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/settings | settings | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/settings/export | settings | header:x-admin-key, header:authorization, header:x-organization-id | - | Export a lightweight workspace snapshot for operator use. |
POST | /api/settings/ga/connect | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Save GA4 property ID and service account credentials. Validates the connection before persisting. |
POST | /api/settings/ga/deep-analysis | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Trigger a deep competitor analysis using GA data + Gemini. Runs as a background task so the response returns immediately. Auto-creates competitor Brand records and suggested prompt templates. |
POST | /api/settings/ga/disconnect | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Deactivate the GA connection (credentials are retained but marked inactive). |
GET | /api/settings/ga/oauth/callback | google-analytics | query:code, query:state | - | - |
POST | /api/settings/ga/oauth/connect | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/settings/ga/oauth/properties | google-analytics | query:token_id!<string>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/settings/ga/oauth/start | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/settings/ga/status | google-analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Return the current GA connection status for the organization. |
GET | /api/settings/ga/summary | google-analytics | query:days<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Quick traffic summary from GA4 — top sources, pages, countries, referrals. Used by the dashboard and the enriched generation pipeline. |
GET | /api/settings/metric-formulas | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/settings/metric-formulas/{metric_key} | settings | path:metric_key!<string>, header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/settings/request-account-deletion | settings | header:x-admin-key, header:authorization, header:x-organization-id | application/json | Record deletion request in audit trail for support/compliance handling. |
GET | /api/settings/support-ticket-instructions | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/settings/support-tickets | settings | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/settings/support-tickets | settings | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/sources | sources | header:authorization, header:x-admin-key, header:x-organization-id | - | Get all citation sources with usage metrics. Metrics include: - Usage: Percentage of unique queries citing this source - Average Citations: Average citation position across all prompts Results are sorted by usage percentage descending. |
GET | /api/sources/analytics | sources | query:start_date, query:end_date, query:brand_id, header:authorization, header:x-admin-key, header:x-organization-id | - | Get comprehensive analytics for citation sources. Includes: - Summary: Total sources, domains, citations, averages - Domain Breakdown: Top 20 domains by citation count - Source Types: Breakdown by type (blog, news, community, review, brand, other) - Top Sources: Top 50 sources by citation count with example prompts Source types are automatically classified based on domain patterns. |
POST | /api/sources/classify | source-analysis | header:authorization, header:x-admin-key, header:x-organization-id | - | Auto-classify unclassified sources for the org. For each Source where domain_type is None (and cited by org prompts), apply heuristic classification for domain_type and url_type. |
GET | /api/sources/domains | source-analysis | query:domain_type, header:authorization, header:x-admin-key, header:x-organization-id | - | Domain-level analytics. Group sources by domain, compute total citations, used_percentage (citations / total prompts * 100), include domain_type. |
GET | /api/sources/gap-analysis | source-analysis | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | Gap analysis scoring. For each source, compute gap_score as: competitor_mentions / max(1, your_mentions) normalized to 0-1. your_mentions = primary brand mentions, competitor_mentions = competitor brand mentions. Update gap_score in DB and return sorted by gap_score desc. |
GET | /api/sources/urls | source-analysis | query:url_type, header:authorization, header:x-admin-key, header:x-organization-id | - | URL-level analytics. List sources with url_type, citation_count, brands_mentioned (from PromptBrandMention via shared Prompt). |
GET | /api/stats/database | system | header:authorization, header:x-admin-key, header:x-organization-id | - | Get comprehensive statistics about jobs, prompts, and sources in the database. |
GET | /api/suggestions | analytics | header:authorization, header:x-admin-key, header:x-organization-id | - | Get AI-powered SEO improvement suggestions based on source data analysis. Analyzes citation sources to provide actionable recommendations: - Content strategy (blog posts, guides) - Community engagement (Reddit, forums) - PR and authority building (news sites) - Technical optimization (comparison pages) - Review collection (G2, Capterra) Includes overall AI SEO score and prioritized suggestions with examples. |
POST | /api/suggestions/generate | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Generate AI-powered SEO suggestions using RAG and LLM. 1. Checks for cached suggestions (unless force_refresh=True) 2. Uses pgvector for semantic similarity search (if available) 3. Calls Claude/GPT with structured output for recommendations 4. Caches the result for future requests |
POST | /api/suggestions/generate/v2 | - | query:brand_id, query:force_refresh<boolean>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Generate V2 AI-powered SEO suggestions for professional dashboard. |
GET | /api/suggestions/status | - | header:authorization, header:x-admin-key, header:x-organization-id | - | Get status of AI suggestions feature. |
GET | /api/support/ticket-instructions | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
GET | /api/support/tickets | settings | query:limit<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/support/tickets | settings | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/tags | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/tags | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
DELETE | /api/tags/{tag_id} | prompt-management | path:tag_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/tags/{tag_id} | prompt-management | path:tag_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/templates | scheduling | query:active_only<boolean>, header:x-organization-id, header:x-admin-key, header:authorization | - | Get all prompt templates with routing information. Each template shows: - Which countries the query will run in - The VPN container used for each country - Estimated daily jobs and costs |
POST | /api/templates | scheduling | header:authorization, header:x-admin-key, header:x-organization-id | application/json | Create a reusable prompt template for scheduled scraping. ## How Country Routing Works Each query is executed separately in EACH specified country: Template: "best seo tools" with countries="it,ch,uk" Creates 3 jobs: 1. Job IT: Client → VPN-IT (Italy IP) → Layer2 → Google 2. Job CH: Client → VPN-CH (Swiss IP) → Layer2 → Google 3. Job UK: Client → VPN-UK (UK IP) → Layer2 → Google ## Tracking Each job tracks: - country: Target country code - origin_ip: Actual IP used (verified) - origin_country: Actual country of IP - origin_verified: True if IP matches target country - layer2_mode: Which proxy layer was used - duration_seconds: Execution time - estimated_cost_usd: Cost estimate ## Example Request json { "name": "SEO Competition", "query": "best e-commerce platform comparison", "countries": "it,ch,uk", "scraper_type": "google_ai", "frequency": "1_per_day", "preferred_layer2": "unlocker" } This creates a template that will: - Run the query once per day - Execute in Italy, Switzerland, and UK (3 jobs) - Use Web Unlocker for reliable Google scraping - Track origin IPs to verify geo-targeting |
DELETE | /api/templates/{template_id} | scheduling | path:template_id!<integer>, header:x-organization-id, header:x-admin-key, header:authorization | - | Delete a template. This will NOT delete any scheduled jobs created from this template. |
GET | /api/templates/{template_id} | scheduling | path:template_id!<integer>, header:x-organization-id, header:x-admin-key, header:authorization | - | Get a single template by its ID with full details. |
PUT | /api/templates/{template_id} | scheduling | path:template_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | Update an existing template. Only provided fields will be updated. |
GET | /api/topics | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/topics | prompt-management | header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
DELETE | /api/topics/{topic_id} | prompt-management | path:topic_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | - | - |
PUT | /api/topics/{topic_id} | prompt-management | path:topic_id!<integer>, header:authorization, header:x-admin-key, header:x-organization-id | application/json | - |
GET | /api/visibility | analytics | query:start_date, query:end_date, query:granularity<string>, query:model, query:country, header:authorization, header:x-admin-key, header:x-organization-id | - | Get visibility data for charts with flexible date ranges. Parameters: - start_date / end_date: Date range (defaults to last 90 days) - granularity: 'day', 'week', or 'month' (default: 'month') Returns visibility percentages for each brand aggregated by the specified granularity. |
GET | /api/vpn/ip/{country} | vpn | path:country!<string> | - | Get the current public IP address of a VPN container. |
POST | /api/vpn/rotate/{country} | vpn | path:country!<string> | - | Trigger IP rotation for a VPN container by restarting it. |
GET | /api/vpn/servers | system | - | - | Fetch available ProtonVPN servers from the official Gluetun repository. Returns: - VPN provider name - List of available countries - Total server count - Active proxy countries configured in this system Used to see which VPN locations are available for scraping. |
GET | /api/vpn/status | vpn | - | - | Get status of all VPN containers including health and uptime. |
GET | /api/webhooks | settings | header:authorization, header:x-admin-key, header:x-organization-id | - | - |
POST | /api/webhooks | settings | header:x-admin-key, header:authorization, header:x-organization-id | application/json | - |
POST | /api/webhooks/clerk | webhooks | - | - | Handle Clerk webhook events. This endpoint receives events from Clerk when users, organizations, or memberships are created, updated, or deleted. |
POST | /api/webhooks/stripe | webhooks | - | - | Handle Stripe webhook events for the full subscription lifecycle: - checkout.session.completed - customer.subscription.created - customer.subscription.updated - customer.subscription.deleted - customer.subscription.trial_will_end - invoice.payment_succeeded - invoice.payment_failed - invoice.finalization_failed |
DELETE | /api/webhooks/{webhook_id} | settings | path:webhook_id!<integer>, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
PATCH | /api/webhooks/{webhook_id}/toggle | settings | path:webhook_id!<integer>, header:x-admin-key, header:authorization, header:x-organization-id | - | - |
POST | /api/xyops/control/dispatch-due | xyops | header:X-XYOPS-API-Key | application/json | Trigger all due recurring scrape templates. Intended for xyOps HTTP Request events/workflows. |
POST | /api/xyops/control/run-job/{job_id} | xyops | path:job_id!<integer>, header:X-XYOPS-API-Key | - | Run a one-time job immediately, or dispatch a recurring template as a new run. |
GET | /api/xyops/control/status | xyops | header:X-XYOPS-API-Key | - | Returns scheduler control mode, due recurring job counts, and last-hour execution signal for xyOps orchestration. |
GET | /api/xyops/control/templates | xyops | header:X-XYOPS-API-Key | - | Returns production-ready event templates for recurring scrape dispatch and health checks. |
GET | /v1/brands | customer-api | header:X-API-Key!<string> | - | List brands for the organization. |
GET | /v1/chats | customer-api | query:limit<integer>, query:offset<integer>, header:X-API-Key!<string> | - | List recent prompts (chats). |
GET | /v1/chats/{chat_id} | customer-api | path:chat_id!<integer>, header:X-API-Key!<string> | - | Chat detail with response_text. |
GET | /v1/models | customer-api | header:X-API-Key!<string> | - | List distinct ai_model values from Prompt table. |
GET | /v1/prompts | customer-api | header:X-API-Key!<string> | - | List prompt templates. |
POST | /v1/reports/brands | customer-api | header:X-API-Key!<string> | application/json | Brands report: aggregate brand mentions in date range. |
POST | /v1/reports/domains | customer-api | header:X-API-Key!<string> | application/json | Domains report: citation counts by domain in date range. |
GET | /v1/tags | customer-api | header:X-API-Key!<string> | - | List tags. |
GET | /v1/topics | customer-api | header:X-API-Key!<string> | - | List topics. |
Notes
Frontend Usageis derived from static analysis of imports and call-sites infrontend/src.- Missing usage may indicate admin/internal endpoints, dynamic runtime calls, or currently unused endpoints.
- Parameters marked with
!are required by OpenAPI.