Skip to content
PostTide
Docs

PostTide guide for Claude

The same guide Claude reads through its PostTide connection.

Connect Claude

Connecting needs a PostTide plan with API keys. Claude writes drafts only; a person in PostTide approves each one before it is scheduled.

  1. 1
    In PostTide, open Settings → API keys and make a key under Connect Claude.
  2. 2
    In your terminal, run:
    claude mcp add --transport http posttide https://api.posttide.com/api/v1/mcp --header "Authorization: Bearer <your PostTide key>"
  3. 3
    Start Claude Code and type /mcp — PostTide shows as connected. Ask: "What did I post on Instagram this week?"

PostTide plans and publishes social posts for a company's channels. Through this connection you write drafts only: a person in PostTide approves each one, and only then is it scheduled and published at the time you proposed. This guide is how to make a post right the first time, for every network.

Steps

  1. channels_list — find the channels you may post to, their accountId, and that each has canDraft true.
  2. channels_capabilities — read each chosen channel's rules, and this guide's section for its network, before writing.
  3. media_upload_link — for each picture or video (made to fit first, below), ask for a one-time link, then send the file: curl --upload-file video.mp4 "<uploadUrl>". One draft carries one video or pictures, not both.
  4. drafts_create — the text, the channels, the time it should go out (proposedAt, ISO-8601 with an offset) and, per network in variants, its own text and video details such as a cover.
  5. drafts_attach_media — attach the uploads, in order.
  6. posts_get — read the draft back; check its text, channels, time, media and cover match the request, and fix anything with drafts_update.
  7. Tell the person the draft waits for their approval in PostTide, and which time zone you used.

Pictures and videos

  • One draft carries one video or pictures, not both: a video network publishes the first video only. Make two drafts if the person wants both.
  • Make each file fit every chosen network before uploading — its types, encoding, shapes and size in the network's section below. A file that fits Instagram, TikTok and YouTube Shorts at once: vertical 9:16, 1080×1920, H.264 + AAC MP4.
  • Check every file's width and height, one file per command (it answers 1080,1350; the same command reads a video) — file, identify and scripts are often not installed or are refused by an agent's permission check:
    ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 picture.jpg
    
  • Re-encode a video that does not fit:
    ffmpeg -i input.mov -c:v libx264 -profile:v high -pix_fmt yuv420p -r 30 -c:a aac -b:a 128k -ar 48000 -movflags +faststart video.mp4
    
  • Make a picture a JPEG of the right shape (here 4:5, 1080×1350):
    ffmpeg -v error -i input.png -vf "scale=1080:1350:force_original_aspect_ratio=increase,crop=1080:1350" -q:v 2 picture.jpg
    
  • media_upload_link needs the file's exact size in bytes (wc -c < video.mp4) and type; the PUT must send exactly those bytes, once, before the link expires.

Covers and picking a frame

A video's cover is what people see before they press play — pick it, never leave the first frame by chance. Set it per network in drafts_create (or drafts_update) variants: Instagram coverMs (a frame) or coverUploadId (a picture), TikTok coverMs, YouTube coverUploadId. Each network's section says which cover PostTide sends there and which it does not.

  1. Find the video's length in seconds:
    ffprobe -v error -show_entries format=duration -of csv=p=0 video.mp4
    
  2. Pull candidate frames across the video (here every 2 seconds of the first 10), one command at a time, into the working folder (where the video is) — a loop, mkdir, /tmp or chained commands are what an agent's permission check refuses:
    ffmpeg -v error -y -ss 0.5 -i video.mp4 -frames:v 1 -q:v 2 frame-0.5.jpg
    ffmpeg -v error -y -ss 2 -i video.mp4 -frames:v 1 -q:v 2 frame-2.jpg
    ffmpeg -v error -y -ss 4 -i video.mp4 -frames:v 1 -q:v 2 frame-4.jpg
    ffmpeg -v error -y -ss 6 -i video.mp4 -frames:v 1 -q:v 2 frame-6.jpg
    ffmpeg -v error -y -ss 8 -i video.mp4 -frames:v 1 -q:v 2 frame-8.jpg
    
  3. Look at each frame (open the JPEG) and choose one that is sharp (no motion blur), shows the subject clearly — a face looking at the camera, eyes open, or the product — matches the caption's first line, and is not a black or fading frame. Keep anything that matters in the middle: Instagram's profile grid shows a Reel's cover cropped to its middle square.
  4. A frame cover: coverMs is that time in milliseconds (4 seconds → 4000), inside the video.
  5. A picture cover: export that frame as a JPEG the video's shape (ffmpeg -v error -ss 4 -i video.mp4 -frames:v 1 -q:v 2 cover.jpg), upload it with media_upload_link (image/jpeg), and pass its uploadId as coverUploadId. Do not also attach it with drafts_attach_media.

