Verifier Timeline
GET /api/ext/comments/{id}/verifications
Returns the full list of auto-verification attempts on a task — useful when:
- a task is stuck in
submittedand you want to know why the verifier couldn't match, - you want to audit the auto-verifier's hit rate per platform,
- you're building automation that decides between approve/dispute based on the scrape evidence.
curl -X GET https://app.tokportal.com/api/ext/comments/0d8b5a3e-92c4-4111-9a7d-3e2f1a2b3c4d/verifications \
-H "X-API-Key: tok_live_xxx"
Response:
{
"data": {
"task_id": "0d8b5a3e-92c4-4111-9a7d-3e2f1a2b3c4d",
"status": "manually_confirmed",
"attempts": [
{
"attempt_n": 1,
"scraped_at": "2026-04-27T17:22:10Z",
"outcome_kind": "couldnt_verify",
"verified": false,
"match_score": 0,
"found_comment_id": null,
"reason": "no_candidate_found",
"comments_scraped": 87,
"platform": "tiktok"
}
]
}
}
Field reference
| Field | Type | Description |
|---|---|---|
attempt_n | integer | 1-indexed attempt number on this task. |
scraped_at | string | When the scrape ran (UTC). |
outcome_kind | string | One of: verified, wrong_text, wrong_account, couldnt_verify, scrape_failed. |
verified | boolean | True only when outcome_kind = "verified". |
match_score | number | Sørensen-Dice similarity of the best-matching comment (0–1). 0 if nothing matched. |
found_comment_id | string | null | Platform comment ID of the best match (if any). |
reason | string | Internal reason tag — matched, no_candidate_found, wrong_text_same_handle, wrong_account, scrape_failed_*. |
comments_scraped | integer | null | How many comments the scraper returned. 0 is a strong signal the scraper couldn't reach the video. |
platform | string | null | Snapshot of the platform at scrape time — useful for cross-platform audits. |
Outcome decision matrix
outcome_kind | Resulting task state |
|---|---|
verified | verified_auto → finalized after the 24h review window. |
wrong_text | pending_corrections (manager edits/reposts). |
wrong_account | pending_corrections (manager deletes + reposts from right account). |
couldnt_verify | Task stays in submitted — manager sees the manual modal. |
scrape_failed | Task stays in submitted; cron re-attempts later. |
Why was my task not verified?
If comments_scraped is 0 across all attempts, the Apify scraper couldn't reach the video — usually a private account or a regional block. Approve the task or contact the manager.
If comments_scraped is high (40–100) and outcome_kind is couldnt_verify, the comment really wasn't found among the recent ones. Either:
- the manager didn't actually post (dispute),
- the comment was hidden / deleted by the creator (approve, your reach is gone but the manager did the work),
- the comment is older than the 100 most recent (rare; approve).
If outcome_kind is wrong_text, the manager posted a typo'd version. The correction_required text on the task spells out what they need to fix.
If outcome_kind is wrong_account, the manager used a different account than saved_account_id. The manager will be told to delete + repost.