Skip to main content
Search finds content from a description. Extract returns content from an identifier. Hand Klint an identifier for a specific post or account, and it returns the same complete entity a search returns. No reduced card, no second schema to learn. Two identifier styles work for each resource. The durable Klint ID comes from a search result or an embed. The public Instagram identifier is what an agent usually starts with: a post’s shortcode or an account’s handle. Klint resolves both against what it has already observed.
Lookups resolve against what Klint has observed. Observed means the full entity; not observed means 404 not-tracked. Klint never fetches live from Instagram, and not-tracked never claims the content is absent from Instagram. See when Klint hasn’t seen it.

Get a post

GET /v1/instagram/posts/{id} returns the full post: every post summary field at identical paths, plus the ordered media[] array with per-item transcript, visible_text, and visual_description. The {id} path segment accepts either form:
By shortcode, same response:
Media rules (image versus video discrimination, publication order, and what the delivery URLs promise) plus every field’s meaning live in reading the results. A shortcode never changes over a post’s life, so it is a safe durable key alongside the Klint ID.

Get an account

GET /v1/instagram/accounts/{id} returns the same fixed account representation as Search accounts: current profile facts, public counters, and bounded publishing interpretation.
By handle, same response:
A handle is not a durable key. Instagram can release and reassign handles; resolving @mayamoveswell returns whoever holds the handle now, which may not be who held it last week. Resolve the handle once. Then key on the returned id.
The two-truths model (current profile facts versus publishing interpretation, and why category_label and niches routinely disagree) is in reading the results. A confirmed-private account may still resolve to its public profile facts, with is_private: true and every publishing field cleared to null. A fully unobservable, deactivated, or deleted account returns not-tracked rather than a frozen snapshot.

When Klint hasn’t seen it

Both lookups resolve only against what Klint has already observed. A miss returns 404 not-tracked: the same problem object either endpoint returns for an unobserved resource:
Read it precisely: not-tracked says Klint has not observed this post or account, not that Instagram lacks it. An agent must never conclude “this doesn’t exist” from a not-tracked. Full error list: Errors.

Continue from here

Search posts

Find posts by content, format, and metrics.

Search accounts

Find accounts by who they currently appear to be.