# Hook Detector Find short-form hooks that already work. Give a topic, get back real TikTok, Instagram and YouTube Shorts clips with their opening lines, why each one travelled and how viral it really was (an outlier against its creator's usual, fresh views per day). Three kinds of research, one run object, the same wait: short form POST /v1/research hooks from TikTok, Instagram and YouTube Shorts long form POST /v1/longform how the long-form YouTube videos that beat their own channel open (the first minute, verbatim) packaging POST /v1/packaging those videos' titles and thumbnails, what they share, and written ideas for your topic Base URL: https://api.hookdetector.com MCP: https://api.hookdetector.com/mcp (streamable HTTP; /mcp and /mcp/ both work) OpenAPI: https://api.hookdetector.com/openapi.json MCP registry entry: https://api.hookdetector.com/server.json and https://api.hookdetector.com/.well-known/mcp.json The full manual as one Markdown file to download: https://api.hookdetector.com/docs.md A person to write to: contact@hookdetector.com (questions, data removal without your key, security reports) Hook Detector is in beta: a new account needs an access code (see "Get in" below). Keys made before the beta keep working. The shortest path for an agent: POST /v1/accounts with your access_code, then POST /v1/research with an Idempotency-Key, then GET /v1/runs/{run_id}?wait=55 until status is done (3 or 4 calls). Set your HTTP client's read timeout above the wait, for example 55 + 15 seconds, or the client gives up before the server answers. ## Every route POST /v1/accounts sign up with a beta access code, no auth GET /v1/me your account and balance DELETE /v1/account erase your account and all its data GET /v1/usage credits, spend, holds, last 30 days GET /v1/keys your active API keys POST /v1/keys create another API key DELETE /v1/keys/{key_id} revoke a key ("others": every key but yours) POST /v1/research start a run (Idempotency-Key honoured) GET /v1/runs/{run_id}?wait=N one run and its hooks or finds, waiting up to N s GET /v1/runs/{run_id}/export?format=csv a run's results as a file: csv, json or md GET /v1/runs?kind= your runs of every kind, newest first (paged) POST /v1/longform long form: how YouTube outliers on a topic open POST /v1/packaging packaging: their titles and thumbnails, and ideas GET /v1/finds?kind=packaging&sort=score the index: every video your runs found, one entry a video on each tab, by outlier score (paged) GET /v1/finds/keeps?kind=long the long-form hooks and packages you kept (paged) GET /v1/finds/{find_id} one find (a long or packaging result) POST /v1/finds/{find_id}/decision keep or reject a find DELETE /v1/finds/{find_id}/decision clear a keep or reject on a find POST /v1/finds/{find_id}/remix make it mine: openings or packages written from this find's structure, or (mode intro, video_brief) Write my intro: your own timed intro in a long find's structure, 1 credit GET /v1/finds/{find_id}/remixes the remixes you paid for from this find, newest first GET /v1/remixes/{remix_id} one remix you paid for GET /v1/hooks/{hook_id} one hook GET /v1/hooks/{hook_id}/embed playable embed GET /v1/hooks/{hook_id}/still the card image as a JPEG, no key needed GET /v1/hooks/{hook_id}/media The clip's original video file, for a