A run and its hooks
One run: status, progress, reserved, charged, error (ending with the request id that started it, on a failed run) and every hook it produced. ?wait=N holds the request until the run is done or failed, or N seconds pass. With since set to the last progress.updated_at, it also returns on progress change. A done run with fewer hooks than asked for, or none, has outcome: why, in plain words; a full run has none, or one sentence on hooks under the view floor. hooks holds only clips where a person on camera is talking; bonus is always [] (removed 2026-10-08). Every hook has format and section, and since 2026-10-01 virality, virality_why, outlier, posted_at, age_days, views_per_day and the other virality v2 fields (null on older hooks). A done run also carries patterns: up to 3 hook structures winning in this deck with the hook_ids using each, computed after delivery (null until then, and on older runs). Free. MCP: get_run.
Request
- Base URL: https://api.hookdetector.com (the document declares no server; this is the origin it was published from)
- URL: https://api.hookdetector.com/v1/runs/{run_id}
- Auth: none declared
Path parameters
Query parameters
seconds to wait for the run to finish, 0 to 55. Returns as soon as it is done or failed.
Last progress.updated_at; return early when it changes.
Headers
Bearer hd_... from POST /v1/accounts or POST /v1/keys
Response
Successful Response
Example response
{
"charged": 63,
"conversation_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
"created_at": "2026-09-23T10:00:00.000000+00:00",
"credits_ig": 30,
"credits_tt": 33,
"finished_at": "2026-09-23T10:00:00.000000+00:00",
"hooks": [
{
"above_floor": true,
"age_days": 3.5,
"aspect": "9:16",
"audience": "people who already cold plunge",
"banner": "STOP DOING 10 MINUTES",
"caption": "cold plunge tips",
"catchy_line": "Two minutes is the whole trick.",
"creator": "someone",
"creator_country": "US",
"creator_median_views": 38000,
"duration_s": 41,
"format": "talking_head",
"found_by": "search",
"hashtags": [
"coldplunge",
"recovery"
],
"hook": "Nobody tells you this about cold plunges.",
"hook_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"hook_type": "contrarian_claim",
"language": "English",
"likes": 90000,
"main_idea": "Short exposure beats long.",
"mechanism": "\"Nobody tells you this\" promises a secret about a routine the viewer already does. The clip pays it off with the two-minute rule.",
"onscreen_text": "STOP DOING 10 MINUTES",
"outlier": 31.2,
"outlier_basis": "median_views",
"own_sound": true,
"paid": false,
"platform": "tiktok",
"player_url": "https://www.tiktok.com/player/v1/7412345678901234567?autoplay=1",
"posted_at": "2026-09-28T10:00:00+00:00",
"rank": 1,
"section": "main",
"sound_reuse": 1200,
"steal_it": "Name a routine your viewers already do and promise the thing nobody says about it.",
"template": "Nobody tells you this about {routine}.",
"topic": "cold plunge timing",
"transcript": "Nobody tells you this...",
"transcript_kind": "speech",
"video_id": "7412345678901234567",
"views": 1200000,
"views_per_day": 342857.1,
"virality": 0.91,
"virality_why": "31x this creator's usual",
"visual_hook": "The banner \"STOP DOING 10 MINUTES\" adds an order that contradicts the usual advice.",
"watch_url": "https://www.tiktok.com/@someone/video/7412345678901234567",
"why_it_travelled": "\"Nobody tells you this\" promises a secret about a routine the viewer already does. The clip pays it off with the two-minute rule."
}
],
"progress": {
"counts": {
"above_floor": 40,
"found": 80,
"held": 10,
"on_topic": 20,
"read": 16,
"wanted": 10,
"written": 10
},
"message": "10 hooks ready",
"stage": "done",
"updated_at": "2026-09-23T10:00:00.000000+00:00"
},
"request_id": "a1b2c3",
"requested": 10,
"reserved": 200,
"run_id": "8f1c2d3e-4b5a-4c6d-8e7f-9a0b1c2d3e4f",
"stats": {},
"status": "done",
"topic": "cold plunge recovery"
}Changes
No recorded changes to this operation across all 1 revision of this API.