curl -X POST "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8/refresh" \
-H "x-api-key: your_api_key_here"
const accountId = 'cm7g8h9i0j1k2l3m4n5o6p7q8';
const response = await fetch(`https://api.hooked.so/v1/social/account/${accountId}/refresh`, {
method: 'POST',
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.account.stats.followers);
import requests
account_id = 'cm7g8h9i0j1k2l3m4n5o6p7q8'
response = requests.post(
f'https://api.hooked.so/v1/social/account/{account_id}/refresh',
headers={'x-api-key': 'your_api_key_here'},
timeout=300
)
print(response.json()['data']['account']['lastAnalyzed'])
{
"success": true,
"message": "Account refreshed successfully",
"data": {
"account": {
"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": 1520000,
"following": 251,
"videos": 345,
"likes": 45600000
},
"analytics": {
"engagementRate": 12.7,
"viralityScore": 79.1,
"avgViews": 902000
},
"lastAnalyzed": "2026-10-01T12:00:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
}
{
"success": false,
"errorCode": "INSUFFICIENT_CREDITS",
"message": "Not enough credits to perform this action"
}
Account Analysis
Refresh Account
Scrape an analyzed account again to update its data
POST
/
v1
/
social
/
account
/
{accountId}
/
refresh
curl -X POST "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8/refresh" \
-H "x-api-key: your_api_key_here"
const accountId = 'cm7g8h9i0j1k2l3m4n5o6p7q8';
const response = await fetch(`https://api.hooked.so/v1/social/account/${accountId}/refresh`, {
method: 'POST',
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.account.stats.followers);
import requests
account_id = 'cm7g8h9i0j1k2l3m4n5o6p7q8'
response = requests.post(
f'https://api.hooked.so/v1/social/account/{account_id}/refresh',
headers={'x-api-key': 'your_api_key_here'},
timeout=300
)
print(response.json()['data']['account']['lastAnalyzed'])
{
"success": true,
"message": "Account refreshed successfully",
"data": {
"account": {
"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": 1520000,
"following": 251,
"videos": 345,
"likes": 45600000
},
"analytics": {
"engagementRate": 12.7,
"viralityScore": 79.1,
"avgViews": 902000
},
"lastAnalyzed": "2026-10-01T12:00:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
}
{
"success": false,
"errorCode": "INSUFFICIENT_CREDITS",
"message": "Not enough credits to perform this action"
}
Overview
Scrapes an account your team already analyzed again and updates its saved stats and analytics. The request waits for the scrape to finish; set a generous client timeout. No request body.Credits
8 credits per call. Scraping is a platform cost, so it is charged to every team, including teams that use their own provider keys (BYOK). The credits are refunded if the refresh fails.curl -X POST "https://api.hooked.so/v1/social/account/cm7g8h9i0j1k2l3m4n5o6p7q8/refresh" \
-H "x-api-key: your_api_key_here"
const accountId = 'cm7g8h9i0j1k2l3m4n5o6p7q8';
const response = await fetch(`https://api.hooked.so/v1/social/account/${accountId}/refresh`, {
method: 'POST',
headers: { 'x-api-key': 'your_api_key_here' }
});
const { data } = await response.json();
console.log(data.account.stats.followers);
import requests
account_id = 'cm7g8h9i0j1k2l3m4n5o6p7q8'
response = requests.post(
f'https://api.hooked.so/v1/social/account/{account_id}/refresh',
headers={'x-api-key': 'your_api_key_here'},
timeout=300
)
print(response.json()['data']['account']['lastAnalyzed'])
{
"success": true,
"message": "Account refreshed successfully",
"data": {
"account": {
"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": 1520000,
"following": 251,
"videos": 345,
"likes": 45600000
},
"analytics": {
"engagementRate": 12.7,
"viralityScore": 79.1,
"avgViews": 902000
},
"lastAnalyzed": "2026-10-01T12:00:00.000Z",
"profileUrl": "https://www.tiktok.com/@fitnessguru"
}
}
}
{
"success": false,
"errorCode": "INSUFFICIENT_CREDITS",
"message": "Not enough credits to perform this action"
}
Errors
| Status | When |
|---|---|
| 401 | Missing or invalid API key (code: "not_authenticated") |
| 402 | Not enough credits (errorCode: "INSUFFICIENT_CREDITS"), or a managed team without a live subscription (code: "subscription_required"). Nothing is charged |
| 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 | The scrape failed: { "success": false, "message": "Failed to refresh account", "error": "..." }. Credits are refunded |
Each call charges credits. Do not retry automatically on a timeout: check
lastAnalyzed in Account Details first.