Typefully
MARKETING · MARKETING
Drafts, scheduled posts, social sets, and post and follower analytics in the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
typefully_delete_v2_social_sets_by_social_set_id_drafts_by_draft_idWRITEDESTRUCTIVE AND PERMANENT. Delete a draft with its posts, media attachments and comment threads. Typefully publishes no trash and no restore endpoint for drafts, so there is no undo and no safer alternative to prefer -- unschedule it with an update instead if the intent is only to stop it publishing via DELETE /v2/social-sets/{social_set_id}/drafts/{draft_id}
typefully_delete_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threads_by_comment_thread_idWRITEDESTRUCTIVE AND PERMANENT. Delete a draft's whole comment thread, every comment in it and its anchor in the post text. There is no undo; resolving the thread is the reversible alternative that hides it without destroying the discussion via DELETE /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads/{comment_thread_id}
typefully_delete_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threads_by_comment_thread_id_comments_by_comment_idWRITEDESTRUCTIVE AND PERMANENT. Delete one comment from a draft's comment thread. There is no undo and no archive; updating the comment's text is the reversible alternative when the intent is to correct it via DELETE /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads/{comment_thread_id}/comments/{comment_id}
typefully_get_v2_meREADRead the Typefully user this connection acts as: id, name, email, signup date and the label of the API key that authenticated the call, when one was set via GET /v2/me
typefully_get_v2_social_setsREADList the social sets -- Typefully's name for a connected social account and the team that owns it -- this credential can reach. THE DISCOVERY CALL: every other tool here takes a social_set_id, and this is what supplies it via GET /v2/social-sets
typefully_get_v2_social_sets_by_social_set_idREADRead one social set with every platform account attached to it (X, LinkedIn, Bluesky, Mastodon, Threads, Substack), each with its handle and public profile URL via GET /v2/social-sets/{social_set_id}
typefully_get_v2_social_sets_by_social_set_id_analytics_by_platform_followersREADRead a social set's daily follower counts on one platform over a date range, in the set's own timezone, with the latest count in the range via GET /v2/social-sets/{social_set_id}/analytics/{platform}/followers
typefully_get_v2_social_sets_by_social_set_id_analytics_by_platform_postsREADList a social set's published posts on one platform over a date range with their impressions and engagement -- likes, comments, shares, quotes, profile clicks, link clicks and saves -- optionally including X replies via GET /v2/social-sets/{social_set_id}/analytics/{platform}/posts
typefully_get_v2_social_sets_by_social_set_id_draftsREADList a social set's drafts, filtered by status and tag and sorted by created, updated, scheduled or published date. `planned` is dated but INERT -- it will not auto-publish until a publish_at confirms it -- so a planned draft whose date has passed is not overdue via GET /v2/social-sets/{social_set_id}/drafts
typefully_get_v2_social_sets_by_social_set_id_drafts_by_draft_idREADRead one draft with its per-platform posts, attached media, schedule, tags and published URLs. `exclude_comment_markers=true` strips the `<typ:comment-thread>` anchors for a read-only consumer; leave it false to round-trip the text back through an update via GET /v2/social-sets/{social_set_id}/drafts/{draft_id}
typefully_get_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threadsREADList a draft's comment threads with the comments in each, filtered by platform and by resolution status -- UNRESOLVED ONLY by default, so resolved threads are omitted unless you ask for `resolved` or `all` via GET /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads
typefully_get_v2_social_sets_by_social_set_id_linkedin_organizations_resolveREADTurn a public LinkedIn company or school URL into that organization's id, URN and the ready-to-paste `@[Name](urn:li:organization:ID)` mention syntax a LinkedIn post body needs via GET /v2/social-sets/{social_set_id}/linkedin/organizations/resolve
typefully_get_v2_social_sets_by_social_set_id_media_by_media_idREADRead an uploaded media file's processing state, filename, MIME type, alt text and the resized URLs Typefully produced, plus the failure reason when processing failed via GET /v2/social-sets/{social_set_id}/media/{media_id}
typefully_get_v2_social_sets_by_social_set_id_queueREADRead the drafts a social set has queued or scheduled between two dates, in the order they will publish via GET /v2/social-sets/{social_set_id}/queue
typefully_get_v2_social_sets_by_social_set_id_queue_scheduleREADRead a social set's queue slots -- the local hour, minute and weekdays a queued draft publishes at -- together with the timezone those times are in via GET /v2/social-sets/{social_set_id}/queue/schedule
typefully_get_v2_social_sets_by_social_set_id_tagsREADList a social set's draft tags with the URL-safe slug each one generated -- the slug is what the draft listing filters on via GET /v2/social-sets/{social_set_id}/tags
typefully_patch_v2_social_sets_by_social_set_id_drafts_by_draft_idWRITEEdit a draft: its posts, title, tags, sharing, and its schedule -- setting `publish_at` commits a planned draft to auto-publish, and clearing it takes it back out of the queue. `force_overwrite_comments` is what allows text edits that would break existing comment anchors via PATCH /v2/social-sets/{social_set_id}/drafts/{draft_id}
typefully_patch_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threads_by_comment_thread_id_comments_by_comment_idWRITERewrite the text of one comment in a draft's comment thread. The anchor and the thread are untouched via PATCH /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads/{comment_thread_id}/comments/{comment_id}
typefully_patch_v2_social_sets_by_social_set_id_media_by_media_idWRITESet or clear the accessibility description published as alt text with a media file. Omitting `alt_text` keeps the current value; sending null clears it via PATCH /v2/social-sets/{social_set_id}/media/{media_id}
typefully_post_v2_social_sets_by_social_set_id_draftsWRITECreate a draft for one or more platforms, each with its own posts, media and settings. `plan_at` dates it without committing it; `publish_at` queues it to auto-publish. Typefully answers 402 when the account is paused or the plan does not allow creating drafts via POST /v2/social-sets/{social_set_id}/drafts
typefully_post_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threadsWRITEAnchor a new comment thread to an exact span of a draft post's visible text. `selected_text` must be a codepoint-equal substring copied verbatim from the draft read, and a selection that cuts through a LinkedIn mention is refused via POST /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads
typefully_post_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threads_by_comment_thread_id_commentsWRITEAdd a follow-up comment to an existing comment thread on a draft. Plain text only -- Typefully derives the stored rich text, and mentioning users is not supported here via POST /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads/{comment_thread_id}/comments
typefully_post_v2_social_sets_by_social_set_id_drafts_by_draft_id_comment_threads_by_comment_thread_id_resolveWRITEMark a draft's comment thread resolved, which hides it from the default unresolved listing. Reversible in the product and not destructive: the comments and the anchor survive via POST /v2/social-sets/{social_set_id}/drafts/{draft_id}/comment-threads/{comment_thread_id}/resolve
typefully_post_v2_social_sets_by_social_set_id_media_uploadWRITERegister a media file and get a presigned S3 URL to PUT the bytes to within the hour. The returned media_id is what attaches the file to a post; Agentic Fabriq does not upload the bytes for you via POST /v2/social-sets/{social_set_id}/media/upload
typefully_post_v2_social_sets_by_social_set_id_tagsWRITECreate a draft tag on a social set. The slug is generated from the name, so two names that slugify alike collide via POST /v2/social-sets/{social_set_id}/tags
typefully_put_v2_social_sets_by_social_set_id_queue_scheduleWRITEREPLACE a social set's whole queue schedule. This is a full replacement, not a merge: every slot missing from `rules` is removed, so read the schedule first and send the complete list. Not flagged destructive -- no content is deleted -- but it changes when everything already queued goes out via PUT /v2/social-sets/{social_set_id}/queue/schedule
Often connected alongside
Put Typefully behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.