Captions and hashtags

  • Before writing, read the account's brand kit — the resource posttide://account/{accountId}/brand-kit — and write in its voice. Write in the request's language unless asked otherwise.
  • The first line is the hook: most networks show only the start of the text before "more" (each network's "Shown before "more"").
  • Stay within each network's limit, counted the network's way (its "Caption counting"). Give a shorter network its own text in variants rather than cutting a sentence. drafts_create and drafts_update refuse a text over a network’s limit, naming the network, its count and its limit.
  • Hashtags: 3–5 relevant ones, at the end or in the text, never over the network's cap (its "Hashtags"). None is better than generic ones.
  • Links: where the network's links are not clickable, write "link in bio" instead of a bare URL.
  • Mention only the handles the person gave you. Never leave placeholders ([link], "TBD"): a person approves exactly what you wrote.

Times

  • The person named a time: use it in the company's time zone (the connection's instructions say which; none set = UTC), as proposedAt with that date's UTC offset (e.g. 2026-11-02T09:00:00+01:00). Say in your reply which zone you used.
  • No time named: analytics_read with report: "best_times", the channelId and topN: 3 answers that channel's best slots from its own posts — propose the next one in the future. With no data yet, use the network's "Good times to post" (a published study; audience local time).
  • calendar_window shows what is already planned — avoid two posts on one channel within the same hour.
  • proposedAt must be in the future and inside the plan's horizon; it is only a proposal until a person approves.

Instagram

Platform instagram · this section alone: posttide://guide/instagram.

