fetchproof.

/v1/threads/user/posts

GET

Posts

Get a user's public Threads posts, limited to roughly the latest 20–30 posts.

Credit cost

Default: 1 credit

How charges are determined

Cost is decided per call, not per endpoint: the same operation can cost different amounts depending on what it returns.

A call that fails costs 0 credits. A result served from cache costs 0 credits.

`default` is the cost when no rule matches. Rules are evaluated in order and the first whose conditions all hold wins.

A `when` condition is one of: `param` (the request parameter is true), `outcome` (the classifier's outcome), `empty` / `nonEmpty` (a response field is empty and absent, or a non-empty array or string), `flag` (a response field is exactly true).

A cost of `{ perStartedMinute: n, of: [fields] }` is n x max(1, ceil(seconds / 60)), so even a short result bills at least one minute.

Cache supportNot specified in the published contract.
PaginationNo explicit pagination metadata in the published contract. Consult the parameters and response fields below.

Parameters

NameLocation / requiredSchema
handle

Threads username

query / required

string

trim

Set true for a trimmed response.

query / optional

boolean

Request examples

Replace placeholder values and supply your own API key. For operations with a request body, populate the body using the schema above.

cURL
curl --request GET 'https://api.fetchproof.com/v1/threads/user/posts?handle=YOUR_HANDLE' \
  --header 'x-api-key: YOUR_API_KEY'
JavaScript
const response = await fetch("https://api.fetchproof.com/v1/threads/user/posts?handle=YOUR_HANDLE", {
  method: 'GET',
  headers: { 'x-api-key': process.env.FETCHPROOF_API_KEY }
});
console.log(await response.text());
Python
import os
import requests

response = requests.get("https://api.fetchproof.com/v1/threads/user/posts?handle=YOUR_HANDLE",
    headers={"x-api-key": os.environ["FETCHPROOF_API_KEY"]})
print(response.text)

Responses

200Success. Envelope: success / credits_remaining / credits_charged.

application/json

object

successrequired

boolean

credits_remainingrequired

integer

credits_chargedrequired

integer

postsrequired

array

Array items

object

idrequired

string

pkrequired

string

userrequired

object

friendship_statusrequired

null

pkrequired

string

profile_pic_urlrequired

string

usernamerequired

string

idrequired

string

transparency_labelrequired

null

transparency_productrequired

null

transparency_product_enabledrequired

boolean

is_verifiedrequired

boolean

text_post_app_is_privaterequired

boolean

has_onboarded_to_text_post_apprequired

boolean

text_post_app_infooptional

object

show_header_followrequired

boolean

is_markuprequired

boolean

custom_feed_preview_inforequired

null

link_preview_attachmentrequired

null

linked_inline_mediarequired

null

special_effects_enabled_strrequired

string

text_fragmentsrequired

object

fragmentsrequired

array

Array items

object

fragment_typerequired

string

link_fragmentrequired

null

mention_fragmentrequired

null

plaintextrequired

string

tag_fragmentrequired

null

linkified_web_urlrequired

null

reshare_countrequired

integer

direct_reply_countrequired

integer

repost_countrequired

integer

quote_countrequired

integer

share_inforequired

object

quoted_attachment_author_attribution_allowedrequired

boolean

quoted_attachment_post_unavailablerequired

boolean

quoted_attachment_postrequired

null

quoted_postrequired

null

reposted_postrequired

null

reply_to_authorrequired

null

reply_controlrequired

string

private_reply_partnerrequired

null

self_thread_countrequired

integer

tag_headerrequired

object

display_namerequired

string

idrequired

string

root_post_authorrequired

null

pinned_post_inforequired

object

is_pinned_to_parent_postrequired

boolean

is_pinned_to_profilerequired

boolean

related_trends_inforequired

null

is_replyrequired

boolean

is_post_unavailablerequired

boolean

post_unavailable_reasonrequired

null

hush_inforequired

null

is_paid_partnershipoptional

null

audiooptional

null

captionrequired

object

textrequired

string

pkrequired

string

has_translationrequired

null

caption_is_editedoptional

boolean

transcription_dataoptional

null

carousel_mediaoptional

array

Array items

object

accessibility_captionrequired

null

has_audiorequired

null

image_versions2required

object

candidatesrequired

array

Array items

object

urlrequired

string

heightrequired

integer

widthrequired

integer

original_heightrequired

integer

original_widthrequired

integer

pkrequired

string

video_versionsrequired

array

Array items

object

typerequired

integer

urlrequired

string

__typenamerequired

string

idrequired

string

coderequired

null

coderequired

string

image_versions2optional

object

candidatesrequired

array

Array items

object

heightrequired

integer

urlrequired

string

widthrequired

integer

original_heightoptional

integer

original_widthoptional

integer

accessibility_captionoptional

string

video_versionsoptional

null

has_audiooptional

null

media_typeoptional

integer

caption_add_onoptional

null

giphy_media_infooptional

null

media_overlay_infooptional

null

sharing_friction_infooptional

object

should_have_sharing_frictionrequired

boolean

sharing_friction_payloadrequired

null

like_countrequired

integer

metaPlaceoptional

null

meta_placeoptional

null

gen_ai_detection_methodoptional

null

taken_atrequired

integer

organic_tracking_tokenoptional

string

logging_info_tokenoptional

null

like_and_view_counts_disabledoptional

boolean

urlrequired

string

401Invalid or missing x-api-key
402No credits remaining
403Upstream denied (age gate, audience controls)
404Resource or endpoint not found
429Rate limited