Substack hub

Substack Note API

One note by id, with its body, author, engagement and attachments.

GET /v1/substack/notes/{noteId}

1 credit Failed requests are free

About this endpoint

GET /v1/substack/notes/{noteId} resolves one note. A note id is a whole number from 1 to 2147483647, for example 378007586.

data.note carries id, body, bodyJson, createdAt, editedAt, author, reactionCount, reactions, restackCount, replyCount, language, isAiGenerated, translation, replyPermission, ancestorPath and attachments. Each attachment has type such as image, link, post or poll, with its image, link preview or post ids. lookupStatus is found or not_found.

Substack Note API FAQ

Where do I find a note id?

It is the numeric id on a note or in a Notes feed item's note.id, or the substack.com/@handle/note/c-123 URL. The route accepts ids from 1 to 2147483647 and rejects other values with a 400.

What does isAiGenerated mean?

It is Substack's own flag on the note, returned as-is. It is not Social Fetch's judgement about the text.

What if no note has the id?

A malformed id is a 400. A well-formed id that matches no note is a typed not_found.

How many credits does a note lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.