What a post may carry in PostTide

  • Text: optional, at most 2200 characters (count it the network's way, below).
  • A post needs: a picture or a video.
  • Pictures: up to 10 per post (a carousel).
  • Video: one per post, no PostTide size cap, no PostTide length cap.

The network's rules

  • Caption counting: characters; also at most 20 @ tags. PostTide counts UTF-16 code units (text.length). (source, checked 2026-10-28)
  • Shown before "more": Meta publishes no feed cut-off; its ads guide keeps primary text to 125 characters because longer text is truncated. The 125 figure is Meta's ad-text recommendation, not an organic rule. Put the hook in the first line. (source, checked 2026-10-28)
  • Hashtags: 30 at most. API limit. Third-party guides report the app now allows 5 (Dec 2025); Instagram's help page renders client-side and could not be read signed out — the guide should advise 3–5. (source, checked 2026-10-28)
  • Links in the text clickable: no — links in captions are plain text. The reference has no link field for feed posts or Reels; say "link in bio". (source, checked 2026-10-28)
  • Picture types: image/jpeg. JPEG only, sRGB. (source, checked 2026-10-28)
  • Picture size: 8000000 bytes at most. 8 MB. (source, checked 2026-10-28)
  • Picture shapes: 4:5 to 1.91:1. (source, checked 2026-10-28)
  • Best picture size: 1080×1350 (4:5); width 320–1440, others are scaled. Width range from the reference; 1080×1350 is the tallest ratio it allows at the common 1080 width. (source, checked 2026-10-28)
  • Video types: video/mp4, video/quicktime. MOV or MP4, no edit lists, moov atom at the front. (source, checked 2026-10-28)
  • Video encoding: H.264 or HEVC, progressive, closed GOP, 4:2:0; AAC ≤48 kHz mono/stereo 128 kbps; 23–60 fps; ≤25 Mbps; width ≤1920. (source, checked 2026-10-28)
  • Video shapes: 0.01:1 to 10:1, 9:16 recommended. (source, checked 2026-10-28)
  • Shortest video: 3 seconds. (source, checked 2026-10-28)
  • Cover PostTide sends: Reels: frame time thumb_offset (ms, default 0 = first frame) always; cover picture cover_url when set (JPEG ≤8 MB, 9:16, public URL; wins over thumb_offset; feed shows the middle 1:1 square). cover_url set at instagram-reels-pack.ts:42. Best cover: 1080×1920 JPEG with the subject in the middle square. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none — PostTide sends every cover option the API takes for Reels. (source, checked 2026-10-28)
  • Who can see it: public account content; share_to_feed true = Feed and Reels tabs, false = Reels tab only; trial reels (trial_params) show to non-followers first. PostTide sends share_to_feed only when false; no trial reels. (source, checked 2026-10-28)
  • Good times to post: Tuesdays 1–7 p.m. and Wednesdays 12–9 p.m., audience local time. Sprout Social 2026 study, ~2 billion engagements, 307k profiles, Nov 2025–Feb 2026. (source, checked 2026-10-28)

Facebook

Platform facebook · this section alone: posttide://guide/facebook.

What a post may carry in PostTide

  • Text: optional, at most 63206 characters (count it the network's way, below).
  • A post needs: nothing more — text alone is fine.
  • Pictures: no PostTide cap on how many.
  • Video: one per post, no PostTide size cap, no PostTide length cap.

The network's rules

  • Caption counting: characters. (source, checked 2026-10-28)
  • Shown before "more": Meta publishes no feed cut-off; its ads guide keeps primary text to 125 characters because longer text is truncated. Ad-text recommendation, not an organic rule. (source, checked 2026-10-28)
  • Hashtags: no cap published. (source, checked 2026-10-28)
  • Links in the text clickable: yes — links in the message are clickable and the feed endpoint takes a link preview. (source, checked 2026-10-28)
  • Picture types: image/jpeg, image/png, image/gif, image/bmp, image/tiff. (source, checked 2026-10-28)
  • Picture size: 4000000 bytes at most. 4 MB; keep PNGs under 1 MB or they may look pixelated. (source, checked 2026-10-28)
  • Picture shapes: any — Facebook resizes for each surface. (source, checked 2026-10-28)
  • Best picture size: no size required; Facebook resizes to several renditions. (source, checked 2026-10-28)
  • Video types: video/mp4. (source, checked 2026-10-28)
  • Video encoding: Reels: H.264 or H.265 (VP9, AV1 also); 24–60 fps fixed, progressive, closed GOP 2–5 s, 4:2:0; AAC-LC stereo 48 kHz ≥128 kbps. (source, checked 2026-10-28)
  • Video shapes: Reels 9:16 (1080×1920 recommended, min 540×960); Page videos any. PostTide posts every video as a Page video (/videos), never a Reel. (source, checked 2026-10-28)
  • Shortest video: Reels 3 s; Page videos not published. (source, checked 2026-10-28)
  • Cover PostTide sends: none — PostTide sends no thumbnail; Facebook picks a frame. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: Page videos take a thumb image (raw upload); Reels take a custom cover photo. Reels cover: https://developers.facebook.com/docs/video-api/guides/reels-publishing (source, checked 2026-10-28)
  • Who can see it: public Page post; no per-post audience chosen by PostTide. (source, checked 2026-10-28)
  • Good times to post: Tuesdays and Wednesdays 12–8 p.m., audience local time. Sprout Social 2026 study. (source, checked 2026-10-28)

X

Platform twitter · this section alone: posttide://guide/twitter.

What a post may carry in PostTide

  • Text: optional, at most 280 characters (count it the network's way, below).
  • A post needs: text, a picture or a video.
  • Pictures: up to 4 per post.
  • Video: one per post, at most 512 MB, no PostTide length cap.

The network's rules

  • Caption counting: weighted: Latin 1, CJK 2 (so 140), every emoji 2, every URL 23 (t.co); attached media 0. xWeightedLength implements this; use postLength('twitter', text). (source, checked 2026-10-28)
  • Shown before "more": the whole 280-weight post shows; no fold. (source, checked 2026-10-28)
  • Hashtags: no cap published (hashtags count toward the 280). (source, checked 2026-10-28)
  • Links in the text clickable: yes — every URL becomes a t.co link worth 23. (source, checked 2026-10-28)
  • Picture types: image/jpeg, image/png, image/gif, image/webp. (source, checked 2026-10-28)
  • Picture size: 5000000 bytes at most. 5 MB; animated GIF 15 MB (≤1280×1080, ≤350 frames). (source, checked 2026-10-28)
  • Picture shapes: not published for images. (source, checked 2026-10-28)
  • Best picture size: not published for images; video best sizes 1280×720, 720×1280, 720×720. (source, checked 2026-10-28)
  • Video types: video/mp4. The page names codecs, not containers; MP4 is the container for H.264/AAC. (source, checked 2026-10-28)
  • Video encoding: H.264 High Profile, YUV 4:2:0, progressive, closed GOP; AAC-LC mono/stereo (no HE-AAC); ≤60 fps; ≥5000 kbps video, ≥128 kbps audio recommended. (source, checked 2026-10-28)
  • Video shapes: 1:3 to 3:1 (16:9 and 1:1 recommended); 32×32 to 1280×1024. (source, checked 2026-10-28)
  • Shortest video: 0.5 seconds. (source, checked 2026-10-28)
  • Cover PostTide sends: none — X picks the frame. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none published — the media best-practices page lists no cover option. (source, checked 2026-10-28)
  • Who can see it: public post; no per-post audience chosen by PostTide. (source, checked 2026-10-28)
  • Good times to post: Tuesdays, Wednesdays and Thursdays 12–6 p.m., audience local time. Sprout Social 2026 study. (source, checked 2026-10-28)

LinkedIn

Platform linkedin · this section alone: posttide://guide/linkedin.

What a post may carry in PostTide

  • Text: optional, at most 3000 characters (count it the network's way, below).
  • A post needs: text, a picture or a video.
  • Pictures: up to 1 per post.
  • Video: one per post, at most 500 MB, at most 1800 seconds.

The network's rules

  • Caption counting: characters; the API commentary is "little" text format (mentions and hashtags as annotated tokens). (source, checked 2026-10-28)
  • Shown before "more": LinkedIn publishes no "see more" cut-off. Put the hook in the first two lines. (source, checked 2026-10-28)
  • Hashtags: no cap published. (source, checked 2026-10-28)
  • Links in the text clickable: yes — URLs in commentary are clickable. (source, checked 2026-10-28)
  • Picture types: image/jpeg, image/png, image/gif. GIF up to 250 frames. (source, checked 2026-10-28)
  • Picture size: no byte cap published; under 36,152,320 pixels. (source, checked 2026-10-28)
  • Picture shapes: not published for organic posts. (source, checked 2026-10-28)
  • Best picture size: not published; any size under 36,152,320 pixels. (source, checked 2026-10-28)
  • Video types: video/mp4. (source, checked 2026-10-28)
  • Video encoding: not published on the Videos API page (MP4). (source, checked 2026-10-28)
  • Video shapes: not published for organic posts (the API reports the ratio after processing). (source, checked 2026-10-28)
  • Shortest video: 3 seconds. (source, checked 2026-10-28)
  • Cover PostTide sends: none — PostTide sets uploadThumbnail false; LinkedIn makes one. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: Videos API takes a thumbnail picture (uploadThumbnail → thumbnailUploadUrl) and one English captions file (SRT). (source, checked 2026-10-28)
  • Who can see it: visibility PUBLIC (also CONNECTIONS / LOGGED_IN on the Posts API). (source, checked 2026-10-28)
  • Good times to post: Tuesdays through Thursdays 11 a.m.–5 p.m., audience local time. Sprout Social 2026 study. (source, checked 2026-10-28)

TikTok

Platform tiktok · this section alone: posttide://guide/tiktok.

What a post may carry in PostTide

  • Text: optional, at most 2200 characters (count it the network's way, below).
  • A post needs: a video.
  • Pictures: none — this network takes no pictures from PostTide.
  • Video: one per post, at most 500 MB, at most 300 seconds.

The network's rules

  • Caption counting: UTF-16 code units; # and @ are matched, delimited by spaces or new lines. Same as PostTide's text.length. (source, checked 2026-10-28)
  • Shown before "more": TikTok publishes no cut-off. (source, checked 2026-10-28)
  • Hashtags: no cap published (hashtags count toward the 2200). (source, checked 2026-10-28)
  • Links in the text clickable: no — the post API has no link field; caption URLs are text. (source, checked 2026-10-28)
  • Picture types: image/jpeg, image/webp. TikTok takes photo posts; PostTide publishes video only. (source, checked 2026-10-28)
  • Picture size: 20000000 bytes at most. 20 MB, max 1080p — photo posts, which PostTide does not send. (source, checked 2026-10-28)
  • Picture shapes: not published; max 1080p. (source, checked 2026-10-28)
  • Best picture size: up to 1080p (photo posts, not sent by PostTide). (source, checked 2026-10-28)
  • Video types: video/mp4, video/webm, video/quicktime. MP4 recommended. (source, checked 2026-10-28)
  • Video encoding: H.264 (recommended), H.265, VP8, VP9; 23–60 fps; 360–4096 px each side. (source, checked 2026-10-28)
  • Video shapes: not published (any within 360–4096 px each side); vertical 9:16 is the app's native shape. (source, checked 2026-10-28)
  • Shortest video: not published. (source, checked 2026-10-28)
  • Cover PostTide sends: frame time only: video_cover_timestamp_ms (default 0). (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none — the direct-post API takes a frame time, no cover picture. (source, checked 2026-10-28)
  • Who can see it: the person must pick privacy from creator_info's options in a dropdown with no default; comments/duet/stitch off until they turn them on; branded content cannot be private; consent shown before upload; unaudited apps post SELF_ONLY. "Users must manually select the privacy status from a dropdown and there should be no default value." PostTide sends SELF_ONLY until app review (tiktok-pack.ts:43) and otherwise the TIKTOK_PRIVACY_LEVEL env default (tiktok-pack.ts:45) — task 8 applies. (source, checked 2026-10-28)
  • Good times to post: Tuesdays through Fridays 2–6 p.m., audience local time. Sprout Social 2026 study. (source, checked 2026-10-28)

YouTube

Platform youtube · this section alone: posttide://guide/youtube.

What a post may carry in PostTide

  • Text: optional, at most 5000 characters (count it the network's way, below).
  • A post needs: a video.
  • Pictures: none — this network takes no pictures from PostTide.
  • Video: one per post, at most 256000 MB, no PostTide length cap.

The network's rules

  • Caption counting: title in characters; description in UTF-8 bytes (an emoji is 4). postLength counts UTF-16 units, not bytes; the uploader trims by bytes at youtube-upload-pack.ts:54. (source, checked 2026-10-28)
  • Shown before "more": not published. (source, checked 2026-10-28)
  • Hashtags: 60 at most. "If a video or playlist has more than 60 hashtags, we'll ignore each hashtag." Tags field: 500 characters total. (source, checked 2026-10-28)
  • Links in the text clickable: yes in the description. (source, checked 2026-10-28)
  • Picture types: none — video only (thumbnails: image/jpeg, image/png). (source, checked 2026-10-28)
  • Picture size: thumbnails: 2 MB (app) / 50 MB (desktop and API). thumbnails.set reference: max 50MB. (source, checked 2026-10-28)
  • Picture shapes: thumbnail 16:9 (Shorts 9:16). (source, checked 2026-10-28)
  • Best picture size: thumbnail 1280×720 or larger, min width 640; YouTube recommends 3840×2160 (Shorts 2160×3840). (source, checked 2026-10-28)
  • Video types: video/* (any video type). (source, checked 2026-10-28)
  • Video encoding: not limited by the API (video/*). (source, checked 2026-10-28)
  • Video shapes: any; 16:9 for videos, vertical or square for Shorts. (source, checked 2026-10-28)
  • Shortest video: not published. (source, checked 2026-10-28)
  • Cover PostTide sends: thumbnail picture via thumbnails.set after upload (JPEG/PNG; a failure is a warning, the video stays). Custom thumbnails need a verified channel (support answer 72431). (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none — YouTube's API takes a thumbnail picture only. (source, checked 2026-10-28)
  • Who can see it: privacyStatus private / unlisted / public (omitted = public); "Videos uploaded from unverified API projects are not restricted to private viewing mode."; selfDeclaredMadeForKids is the channel owner's declaration. PostTide defaults privacy to private when none is set (video-pack.ts). (source, checked 2026-10-28)
  • Good times to post: no YouTube window in the study; overall best Tuesdays and Wednesdays 11 a.m.–6 p.m., audience local time. Sprout Social 2026 study, overall figure. (source, checked 2026-10-28)

Pinterest

Platform pinterest · this section alone: posttide://guide/pinterest.

What a post may carry in PostTide

  • Text: optional, at most 500 characters (count it the network's way, below).
  • A post needs: a picture.
  • Pictures: up to 1 per post.
  • Video: none — this network takes no video from PostTide.

The network's rules

  • Caption counting: characters. (source, checked 2026-10-28)
  • Shown before "more": first 40 characters of the title may show; descriptions do not appear in the home or search feed. (source, checked 2026-10-28)
  • Hashtags: no cap published. (source, checked 2026-10-28)
  • Links in the text clickable: yes — the Pin's destination link. (source, checked 2026-10-28)
  • Picture types: image/png, image/jpeg. (source, checked 2026-10-28)
  • Picture size: 20000000 bytes at most. Desktop 20 MB, in-app 32 MB. (source, checked 2026-10-28)
  • Picture shapes: 2:3 recommended; wider may be cut off in feeds. (source, checked 2026-10-28)
  • Best picture size: 1000×1500. (source, checked 2026-10-28)
  • Video types: video/mp4, video/quicktime, video/x-m4v. Pinterest takes video Pins; PostTide publishes images only. (source, checked 2026-10-28)
  • Video encoding: not published on the specs page. (source, checked 2026-10-28)
  • Video shapes: 1:1 or vertical 2:3, 4:5, 9:16. (source, checked 2026-10-28)
  • Shortest video: 4 seconds. (source, checked 2026-10-28)
  • Cover PostTide sends: none — PostTide sends image Pins only. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: video Pins take a cover picture (cover_image_url / cover_image_data) or a key-frame time (cover_image_key_frame_time). Pinterest's own developer community; the v5 API reference renders client-side and could not be read signed out. (source, checked 2026-10-28)
  • Who can see it: public Pin on the chosen board. (source, checked 2026-10-28)
  • Good times to post: Tuesdays, Wednesdays and Thursdays 10 a.m.–1 p.m., audience local time. Sprout Social 2026 study. (source, checked 2026-10-28)

Threads

Platform threads · this section alone: posttide://guide/threads.

What a post may carry in PostTide

  • Text: optional, at most 500 characters (count it the network's way, below).
  • A post needs: text, a picture or a video.
  • Pictures: up to 10 per post (a carousel).
  • Video: one per post, no PostTide size cap, no PostTide length cap.

The network's rules

  • Caption counting: characters, but an emoji counts as its UTF-8 byte length. PostTide checks text.length, so an emoji-heavy caption under 500 there can still be over Threads' count. (source, checked 2026-10-28)
  • Shown before "more": not published. (source, checked 2026-10-28)
  • Hashtags: one topic tag, 1–50 characters, no . or &. (source, checked 2026-10-28)
  • Links in the text clickable: yes — at most 5 unique links per post; text-only posts get a link preview (first link or link_attachment). Over 5 fails with THREADS_API__LINK_LIMIT_EXCEEDED since 22 Dec 2025. (source, checked 2026-10-28)
  • Picture types: image/jpeg, image/png. (source, checked 2026-10-28)
  • Picture size: 8000000 bytes at most. (source, checked 2026-10-28)
  • Picture shapes: up to 10:1. (source, checked 2026-10-28)
  • Best picture size: width 320–1440. (source, checked 2026-10-28)
  • Video types: video/mp4, video/quicktime. (source, checked 2026-10-28)
  • Video encoding: H.264 or HEVC; AAC ≤48 kHz; 23–60 fps; width ≤1920. (source, checked 2026-10-28)
  • Video shapes: 0.01:1 to 10:1, 9:16 recommended. (source, checked 2026-10-28)
  • Shortest video: more than 0. (source, checked 2026-10-28)
  • Cover PostTide sends: none — Threads picks the frame. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none published. (source, checked 2026-10-28)
  • Who can see it: public post; no per-post audience chosen by PostTide. (source, checked 2026-10-28)
  • Good times to post: no Threads window in the study; overall best Tuesdays and Wednesdays 11 a.m.–6 p.m., audience local time. (source, checked 2026-10-28)

Bluesky

Platform bluesky · this section alone: posttide://guide/bluesky.

What a post may carry in PostTide

  • Text: optional, at most 300 characters (count it the network's way, below).
  • A post needs: text, a picture or a video.
  • Pictures: up to 4 per post.
  • Video: one per post, at most 100 MB, no PostTide length cap.

The network's rules

  • Caption counting: graphemes (an emoji, even a joined one, is 1). postLength counts UTF-16 units (stricter); the publisher checks graphemes at bluesky.provider.ts:155. (source, checked 2026-10-28)
  • Shown before "more": the whole post shows; no fold. (source, checked 2026-10-28)
  • Hashtags: no cap in text; the separate tags field holds at most 8. (source, checked 2026-10-28)
  • Links in the text clickable: only when sent as facets (PostTide detects them). (source, checked 2026-10-28)
  • Picture types: image/*. (source, checked 2026-10-28)
  • Picture size: 2000000 bytes at most. PostTide recompresses to ≤1.9 MB. (source, checked 2026-10-28)
  • Picture shapes: any; send aspectRatio so the feed lays it out. (source, checked 2026-10-28)
  • Best picture size: not published. (source, checked 2026-10-28)
  • Video types: video/mp4. (source, checked 2026-10-28)
  • Video encoding: not published (MP4). (source, checked 2026-10-28)
  • Video shapes: any; send aspectRatio. (source, checked 2026-10-28)
  • Shortest video: not published. (source, checked 2026-10-28)
  • Cover PostTide sends: none — Bluesky makes the thumbnail. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: none — the video embed has no cover field (it takes alt text and VTT captions). (source, checked 2026-10-28)
  • Who can see it: public post; no per-post audience chosen by PostTide. (source, checked 2026-10-28)
  • Good times to post: no Bluesky window in the study; overall best Tuesdays and Wednesdays 11 a.m.–6 p.m., audience local time. (source, checked 2026-10-28)

Mastodon

Platform mastodon · this section alone: posttide://guide/mastodon.

What a post may carry in PostTide

  • Text: optional, at most 500 characters (count it the network's way, below).
  • A post needs: text, a picture or a video.
  • Pictures: up to 4 per post.
  • Video: one per post, at most 40 MB, no PostTide length cap.

The network's rules

  • Caption counting: characters; every URL counts 23; a mention counts only its username part. postLength counts URLs at full length (stricter). (source, checked 2026-10-28)
  • Shown before "more": the whole post shows unless it has a content warning, which collapses it. (source, checked 2026-10-28)
  • Hashtags: no cap published. (source, checked 2026-10-28)
  • Links in the text clickable: yes — links must start with http:// or https://. (source, checked 2026-10-28)
  • Picture types: image/png, image/jpeg, image/heif, image/webp, image/avif. (source, checked 2026-10-28)
  • Picture size: 16777216 bytes at most. Default image_size_limit; servers may differ; ≤33,177,600 pixels. (source, checked 2026-10-28)
  • Picture shapes: any; a focus point (x,y in -1..1) picks the crop. (source, checked 2026-10-28)
  • Best picture size: not published; under 33,177,600 pixels. (source, checked 2026-10-28)
  • Video types: video/mp4, video/x-m4v, video/quicktime, video/webm. (source, checked 2026-10-28)
  • Video encoding: not published; ≤120 fps, ≤8,294,400 pixels per frame by default. (source, checked 2026-10-28)
  • Video shapes: any. (source, checked 2026-10-28)
  • Shortest video: not published. (source, checked 2026-10-28)
  • Cover PostTide sends: none — PostTide sends no thumbnail. (source, checked 2026-10-28)
  • Cover the network takes that PostTide does not send: POST /api/v2/media takes a custom thumbnail image and a focus point. (source, checked 2026-10-28)
  • Who can see it: visibility public / unlisted / private / direct; a content warning hides the text and marks media sensitive. (source, checked 2026-10-28)
  • Good times to post: no Mastodon window in the study; overall best Tuesdays and Wednesdays 11 a.m.–6 p.m., audience local time. (source, checked 2026-10-28)

Errors and their fixes

ErrorFix
invalid_inputAn argument is wrong; the message names it. Fix that argument and call again.
not_foundThe id is wrong or outside this key’s reach. Take ids from channels_list / posts_list, never guess.
not_available_for_keyThe tool needs a whole-company key; this key is for one workspace. Tell the person.
insufficient_scopeA read-only key cannot write. Tell the person a write key is needed.
plan_requiredThe company’s plan does not include writing through the connection. Tell the person.
read_only_subscriptionThe subscription is past due; reading still works. Tell the person.
channel_needs_reconnectionA person reconnects that channel in PostTide (Channels); leave it out or wait.
not_a_draftThe post was approved or published; a person edits it in PostTide. Make a new draft if asked.
scheduling_horizonproposedAt is past the plan’s horizon; propose a nearer time or tell the person.
file_too_largeThe file is over the link’s maxBytes; make it smaller (re-encode, shorten) and ask again.
upload_link_expiredAsk media_upload_link for a new link and PUT the file again.
upload_link_usedA link takes one PUT; ask for a new link for another file.
upload_link_invalidUse the uploadUrl exactly as answered, quoted in the shell.
upload_size_mismatchThe PUT sent a different size than bytes; ask again with wc -c of the file.
upload_too_largeMore bytes arrived than bytes said; ask again with the file’s exact size.
upload_not_finishedPUT the file to its uploadUrl first, then attach it.
upload_links_unavailableThis server cannot take files; make a text-only draft or tell the person.
api_key_revokedThe key was revoked; a person makes a new one.
rate_limitedWait a few seconds and try again; do not loop quickly.
internal_errorSomething failed on PostTide’s side; try once more shortly, then tell the person.

Other tools

  • Read: posts_list (drafts waiting with needsApproval, scheduled and published posts), posts_get, channels_get, calendar_window, analytics_read (timelines, best times, top posts — match what works).
  • Edit a draft: drafts_update — only while it is a draft; an edit sends an approved draft back for approval.
  • Whole-company key only — workspaces: workspaces_list. Ideas: pins_list, pins_create (save an idea or link), pins_tag (put pins in a bucket). News feeds: feeds_list, feeds_subscribe (follow a feed), feed_items_list. Company structure (workspaces, accounts, channels): structure_export, structure_check (check a structure file), structure_apply (apply a checked file), structure_undo (undo a change), structure_move_preview, structure_changes, structure_health.
Claude guide — PostTide