HonestHook

RankingsSign in

Home · Docs · Schemas · Author

Author — a public profile, and why every field can be null

The normalised profile shape, identical across all platforms. All twelve fields are nullable, and that is the design: a field we cannot read comes back null, never 0, because a zero would be a claim about the account.

Author has 12 fields: 12 nullable, 0 guaranteed by the contract's required list. Every number on this page is counted from the field map at render time — none of them is written down.

Fields

FieldTypeNullableRequired
idstringyesno
handlestringyesno
namestringyesno
biostringyesno
avatar_urlstringyesno
followersintegeryesno
followingintegeryesno
posts_countintegeryesno
verifiedbooleanyesno
is_privatebooleanyesno
external_urlstringyesno
urlstringyesno

12 rows above, 1 of them with a transcription from the contract and 3 with a note of ours.

What the fields mean

Only the fields with something measured or decided about them appear here. A field whose name and type say everything gets no paragraph, rather than a generic one.

id

From the contract: Stable identifier on that platform.

followers

Our note: Filled on ten of the eleven platforms with a profile route, and the source differs. Linktree is null by decision — it is a list of links, not an account someone follows, and 0 would be a claim about the world (lib/normalize/linktree.js:113). YouTube is null when the channel hides the count, because the API ships subscriberCount: "0" in that case and the naive read would publish a zero. Pinterest fills it from userInteractionCount in the page's ld+json block, not from follower_count. Measured 01/10/2026.

verified

Our note: Null where the platform publishes no badge. Again, not false.

is_private

Our note: Null where the platform has no concept of a private account, which is not the same as false. Linktree is one of those.

How this page stays true

The field list, the two flags and the closed value sets are generated from the contract this API serves, and a test compares them against the live /openapi.json in both directions: a field in the contract with no documentation fails, a documented field the contract does not have fails, and a wrong nullable or required fails. The prose marked our note is not covered by that test — it is authored, and labelled so you can tell.

The machine-readable source is at /openapi.json. If you are generating a client, use that rather than this page.

The other 7 schemas

ApiError · SeriesPoint · Item · Mover · PostItem · PostsEnvelope · ProfileEnvelope

← All schemas · Recipes · Full docs