{"openapi":"3.1.0","info":{"title":"HashIQ API","version":"0.3.0","description":"Real TikTok Shop (US) products starting to sell: Scores, Go / Wait / Skip verdicts, daily readings, videos, competitors and the Called-it ledger. Every figure is read from public pages or computed from them.","contact":{"url":"https://hashiq.io/contact"}},"servers":[{"url":"https://hashiq.io"}],"externalDocs":{"description":"Agent reference","url":"https://hashiq.io/llms-full.txt"},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A HashIQ API key from https://hashiq.io/account/api"},"oauth":{"type":"oauth2","description":"For apps acting for a user: PKCE (S256) is required; clients register at the registration endpoint (RFC 7591).","flows":{"authorizationCode":{"authorizationUrl":"https://hashiq.io/oauth/authorize","tokenUrl":"https://hashiq.io/oauth/token","refreshUrl":"https://hashiq.io/oauth/token","scopes":{"hashiq":"Use HashIQ for the user and spend their API credits"}}}}}},"security":[{"bearer":[]},{"oauth":["hashiq"]}],"paths":{"/v1/me":{"get":{"summary":"Your plan, credit balance, data delay and rate limit","description":"Free.","operationId":"getMe","parameters":[],"responses":{"200":{"description":"Your plan, credit balance, data delay and rate limit"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/radar":{"get":{"summary":"Every scored real product ranked by Score, with its verdict and the reason. Free keys read the 72-hour view.","description":"Costs 5 credits; nothing is charged when nothing is found.","operationId":"getRadar","parameters":[{"name":"verdict","in":"query","required":false,"schema":{"type":"string","enum":["Go","Wait","Skip"]}},{"name":"stage","in":"query","required":false,"schema":{"type":"string","enum":["Emerging","Accelerating","Peaking","Saturated"]}},{"name":"niche","in":"query","required":false,"description":"Category group","schema":{"type":"string","enum":["beauty","home","kitchen","wellness","fitness","pets","accessories","gadgets"]}},{"name":"price","in":"query","required":false,"description":"Price band, USD","schema":{"type":"string","enum":["lt30","30to80","gt80"]}},{"name":"q","in":"query","required":false,"description":"Words in the title","schema":{"type":"string"}},{"name":"growth","in":"query","required":false,"description":"Minimum % change of new reviews a day this week against the four weeks before","schema":{"type":"number"}},{"name":"rating","in":"query","required":false,"description":"Minimum star rating","schema":{"type":"number"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["score","verdict","growth","closing","newest"]}},{"name":"limit","in":"query","required":false,"description":"1 to 500, default 50","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Every scored real product ranked by Score, with its verdict and the reason. Free keys read the 72-hour view."},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/verdict/{entity}":{"get":{"summary":"Go, Wait or Skip for one product: the reason, the Score, days left to act, the odds, the call and units sold since","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getVerdictEntity","parameters":[{"name":"entity","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}}],"responses":{"200":{"description":"Go, Wait or Skip for one product: the reason, the Score, days left to act, the odds, the call and units sold since"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/lookup":{"get":{"summary":"Resolve a pasted TikTok Shop product or video link. An unknown link is read within minutes (status \"tracking\", not charged); ask again.","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getLookup","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resolve a pasted TikTok Shop product or video link. An unknown link is read within minutes (status \"tracking\", not charged); ask again."},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/products/{id}/videos":{"get":{"summary":"Videos that carry the product, their hooks and script parts, the creators selling it, and similar products' videos","description":"Costs 2 credits; nothing is charged when nothing is found.","operationId":"getProductsIdVideos","parameters":[{"name":"id","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1 to 20, default 8","schema":{"type":"integer"}}],"responses":{"200":{"description":"Videos that carry the product, their hooks and script parts, the creators selling it, and similar products' videos"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/products/{id}/competitors":{"get":{"summary":"The closest competitors from other shops, where the product stands on price, sales a day and videos, and its shop's other products","description":"Costs 3 credits; nothing is charged when nothing is found.","operationId":"getProductsIdCompetitors","parameters":[{"name":"id","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1 to 8, default 5","schema":{"type":"integer"}}],"responses":{"200":{"description":"The closest competitors from other shops, where the product stands on price, sales a day and videos, and its shop's other products"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/shop/products/{id}":{"get":{"summary":"Every daily reading of a product: price, sold count, sales that day, rating, reviews","description":"Costs 2 credits; nothing is charged when nothing is found.","operationId":"getShopProductsId","parameters":[{"name":"id","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"7 to 365, default 90","schema":{"type":"integer"}}],"responses":{"200":{"description":"Every daily reading of a product: price, sold count, sales that day, rating, reviews"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/score/{entity}":{"get":{"summary":"Score, stage, verdict, price, rating and the review counts behind the Score","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getScoreEntity","parameters":[{"name":"entity","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}}],"responses":{"200":{"description":"Score, stage, verdict, price, rating and the review counts behind the Score"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/explain/{entity}":{"get":{"summary":"The parts of the Score, the formula and the counts in plain words","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getExplainEntity","parameters":[{"name":"entity","in":"path","required":true,"description":"A TikTok Shop product id (1729…), a HashIQ product id or slug; URL-encode a pasted link","schema":{"type":"string"}}],"responses":{"200":{"description":"The parts of the Score, the formula and the counts in plain words"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/products":{"get":{"summary":"Search by words in the title (q), or the best match for a page title (title, 1 credit)","description":"Costs 2 credits; nothing is charged when nothing is found.","operationId":"getProducts","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"title","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1 to 50, default 10","schema":{"type":"integer"}}],"responses":{"200":{"description":"Search by words in the title (q), or the best match for a page title (title, 1 credit)"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/top/{list}":{"get":{"summary":"The Rising Chart with movement against last week, weeks on chart and peak","description":"Costs 3 credits; nothing is charged when nothing is found.","operationId":"getTopList","parameters":[{"name":"list","in":"path","required":true,"schema":{"type":"string","enum":["rising","new"]}},{"name":"limit","in":"query","required":false,"description":"1 to 100, default 25","schema":{"type":"integer"}}],"responses":{"200":{"description":"The Rising Chart with movement against last week, weeks on chart and peak"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/called-it":{"get":{"summary":"Published calls with outcomes; backtest calls are flagged","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getCalledIt","parameters":[{"name":"week","in":"query","required":false,"description":"e.g. 2026-w43","schema":{"type":"string"}},{"name":"outcome","in":"query","required":false,"schema":{"type":"string","enum":["called","pending","too_late","missed","unresolved"]}},{"name":"limit","in":"query","required":false,"description":"1 to 500, default 50","schema":{"type":"integer"}}],"responses":{"200":{"description":"Published calls with outcomes; backtest calls are flagged"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/called-it/{id}/verify":{"get":{"summary":"Verify a call: its leaf hash, Merkle proof and the root anchored on Base","description":"Costs 1 credit; nothing is charged when nothing is found.","operationId":"getCalledItIdVerify","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verify a call: its leaf hash, Merkle proof and the root anchored on Base"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/v1/watchlist":{"get":{"summary":"Your watchlist with current verdicts, and the verdicts that changed in 14 days","description":"Free.","operationId":"getWatchlist","parameters":[],"responses":{"200":{"description":"Your watchlist with current verdicts, and the verdicts that changed in 14 days"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}},"post":{"summary":"Watch a product","description":"Free.","operationId":"postWatchlist","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["entity"],"properties":{"entity":{"type":"string"}}}}}},"responses":{"200":{"description":"Watch a product"},"401":{"description":"Missing or invalid token (WWW-Authenticate names the OAuth metadata)"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"},"429":{"description":"Rate limited (see Retry-After and X-RateLimit-* headers)"}}}},"/mcp":{"post":{"summary":"MCP server (Streamable HTTP, stateless JSON-RPC 2.0: initialize, tools/list, tools/call, prompts/list, prompts/get)","operationId":"mcp","responses":{"200":{"description":"JSON-RPC response"},"202":{"description":"Notification accepted"},"401":{"description":"Sign in (OAuth) or send an API key"}}}}}}