curl --request GET \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"code": 200,
"router": "/api/v1/tiktok/analytics/detect_fake_views",
"params": {
"item_id": "7460937381265411370",
"content_category": "verified_large"
},
"data": {
"video_metrics": {
"total_views": 159414915,
"total_likes": 15817234,
"total_comments": 392493,
"total_favorites": 1051470,
"total_shares": 1312741,
"engagement_rates": {
"like_ratio": 0.09922,
"comment_ratio": 0.00246,
"favorite_ratio": 0.0066,
"share_ratio": 0.00823
}
},
"creator_metrics": {
"account_age_days": 3733.94,
"follower_count": 89827771,
"verified": true,
"trust_score": 100
},
"content_metrics": {
"content_type": "video",
"created_by_ai": false,
"high_quality_upload": true
},
"fake_view_analysis": {
"fake_score": 7.16,
"confidence_level": "Minimal",
"estimated_fake_views": 7970745,
"fake_view_percentage": 5,
"is_suspicious": false,
"main_detection_reason": "Statistical View Anomalies",
"component_scores": {
"engagement_score": 0,
"distribution_score": 10,
"consistency_score": 0,
"creator_credibility_score": 0,
"content_authenticity_score": 34,
"follower_correlation_score": 35,
"racing_mechanism_score": 0,
"fan_growth_score": 45
}
},
"traffic_pool": {
"current_tier": 8,
"current_tier_name": "8th-Level Traffic Pool",
"expected_tier": 8,
"expected_tier_name": "8th-Level Traffic Pool",
"current_views_range": "30M+",
"expected_views_range": "30M+",
"estimated_organic_views": 148000807
},
"suspicious_features": [
"Suspicious: Reached 100000 followers from 10000 in only 31 days",
"Suspicious: Account gaining 24063 followers per day on average"
],
"recommendations": {
"action": "no_action",
"risk_level": "low",
"potential_revenue_impact": "minimal",
"suggested_steps": [
"No immediate action required",
"Include in routine monitoring"
]
},
"mcn_report": {
"summary": {
"estimated_revenue_impact": 7970.745,
"recommended_actions": "No immediate action required"
},
"business_impact": {
"revenue_impact": {
"level": "low",
"estimated_amount": 7970.745
},
"brand_safety_impact": {
"level": "minimal"
},
"platform_relationship": {
"status": "good"
}
}
}
}
}Detect fake views in video
Detect fake views in video
curl --request GET \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"code": 200,
"router": "/api/v1/tiktok/analytics/detect_fake_views",
"params": {
"item_id": "7460937381265411370",
"content_category": "verified_large"
},
"data": {
"video_metrics": {
"total_views": 159414915,
"total_likes": 15817234,
"total_comments": 392493,
"total_favorites": 1051470,
"total_shares": 1312741,
"engagement_rates": {
"like_ratio": 0.09922,
"comment_ratio": 0.00246,
"favorite_ratio": 0.0066,
"share_ratio": 0.00823
}
},
"creator_metrics": {
"account_age_days": 3733.94,
"follower_count": 89827771,
"verified": true,
"trust_score": 100
},
"content_metrics": {
"content_type": "video",
"created_by_ai": false,
"high_quality_upload": true
},
"fake_view_analysis": {
"fake_score": 7.16,
"confidence_level": "Minimal",
"estimated_fake_views": 7970745,
"fake_view_percentage": 5,
"is_suspicious": false,
"main_detection_reason": "Statistical View Anomalies",
"component_scores": {
"engagement_score": 0,
"distribution_score": 10,
"consistency_score": 0,
"creator_credibility_score": 0,
"content_authenticity_score": 34,
"follower_correlation_score": 35,
"racing_mechanism_score": 0,
"fan_growth_score": 45
}
},
"traffic_pool": {
"current_tier": 8,
"current_tier_name": "8th-Level Traffic Pool",
"expected_tier": 8,
"expected_tier_name": "8th-Level Traffic Pool",
"current_views_range": "30M+",
"expected_views_range": "30M+",
"estimated_organic_views": 148000807
},
"suspicious_features": [
"Suspicious: Reached 100000 followers from 10000 in only 31 days",
"Suspicious: Account gaining 24063 followers per day on average"
],
"recommendations": {
"action": "no_action",
"risk_level": "low",
"potential_revenue_impact": "minimal",
"suggested_steps": [
"No immediate action required",
"Include in routine monitoring"
]
},
"mcn_report": {
"summary": {
"estimated_revenue_impact": 7970.745,
"recommended_actions": "No immediate action required"
},
"business_impact": {
"revenue_impact": {
"level": "low",
"estimated_amount": 7970.745
},
"brand_safety_impact": {
"level": "minimal"
},
"platform_relationship": {
"status": "good"
}
}
}
}
}code is 200.
Example
curl "https://api.aisa.one/apis/v1/tikhub/tiktok/analytics/detect_fake_views?item_id=7460937381265411370" \
-H "Authorization: Bearer YOUR_API_KEY"
Authorizations
AIsa API key. Get yours at https://aisa.one
Query Parameters
Video ID, required parameter, can be extracted from video URL (e.g., 7460937381265411370 from https://www.tiktok.com/@tiktok/video/7460937381265411370)
Content category, optional parameter, affects engagement rate benchmarks, options include:
- default: Default category for general content
- entertainment: Entertainment content, expected to have higher engagement
- education: Educational content, expected to have moderate engagement and higher save rates
- product: Product content, expected to have lower engagement but higher conversion
- verified_large: Large verified accounts, expected to have appropriately lower engagement rates
Response
Successful response. The outer object follows ResponseModel; the endpoint-specific payload is in data.
Return Description
-
video_metrics: Core video metricstotal_views: Total number of viewstotal_likes: Total number of likestotal_comments: Total number of commentstotal_favorites: Total number of savestotal_shares: Total number of sharesengagement_rates: Engagement rate metrics, higher is betterlike_ratio: Like rate, normal range 1-10%, may be lower for large accountscomment_ratio: Comment rate, normal range 0.1-0.5%, excellent if above 1%favorite_ratio: Save rate, normal range 0.05-0.8%share_ratio: Share rate, normal range 0.05-0.5%, excellent if above 1%
-
creator_metrics: Creator account health indicatorsaccount_age_days: Account age in days, longer is more crediblefollower_count: Number of followers, affects expected view countverified: Whether account is verified, verified accounts have higher credibilitytrust_score: Account trust score (0-100), higher is more trustworthy
-
content_metrics: Content quality indicatorscontent_type: Content type (video, image, etc.)created_by_ai: Whether AI-generated, AI-generated content may have specific traffic patternshigh_quality_upload: Whether high-quality upload, high-quality uploads are more credible
-
fake_view_analysis: Comprehensive fake traffic analysisfake_score: Fake view score (0-100), lower is better:- 0-20: Very low risk, natural traffic patterns
- 20-40: Low risk, may have minor anomalies but not problematic
- 40-60: Medium risk, anomalies worth attention
- 60-80: High risk, obvious fake traffic characteristics
- 80-100: Very high risk, almost certainly fake traffic
confidence_level: Risk level, categorized as "Minimal", "Low", "Medium", "High"estimated_fake_views: Estimated fake views, calculated based on fake traffic modelfake_view_percentage: Fake view percentage, proportion of fake views to total viewsis_suspicious: Whether suspicious, comprehensive judgment if attention is neededmain_detection_reason: Main detection reason, most significant anomaly featurecomponent_scores: Dimensional anomaly scores, each 0-100, lower is better:engagement_score: Engagement anomaly scoredistribution_score: Distribution anomaly scoreconsistency_score: Consistency anomaly scorecreator_credibility_score: Creator credibility anomaly scorecontent_authenticity_score: Content authenticity anomaly scorefollower_correlation_score: Follower correlation anomaly scoreracing_mechanism_score: Racing mechanism anomaly scorefan_growth_score: Fan growth anomaly score
-
traffic_pool: Traffic pool analysis (TikTok racing mechanism)current_tier: Current traffic pool level (1-8), higher means more trafficcurrent_tier_name: Current traffic pool nameexpected_tier: Expected traffic pool level, based on organic traffic predictionexpected_tier_name: Expected traffic pool namecurrent_views_range: Current traffic pool expected view rangeexpected_views_range: Expected traffic pool view rangeestimated_organic_views: Estimated organic views, real views after deducting fake ones
-
suspicious_features: List of suspicious features, specific detected anomalies -
recommendations: Recommended actionsaction: Recommended action type, possible values include:no_action: No action needed, healthy contentmonitor: Continuous monitoring, minor anomalies presentscheduled_review: Schedule review, anomalies worth attentionimmediate_review: Immediate review, serious anomalies present
risk_level: Risk level ("low", "medium", "high", "critical")potential_revenue_impact: Potential revenue impactsuggested_steps: Suggested steps, specific action recommendations
-
mcn_report: (Optional) MCN business impact analysis report, applicable for business accountssummary: Summary informationbusiness_impact: Business impact assessmentrevenue_impact: Revenue impact assessmentbrand_safety_impact: Brand safety impactplatform_relationship: Platform relationship impactcontract_impact: Contract impact assessment
recommended_actions: Recommended action listhistorical_context: Historical background data
The media-type example is an illustrative response from the official documentation, not a live response. Its router and params metadata use upstream naming.
HTTP status code
Unique request identifier
Response message (EN-US)
Response message (ZH-CN)
Support message
The time the response was generated
The timestamp the response was generated
The timezone of the response time
Link to the API Swagger documentation for this endpoint
Cache message (EN-US)
Cache message (ZH-CN)
The URL to access the cached result
The endpoint that generated this response
The parameters used in the request
Endpoint-specific response payload. The official shared model does not declare a fixed type or field set. Use the operation's documented return fields or response example; an operation-specific schema, when present, describes the documented fields. Undocumented fields must be read from the actual response rather than assumed.