HonestHook

RankingsSign in

Tutorials

Threads profile in curl

One authenticated call to /api/v1/threads/profile?handle=nasa, the response it returned, and the line that reads one field out of it.

What you need

curl ships with macOS and most Linux distributions, and with Windows 10 and later. There is nothing to install.

The call

curl -H "Authorization: Bearer $HH_KEY" \
  "https://honesthook.com/api/v1/threads/profile?handle=nasa"

What came back

{
  "success": true,
  "platform": "threads",
  "endpoint": "threads/profile",
  "data": {
    "author": {
      "id": "28829152388",
      "handle": "nasa",
      "name": "NASA",
      "followers": 12736811,
      "following": null,
      "posts_count": null,
      "verified": true,
      "is_private": false
    }
  },
  "error": null,
  "cached": false
}

Recorded response, captured 15 Sep 2026. A live call returns the value at the moment you ask, not this one.

Every field in that capture

In curlType in this capture
.successboolean
.platformstring
.endpointstring
.data.author.idstring
.data.author.handlestring
.data.author.namestring
.data.author.followersnumber
.data.author.followingnull
.data.author.posts_countnull
.data.author.verifiedboolean
.data.author.is_privateboolean
.errornull
.cachedboolean

A field we cannot read comes back null, never 0. A zero would be a claim about the account; null is a fact about our collection. The full list of what this route does not return is on threads-api/profile.

Reading one field

curl -H "Authorization: Bearer $HH_KEY" \
  "https://honesthook.com/api/v1/threads/profile?handle=nasa" \
  | jq -r '.data.author.followers'

jq is a separate tool — it is not part of curl. Without it the command above prints the whole envelope, which is the block below.

Read this before you run anything

The call on this page goes to our endpoint. It does not go to Threads. The difference is the whole reason the route exists, and it is the one thing to be clear about before you copy anything.

A plain curl aimed at Threads does not fail. It returns 200 and a large page — and the follower count is not in it. Threads serves the object that carries the counter only to a client whose TLS handshake looks like a browser's. Same URL, same address, different signature, different page.

So a tutorial that pointed you straight at Threads would be teaching you to build something that reports success and no data. What you call here is honesthook.com, and the impersonating client sits behind it.

What you are calling

One authenticated GET to our endpoint, with your key in an Authorization header. The handle in the example is the one that produced the recorded response below.

Before you copy the block

Keep the key in an environment variable — all three examples read HH_KEY.

Then read the response as it is. Threads does not publish everything a profile elsewhere would, and what it does not publish comes back null rather than 0. Which fields those are, and why, is on /threads-api/profile.

The endpoint itself

Parameters, the handle format, what the route does not return and what a call costs: threads-api/profile.

The same call in Python · JavaScript.

Free key, 1,000 credits a month

Every example above runs against the real endpoint as soon as you have a key. No card, and the key arrives in seconds.

Get a key →

← Tutorials · threads-api · Pricing