curl -X GET "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8" \
-H "x-api-key: your_api_key_here"
const response = await fetch('https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8', {
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.topVideos[0]?.title);
import requests
response = requests.get(
'https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8',
headers={'x-api-key': 'your_api_key_here'}
)
account = response.json()['data']
print(account['keywordsStatus'], len(account['topVideos']))
{
"success": true,
"data": {
"id": "cm7g8h9i0j1k2l3m4n5o6p7q8",
"username": "fitnessguru",
"platform": "tiktok",
"displayName": "Fitness Guru",
"bio": "Helping you get fit one video at a time",
"avatarUrl": "https://p16-sign.tiktokcdn.com/...",
"isVerified": true,
"stats": { "followers": 1500000, "following": 250, "videos": 342, "likes": 45000000 },
"analytics": {
"engagementRate": 12.5,
"viralityScore": 78.3,
"avgViews": 890000,
"shareRate": 2.3,
"saveRate": 4.1
},
"topHashtags": [
{
"hashtag": "#fitness",
"name": "fitness",
"count": 48,
"videoCount": 48,
"totalViews": 21000000,
"avgViews": 437500,
"engagementRate": 11.2,
"trending": false,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"topMusic": [
{
"title": "original sound",
"artist": "fitnessguru",
"count": 30,
"videoCount": 30,
"totalViews": 9000000,
"avgViews": 300000,
"duration": 45,
"genre": null,
"isOriginal": true,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"keywords": [
{
"keyword": "ab workout",
"videoCount": 12,
"totalViews": 8000000,
"avgViews": 666666,
"engagementRate": 13.1,
"sentiment": "positive",
"category": "fitness",
"trending": true,
"performance": "high",
"recommendation": "Keep short ab routines in the rotation"
}
],
"keywordsStatus": "completed",
"audience": null,
"postingTimes": [
{ "dayOfWeek": 1, "hour": 18, "avgViews": 950000, "avgEngagement": 13.4, "videoCount": 9, "rank": 1, "score": 0.92 }
],
"topVideos": [
{
"id": "cm8h9i0j1k2l3m4n5o6p7q8r9",
"externalId": "7234567890123456789",
"title": "5 minute ab workout",
"thumbnailUrl": "https://p16-sign.tiktokcdn.com/...",
"views": 5400000,
"likes": 890000,
"viralScore": 92.5,
"publishedAt": "2026-09-15T10:30:00.000Z"
}
],
"lastAnalyzed": "2026-10-01T10:30:00.000Z",
"createdAt": "2026-10-01T10:30:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
Account Analysis
Account Details
Get everything saved about an analyzed account, including its top videos
GET
/
v1
/
social
/
account
/
{accountId}
curl -X GET "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8" \
-H "x-api-key: your_api_key_here"
const response = await fetch('https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8', {
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.topVideos[0]?.title);
import requests
response = requests.get(
'https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8',
headers={'x-api-key': 'your_api_key_here'}
)
account = response.json()['data']
print(account['keywordsStatus'], len(account['topVideos']))
{
"success": true,
"data": {
"id": "cm7g8h9i0j1k2l3m4n5o6p7q8",
"username": "fitnessguru",
"platform": "tiktok",
"displayName": "Fitness Guru",
"bio": "Helping you get fit one video at a time",
"avatarUrl": "https://p16-sign.tiktokcdn.com/...",
"isVerified": true,
"stats": { "followers": 1500000, "following": 250, "videos": 342, "likes": 45000000 },
"analytics": {
"engagementRate": 12.5,
"viralityScore": 78.3,
"avgViews": 890000,
"shareRate": 2.3,
"saveRate": 4.1
},
"topHashtags": [
{
"hashtag": "#fitness",
"name": "fitness",
"count": 48,
"videoCount": 48,
"totalViews": 21000000,
"avgViews": 437500,
"engagementRate": 11.2,
"trending": false,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"topMusic": [
{
"title": "original sound",
"artist": "fitnessguru",
"count": 30,
"videoCount": 30,
"totalViews": 9000000,
"avgViews": 300000,
"duration": 45,
"genre": null,
"isOriginal": true,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"keywords": [
{
"keyword": "ab workout",
"videoCount": 12,
"totalViews": 8000000,
"avgViews": 666666,
"engagementRate": 13.1,
"sentiment": "positive",
"category": "fitness",
"trending": true,
"performance": "high",
"recommendation": "Keep short ab routines in the rotation"
}
],
"keywordsStatus": "completed",
"audience": null,
"postingTimes": [
{ "dayOfWeek": 1, "hour": 18, "avgViews": 950000, "avgEngagement": 13.4, "videoCount": 9, "rank": 1, "score": 0.92 }
],
"topVideos": [
{
"id": "cm8h9i0j1k2l3m4n5o6p7q8r9",
"externalId": "7234567890123456789",
"title": "5 minute ab workout",
"thumbnailUrl": "https://p16-sign.tiktokcdn.com/...",
"views": 5400000,
"likes": 890000,
"viralScore": 92.5,
"publishedAt": "2026-09-15T10:30:00.000Z"
}
],
"lastAnalyzed": "2026-10-01T10:30:00.000Z",
"createdAt": "2026-10-01T10:30:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
Overview
Returns the full saved analysis of one account: profile, stats, analytics, hashtags, music, keywords, audience, best posting times and its 20 best videos by viral score. It reads saved data and costs nothing; use Refresh Account to update it.curl -X GET "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8" \
-H "x-api-key: your_api_key_here"
const response = await fetch('https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8', {
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.topVideos[0]?.title);
import requests
response = requests.get(
'https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8',
headers={'x-api-key': 'your_api_key_here'}
)
account = response.json()['data']
print(account['keywordsStatus'], len(account['topVideos']))
{
"success": true,
"data": {
"id": "cm7g8h9i0j1k2l3m4n5o6p7q8",
"username": "fitnessguru",
"platform": "tiktok",
"displayName": "Fitness Guru",
"bio": "Helping you get fit one video at a time",
"avatarUrl": "https://p16-sign.tiktokcdn.com/...",
"isVerified": true,
"stats": { "followers": 1500000, "following": 250, "videos": 342, "likes": 45000000 },
"analytics": {
"engagementRate": 12.5,
"viralityScore": 78.3,
"avgViews": 890000,
"shareRate": 2.3,
"saveRate": 4.1
},
"topHashtags": [
{
"hashtag": "#fitness",
"name": "fitness",
"count": 48,
"videoCount": 48,
"totalViews": 21000000,
"avgViews": 437500,
"engagementRate": 11.2,
"trending": false,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"topMusic": [
{
"title": "original sound",
"artist": "fitnessguru",
"count": 30,
"videoCount": 30,
"totalViews": 9000000,
"avgViews": 300000,
"duration": 45,
"genre": null,
"isOriginal": true,
"lastUsed": "2026-09-28T18:00:00.000Z"
}
],
"keywords": [
{
"keyword": "ab workout",
"videoCount": 12,
"totalViews": 8000000,
"avgViews": 666666,
"engagementRate": 13.1,
"sentiment": "positive",
"category": "fitness",
"trending": true,
"performance": "high",
"recommendation": "Keep short ab routines in the rotation"
}
],
"keywordsStatus": "completed",
"audience": null,
"postingTimes": [
{ "dayOfWeek": 1, "hour": 18, "avgViews": 950000, "avgEngagement": 13.4, "videoCount": 9, "rank": 1, "score": 0.92 }
],
"topVideos": [
{
"id": "cm8h9i0j1k2l3m4n5o6p7q8r9",
"externalId": "7234567890123456789",
"title": "5 minute ab workout",
"thumbnailUrl": "https://p16-sign.tiktokcdn.com/...",
"views": 5400000,
"likes": 890000,
"viralScore": 92.5,
"publishedAt": "2026-09-15T10:30:00.000Z"
}
],
"lastAnalyzed": "2026-10-01T10:30:00.000Z",
"createdAt": "2026-10-01T10:30:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
Errors
| Status | When |
|---|---|
| 401 | Missing or invalid API key (code: "not_authenticated") |
| 403 | Your team does not have the Hooked app product (code: "entitlement_required") |
| 404 | No account with that id (code: "not_found"). An id that belongs to another team answers the same way |
| 500 | { "success": false, "message": "Failed to fetch account", "error": "..." } |