{"info":{"name":"Reelspan API","description":"Publish videos, photos and text to every network from one call.\n\nAuthenticate with `Authorization: Bearer <your key>` (`Apikey <your key>` works too). Create keys in the dashboard under **API keys**.\nEvery endpoint lives under `https://api.reelspan.com/v1`. Publishing takes multipart form fields (or JSON for text posts) and answers\nwith each network’s result, or a request_id to poll when it runs in the background.\n\nSet the collection variable apiKey to a key from the dashboard (Developers → API keys). A test key (rs_test_…) runs every check without publishing.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://api.reelspan.com"},{"key":"apiKey","value":""}],"item":[{"name":"Publishing","description":"Post a video, photos or text to one or more networks, check each one’s result and retry what failed. Guide: https://reelspan.com/docs","item":[{"name":"Status of a publish request, per platform","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/status","host":["{{baseUrl}}"],"path":["v1","posts","status"],"variable":[],"query":[{"key":"request_id","value":"","description":"","disabled":true},{"key":"job_id","value":"","description":"","disabled":true}]},"description":"Poll every 5 seconds or more. Only platforms that have finished appear in `results`."}},{"name":"Upload history, one row per platform post","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/posts","host":["{{baseUrl}}"],"path":["v1","posts"],"variable":[],"query":[{"key":"page","value":"1","description":"","disabled":true},{"key":"limit","value":"10","description":"","disabled":true},{"key":"platform","value":"","description":"","disabled":true},{"key":"status","value":"success","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"profile","value":"","description":"","disabled":true},{"key":"request_id","value":"","description":"","disabled":true},{"key":"job_id","value":"","description":"","disabled":true},{"key":"external_id","value":"","description":"","disabled":true},{"key":"start","value":"","description":"","disabled":true},{"key":"end","value":"","description":"","disabled":true}]},"description":""}},{"name":"Save (repin) a Pinterest Pin to a board","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/save","host":["{{baseUrl}}"],"path":["v1","posts","save"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"platform\": \"pinterest\",\n  \"post_id\": \"\",\n  \"pinterest_board_id\": \"\",\n  \"pinterest_board_section_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Retry the platforms that failed","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/retry","host":["{{baseUrl}}"],"path":["v1","posts","retry"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"request_id\": \"\",\n  \"job_id\": \"\",\n  \"platforms\": [\n    \"\"\n  ],\n  \"fields\": {},\n  \"scheduled_date\": \"\",\n  \"timezone\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Delete a live post from the network","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/unpublish","host":["{{baseUrl}}"],"path":["v1","posts","unpublish"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"request_id\": \"\",\n  \"platform\": \"\",\n  \"user\": \"\",\n  \"profile_username\": \"\",\n  \"post_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Deletes the post on the network itself. Works on youtube, x, bluesky, facebook, pinterest, linkedin, threads, telegram, discord, mastodon, wordpress, google_business. YouTube and Threads answer 403 `permission_pending` until their permissions are approved (GET /v1/permissions). Instagram and TikTok have no delete in their APIs. Name the post with request_id (a post Reelspan published), or with platform, user and post_id. WordPress posts go to the site's trash; Telegram lets bots delete messages for 48 hours."}},{"name":"Edit a live post","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/edit","host":["{{baseUrl}}"],"path":["v1","posts","edit"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"request_id\": \"\",\n  \"platform\": \"\",\n  \"user\": \"\",\n  \"profile_username\": \"\",\n  \"post_id\": \"\",\n  \"text\": \"\",\n  \"message\": \"\",\n  \"commentary\": \"\",\n  \"title\": \"\",\n  \"description\": \"\",\n  \"fields\": {}\n}","options":{"raw":{"language":"json"}}},"description":"Changes a published post where the network allows it: youtube, x, facebook, pinterest, linkedin, telegram, discord, mastodon, wordpress, google_business. X edits need X Premium and make a new post id (returned, with `edit_history_post_ids`); the stored post follows it. LinkedIn changes only the commentary. Links stay off X unless `fields.x_keep_links` is true, as when posting."}},{"name":"Repost (reshare, boost) a post from the same account","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/repost","host":["{{baseUrl}}"],"path":["v1","posts","repost"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"request_id\": \"\",\n  \"platform\": \"\",\n  \"user\": \"\",\n  \"profile_username\": \"\",\n  \"post_id\": \"\",\n  \"commentary\": \"\",\n  \"target_linkedin_page_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Shares a post again from the profile’s account: x, bluesky, linkedin, threads, mastodon. Any public post works with platform, user and post_id, not only your own. X counts reposts against the account’s daily write limit."}},{"name":"Publish one photo or a carousel","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/photos","host":["{{baseUrl}}"],"path":["v1","posts","photos"],"variable":[],"query":[]},"body":{"mode":"formdata","formdata":[{"key":"user","type":"text","value":"","description":"Profile username","disabled":false},{"key":"platform[]","type":"text","value":"","description":"instagram, facebook, x, threads, bluesky, linkedin, pinterest, tiktok","disabled":false},{"key":"photo_cover_index","type":"text","value":"","description":"TikTok: the photo (0-based) shown as the cover","disabled":true},{"key":"auto_add_music","type":"text","value":"true","description":"TikTok: let TikTok add music to the photo post","disabled":true},{"key":"tiktok_description","type":"text","value":"","description":"TikTok: the photo post’s description (up to 4000); its title is the first 90 characters of the caption","disabled":true},{"key":"photos[]","type":"text","value":"","description":"Photo files (binary) or public https URLs, in order; up to 35. Instagram and Threads also take videos here for a mixed carousel; the other networks get the photos only.","disabled":true},{"key":"photo_media_ids[]","type":"text","value":"","description":"Photos (or, for a mixed carousel, videos) uploaded earlier with POST /v1/media/upload","disabled":true},{"key":"<platform>_photos[]","type":"text","value":"","description":"Public URLs a platform gets instead of photos[], e.g. pinterest_photos[] cropped to one shape","disabled":true},{"key":"<platform>_photo_media_ids[]","type":"text","value":"","description":"Uploaded photos a platform gets instead, e.g. instagram_photo_media_ids[]","disabled":true},{"key":"title","type":"text","value":"","description":"Caption","disabled":false},{"key":"facebook_media_type","type":"text","value":"FEED","description":"Facebook: STORIES shares each photo as its own Page Story","disabled":true},{"key":"media_type","type":"text","value":"FEED","description":"Instagram: STORIES shares each photo as a Story","disabled":true},{"key":"alt_text[]","type":"text","value":"","description":"Alt text per photo, in order (or one alt_text for every photo, or a JSON array). `{platform}_alt_text` overrides it for one network. Sent to X, Instagram, Facebook, Threads, LinkedIn, Pinterest and Bluesky.","disabled":true},{"key":"async_upload","type":"text","value":"true","description":"","disabled":true},{"key":"scheduled_date","type":"text","value":"","description":"","disabled":true},{"key":"timezone","type":"text","value":"","description":"","disabled":true},{"key":"repeat_every","type":"text","value":"day","description":"","disabled":true},{"key":"repeat_times","type":"text","value":"","description":"","disabled":true}]},"description":""}},{"name":"Publish a document (PDF, PowerPoint, Word) to LinkedIn","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/document","host":["{{baseUrl}}"],"path":["v1","posts","document"],"variable":[],"query":[]},"body":{"mode":"formdata","formdata":[{"key":"user","type":"text","value":"","description":"Profile username","disabled":false},{"key":"platform[]","type":"text","value":"","description":"linkedin","disabled":false},{"key":"document","type":"file","src":[],"description":"The PDF, PowerPoint (PPTX, PPT) or Word (DOCX, DOC) file (binary) or a public https URL; up to 100 MB and 300 pages"},{"key":"document_media_id","type":"text","value":"","description":"A document uploaded earlier with POST /v1/media/upload?kind=document","disabled":true},{"key":"title","type":"text","value":"","description":"The document’s title on LinkedIn (up to 400 characters)","disabled":false},{"key":"description","type":"text","value":"","description":"The post text above the document","disabled":true},{"key":"visibility","type":"text","value":"PUBLIC","description":"","disabled":true},{"key":"target_linkedin_page_id","type":"text","value":"","description":"Post as this Company Page","disabled":true},{"key":"first_comment","type":"text","value":"","description":"","disabled":true},{"key":"async_upload","type":"text","value":"true","description":"","disabled":true},{"key":"scheduled_date","type":"text","value":"","description":"","disabled":true},{"key":"timezone","type":"text","value":"","description":"","disabled":true},{"key":"repeat_every","type":"text","value":"day","description":"","disabled":true},{"key":"repeat_times","type":"text","value":"","description":"","disabled":true}]},"description":""}},{"name":"Publish a text-only post","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/text","host":["{{baseUrl}}"],"path":["v1","posts","text"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"user\": \"\",\n  \"platform[]\": [\n    \"\"\n  ],\n  \"title\": \"\",\n  \"facebook_link\": \"\",\n  \"poll_options\": [\n    \"\"\n  ],\n  \"poll_duration\": \"\",\n  \"poll_reply_settings\": \"\",\n  \"quote_tweet_id\": \"\",\n  \"card_uri\": \"\",\n  \"threads_poll_options\": [\n    \"\"\n  ],\n  \"threads_link_attachment\": \"\",\n  \"gbp_topic_type\": \"STANDARD\",\n  \"gbp_event_title\": \"\",\n  \"gbp_event_start\": \"\",\n  \"gbp_event_end\": \"\",\n  \"gbp_coupon_code\": \"\",\n  \"gbp_redeem_url\": \"\",\n  \"gbp_terms\": \"\",\n  \"scheduled_date\": \"\",\n  \"timezone\": \"\",\n  \"repeat_every\": \"day\",\n  \"repeat_times\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"JSON or multipart."}},{"name":"Start a large upload straight to storage (files over 100 MB)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/media/uploads","host":["{{baseUrl}}"],"path":["v1","media","uploads"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"kind\": \"video\",\n  \"size_bytes\": 0,\n  \"filename\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Returns one signed PUT URL per part. PUT each part (bytes from (part_number - 1) × part_size) to its URL, keep the ETag header of each response, then POST /media/uploads/{media_id}/complete with {parts: [{part_number, etag}]}. The returned media_id works as video_media_id or photo_media_ids[]. Requests through app.reelspan.com are limited to 100 MB each, so use this for anything bigger."}},{"name":"Finish a large upload; the stored file is checked (size, type) before it can be used","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/media/uploads/:media_id/complete","host":["{{baseUrl}}"],"path":["v1","media","uploads",":media_id","complete"],"variable":[{"key":"media_id","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"parts\": [\n    {\n      \"part_number\": 0,\n      \"etag\": \"\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Upload a video or photo once, to publish or write captions from later","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/media/upload","host":["{{baseUrl}}"],"path":["v1","media","upload"],"variable":[],"query":[{"key":"kind","value":"video","description":"","disabled":true}]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file (binary)"}]},"description":"Multipart field `file`. Use the returned media_id as video_media_id, photo_media_ids[] or <platform>_photo_media_ids[], or with adapt-captions."}},{"name":"Publish a video to one or more networks","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/posts/video","host":["{{baseUrl}}"],"path":["v1","posts","video"],"variable":[],"query":[]},"body":{"mode":"formdata","formdata":[{"key":"user","type":"text","value":"","description":"Profile username","disabled":false},{"key":"platform[]","type":"text","value":"","description":"Networks to publish to, repeated: tiktok, youtube, instagram, facebook, x, threads, linkedin, pinterest, bluesky, telegram, discord, mastodon, wordpress, reddit, google_business, slack, nostr, lemmy, devto, hashnode, whop, listmonk.","disabled":false},{"key":"video","type":"file","src":[],"description":"The video file (binary), or a public https URL"},{"key":"title","type":"text","value":"","description":"Default caption; required for YouTube","disabled":true},{"key":"description","type":"text","value":"","description":"","disabled":true},{"key":"async_upload","type":"text","value":"true","description":"Return immediately with a request_id","disabled":true},{"key":"scheduled_date","type":"text","value":"","description":"ISO-8601; returns 202 with a job_id","disabled":true},{"key":"timezone","type":"text","value":"","description":"IANA zone for scheduled_date (default UTC)","disabled":true},{"key":"repeat_every","type":"text","value":"day","description":"Post the same thing again every day, week or month. Every post of the series is scheduled now, keeps the same local time in `timezone`, and can be edited or cancelled on its own; the response lists them under `repeat`.","disabled":true},{"key":"repeat_times","type":"text","value":"","description":"How many posts in the series, 2 to 30, the first included. Each counts as an upload.","disabled":true},{"key":"external_id","type":"text","value":"","description":"","disabled":true},{"key":"request_id","type":"text","value":"","description":"Your own id, 8-100 characters, to poll even if the response is lost","disabled":true},{"key":"first_comment_media[]","type":"text","value":"","description":"Up to 4 images (files or public URLs) attached to the first comment on X, Bluesky, Mastodon, Telegram and Reddit","disabled":true},{"key":"first_comment","type":"text","value":"","description":"Posted as the first comment (a reply on X, Bluesky and Threads) right after the post goes live. `{platform}_first_comment` overrides it for one platform. Where a platform has no comments API, or refuses it, the post still counts and its result carries `first_comment` and a warning.","disabled":true},{"key":"video_media_id","type":"text","value":"","description":"A video uploaded earlier with POST /v1/media/upload, instead of `video`","disabled":true},{"key":"thumbnail_media_id","type":"text","value":"","description":"An image uploaded earlier with POST /v1/media/upload?kind=photo, used as the YouTube thumbnail (or send thumbnail_url)","disabled":true},{"key":"cover_media_id","type":"text","value":"","description":"An image uploaded earlier, used as the TikTok cover (or send cover_url)","disabled":true},{"key":"bluesky_compress","type":"text","value":"true","description":"Compress a video over 100 MB so Bluesky takes it (only when set)","disabled":true},{"key":"privacy_level","type":"text","value":"","description":"TikTok: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY","disabled":true},{"key":"post_mode","type":"text","value":"DIRECT_POST","description":"TikTok: MEDIA_UPLOAD sends it to the TikTok inbox to finish in the app","disabled":true},{"key":"youtube_title","type":"text","value":"","description":"","disabled":true},{"key":"youtube_description","type":"text","value":"","description":"","disabled":true},{"key":"tags[]","type":"text","value":"","description":"","disabled":true},{"key":"privacyStatus","type":"text","value":"public","description":"","disabled":true},{"key":"instagram_title","type":"text","value":"","description":"","disabled":true},{"key":"facebook_title","type":"text","value":"","description":"","disabled":true},{"key":"facebook_media_type","type":"text","value":"REELS","description":"Facebook: a Reel (default), a regular Page video (any shape, with a title) or a Page Story","disabled":true},{"key":"media_type","type":"text","value":"REELS","description":"Instagram: a Reel (default) or a Story","disabled":true},{"key":"x_title","type":"text","value":"","description":"","disabled":true},{"key":"tiktok_title","type":"text","value":"","description":"","disabled":true},{"key":"hasPaidProductPlacement","type":"text","value":"true","description":"YouTube: the video has paid product placement","disabled":true},{"key":"facebook_unpublished_content_type","type":"text","value":"SCHEDULED","description":"Facebook VIDEO: keep it off the Page as this kind","disabled":true},{"key":"facebook_no_story","type":"text","value":"true","description":"Facebook: post without a feed story","disabled":true},{"key":"facebook_place_id","type":"text","value":"","description":"Facebook: tag a place (Page id of the place)","disabled":true},{"key":"x_quote_tweet_id","type":"text","value":"","description":"X: quote this post (also quote_tweet_id)","disabled":true},{"key":"tagged_user_ids","type":"text","value":"","description":"X: user ids tagged in the media, comma-separated (up to 10)","disabled":true},{"key":"exclude_reply_user_ids","type":"text","value":"","description":"X: with reply_to_id, leave these user ids out of the reply","disabled":true},{"key":"geo_place_id","type":"text","value":"","description":"X: a place id","disabled":true},{"key":"for_super_followers_only","type":"text","value":"true","description":"X: subscribers only","disabled":true},{"key":"share_with_followers","type":"text","value":"true","description":"X: with community_id, also show it to followers","disabled":true},{"key":"threads_reply_to_id","type":"text","value":"","description":"Threads: reply to this post","disabled":true},{"key":"threads_quote_post_id","type":"text","value":"","description":"Threads: quote this post","disabled":true},{"key":"bluesky_labels","type":"text","value":"","description":"Bluesky: content warnings, comma-separated: sexual, nudity, porn, graphic-media","disabled":true},{"key":"bluesky_threadgate","type":"text","value":"","description":"Bluesky: who may reply: nobody, or any of mention, following, followers (comma-separated)","disabled":true},{"key":"bluesky_postgate","type":"text","value":"no_quotes","description":"Bluesky: nobody may quote it","disabled":true},{"key":"bluesky_quote_uri","type":"text","value":"","description":"Bluesky: quote this post (at:// URI)","disabled":true},{"key":"bluesky_reply_to_id","type":"text","value":"","description":"Bluesky: reply to this post (at:// URI)","disabled":true},{"key":"discord_thread_id","type":"text","value":"","description":"Discord: post into this thread","disabled":true},{"key":"discord_thread_name","type":"text","value":"","description":"Discord: in a forum channel, start a post with this title","disabled":true},{"key":"discord_flags","type":"text","value":"","description":"Discord: suppress_embeds and/or suppress_notifications, comma-separated","disabled":true},{"key":"discord_max_file_mb","type":"text","value":"","description":"Discord: a boosted server’s file limit in MB (10 to 100, default 10)","disabled":true},{"key":"telegram_parse_mode","type":"text","value":"HTML","description":"Telegram: how the text is formatted","disabled":true},{"key":"telegram_has_spoiler","type":"text","value":"true","description":"Telegram: blur the media until tapped","disabled":true},{"key":"telegram_as_document","type":"file","src":[],"description":"Telegram: send the file uncompressed, as a document"},{"key":"telegram_disable_notification","type":"text","value":"true","description":"Telegram: post silently","disabled":true},{"key":"telegram_protect_content","type":"text","value":"true","description":"Telegram: no forwarding or saving","disabled":true},{"key":"wordpress_excerpt","type":"text","value":"","description":"","disabled":true},{"key":"wordpress_slug","type":"text","value":"","description":"","disabled":true}]},"description":"Multipart upload. Waits up to 59 s for the result, then switches to background processing. Send `Idempotency-Key` to make retries safe."}},{"name":"Set a new thumbnail on a published YouTube video","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/youtube/thumbnail","host":["{{baseUrl}}"],"path":["v1","youtube","thumbnail"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"user\": \"\",\n  \"video_id\": \"\",\n  \"request_id\": \"\",\n  \"thumbnail_url\": \"\",\n  \"thumbnail_media_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"JPEG, PNG, GIF or BMP up to 2 MB, as a multipart `thumbnail` file, a `thumbnail_url` or a `thumbnail_media_id`. Custom thumbnails need a verified channel (youtube.com/verify); YouTube answers 403 otherwise. Shorts don’t show custom thumbnails."}}]},{"name":"Scheduling","description":"List, edit and cancel posts set for a later time.","item":[{"name":"List scheduled posts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled","host":["{{baseUrl}}"],"path":["v1","scheduled"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":true},{"key":"from","value":"","description":"","disabled":true},{"key":"to","value":"","description":"","disabled":true},{"key":"limit","value":"50","description":"","disabled":true},{"key":"offset","value":"0","description":"","disabled":true}]},"description":""}},{"name":"Get a scheduled post","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled/:job_id","host":["{{baseUrl}}"],"path":["v1","scheduled",":job_id"],"variable":[{"key":"job_id","value":"","description":""}],"query":[]},"description":""}},{"name":"Reschedule or edit a scheduled post","request":{"method":"PATCH","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled/:job_id","host":["{{baseUrl}}"],"path":["v1","scheduled",":job_id"],"variable":[{"key":"job_id","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"scheduled_date\": \"\",\n  \"timezone\": \"\",\n  \"title\": \"\",\n  \"description\": \"\",\n  \"caption\": \"\",\n  \"platform_content\": {},\n  \"fields\": {},\n  \"cover_image_base64\": \"\",\n  \"cover_image_url\": \"\",\n  \"cover_media_id\": \"\",\n  \"remove_cover\": false\n}","options":{"raw":{"language":"json"}}},"description":"Change the time, the text (overall or per network with `platform_content`), any upload field, and the cover of a video post. The video or photos, profile and networks cannot change. Fails with 409 (`scheduled_post_in_progress`) once publishing has started or within a minute of the time."}},{"name":"Cancel a scheduled post and refund its upload credits","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled/:job_id","host":["{{baseUrl}}"],"path":["v1","scheduled",":job_id"],"variable":[{"key":"job_id","value":"","description":""}],"query":[{"key":"series","value":"rest","description":"`rest` also cancels the later posts of a repeating series","disabled":true}]},"description":""}},{"name":"A small image of a scheduled post","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled/:job_id/thumbnail","host":["{{baseUrl}}"],"path":["v1","scheduled",":job_id","thumbnail"],"variable":[{"key":"job_id","value":"","description":""}],"query":[{"key":"format","value":"image","description":"","disabled":true}]},"description":"A 480 px wide JPEG: a frame of the video, or the cover or first photo. Redirects (302) to a signed link valid for an hour; `?format=json` returns the link instead. The first request makes the image, so it can take a few seconds."}},{"name":"Signed links to the media of a scheduled post","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/scheduled/:job_id/preview","host":["{{baseUrl}}"],"path":["v1","scheduled",":job_id","preview"],"variable":[{"key":"job_id","value":"","description":""}],"query":[]},"description":"Every file the post will publish (video, photos, cover, thumbnail, document), each with a link valid for an hour, so a calendar or review screen can play or show it."}}]},{"name":"Queue","description":"The posting schedule “Add to queue” fills: days, times and the next free slot.","item":[{"name":"Read a profile’s queue: posting slots, days and capacity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/settings","host":["{{baseUrl}}"],"path":["v1","queue","settings"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":false}]},"description":""}},{"name":"Set a profile’s queue","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/settings","host":["{{baseUrl}}"],"path":["v1","queue","settings"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"timezone\": \"\",\n  \"slots\": [\n    {\n      \"hour\": 0,\n      \"minute\": 0\n    }\n  ],\n  \"days_of_week\": [\n    0\n  ],\n  \"max_posts_per_slot\": 0\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Upcoming queue slots and how full they are","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/preview","host":["{{baseUrl}}"],"path":["v1","queue","preview"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":false},{"key":"count","value":"10","description":"","disabled":true}]},"description":""}},{"name":"The next slot with room","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/next-slot","host":["{{baseUrl}}"],"path":["v1","queue","next-slot"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":false}]},"description":""}},{"name":"Mark a slot as full","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/slot-full","host":["{{baseUrl}}"],"path":["v1","queue","slot-full"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"slot_datetime\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Open a slot that was marked full","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/queue/slot-full","host":["{{baseUrl}}"],"path":["v1","queue","slot-full"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"slot_datetime\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}}]},{"name":"Profiles","description":"Profiles are brands or clients, each with its own connected accounts.","item":[{"name":"List profiles and their connected accounts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/profiles","host":["{{baseUrl}}"],"path":["v1","profiles"],"variable":[],"query":[]},"description":""}},{"name":"Create a profile","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/profiles","host":["{{baseUrl}}"],"path":["v1","profiles"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"username\": \"\",\n  \"display_name\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"A profile is the `user` you publish as. It can connect one account per network."}},{"name":"Delete a profile and disconnect all its accounts","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/profiles","host":["{{baseUrl}}"],"path":["v1","profiles"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"username\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Get one profile","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/profiles/:username","host":["{{baseUrl}}"],"path":["v1","profiles",":username"],"variable":[{"key":"username","value":"","description":""}],"query":[]},"description":""}},{"name":"Change a profile’s display name","request":{"method":"PATCH","header":[],"url":{"raw":"{{baseUrl}}/v1/profiles/:username","host":["{{baseUrl}}"],"path":["v1","profiles",":username"],"variable":[{"key":"username","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"display_name\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Connect a network with credentials","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/accounts/:platform","host":["{{baseUrl}}"],"path":["v1","accounts",":platform"],"variable":[{"key":"platform","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"brand\",\n  \"webhook_url\": \"https://discord.com/api/webhooks/123/abc\"\n}","options":{"raw":{"language":"json"}}},"description":"For the networks that connect with a token, key or webhook instead of an OAuth sign-in. The credentials are checked with the network before they are saved, encrypted. Connecting again replaces the account on that profile.\n\nFields per network (Upload-Post’s names are accepted too, shown in brackets):\n- **bluesky**: `identifier` (handle or email), `app_password`\n- **telegram**: `bot_token`, `chat` [`chat_id`]\n- **discord**: `webhook_url`\n- **slack**: `webhook_url` and optionally `name`; or `bot_token` and `channel` to upload files\n- **mastodon**: `server` [`instance_url`], `access_token`\n- **wordpress**: `site` [`site_url`], `username`, `app_password` [`application_password`]\n- **devto**: `api_key`\n- **hashnode**: `token` [`pat`], `blog` [`publication_id`] (needed with more than one blog)\n- **lemmy**: `server` [`instance_url`], `username`, `password` (used once, not kept), `community`\n- **listmonk**: `server` [`instance_url`], `user` [`username`], `token` [`password`], `list` [`list_id`]\n- **whop**: `api_key`, `forum` [`experience_id`]; or `company_id` alone for the public forum\n- **nostr**: `nsec` [`private_key`], `relays` (optional, a list or space-separated)"}},{"name":"Disconnect one network from a profile","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/accounts","host":["{{baseUrl}}"],"path":["v1","accounts"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"social_platform\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Idempotent: disconnecting a network that is not connected also returns 200."}}]},{"name":"White-label","description":"Hosted connect links, so clients connect their own accounts to a profile without a Reelspan login.","item":[{"name":"Create a hosted connect link for a profile","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/connect-links","host":["{{baseUrl}}"],"path":["v1","connect-links"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"redirect_url\": \"\",\n  \"logo_image\": \"\",\n  \"redirect_button_text\": \"\",\n  \"connect_title\": \"\",\n  \"connect_description\": \"\",\n  \"platforms\": [\n    \"\"\n  ],\n  \"show_calendar\": false,\n  \"readonly_calendar\": false,\n  \"language\": \"en\",\n  \"ui_labels\": {},\n  \"connect_theme\": \"light\",\n  \"username\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Returns a link (valid 48 hours) where your client connects their own accounts to the profile, without a Reelspan login. Logo, texts, labels and theme need a plan with white-label; the settings are remembered for the next link."}},{"name":"Check a connect token (send it as Bearer)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/connect-links/validate","host":["{{baseUrl}}"],"path":["v1","connect-links","validate"],"variable":[],"query":[]},"description":""}},{"name":"Start an OAuth connection (Connect API)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/oauth/:platform/start","host":["{{baseUrl}}"],"path":["v1","oauth",":platform","start"],"variable":[{"key":"platform","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"redirect_url\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"For your own connect page. Authenticate with a connect token (Bearer, from generate-jwt) or an API key plus `profile`. Send the user to `authorize_url`; they come back to `redirect_url` with `connect_status=success|cancelled|error`, `platform`, and on errors `error_code` and `error_description`."}}]},{"name":"Webhooks","description":"Get each network’s result and account changes pushed to your server, signed with HMAC-SHA256. Guide: https://reelspan.com/docs/webhooks","item":[{"name":"Read the account webhook settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook","host":["{{baseUrl}}"],"path":["v1","webhook"],"variable":[],"query":[]},"description":""}},{"name":"Set the account webhook","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook","host":["{{baseUrl}}"],"path":["v1","webhook"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"channels\": {\n    \"webhook\": false\n  },\n  \"webhook_url\": \"\",\n  \"webhook_events\": [\n    \"\"\n  ]\n}","options":{"raw":{"language":"json"}}},"description":"Events: upload_completed, social_account_connected, social_account_disconnected, social_account_reauth_required. Deliveries are signed: `X-Reelspan-Signature: sha256=HMAC_SHA256(secret, \"<X-Reelspan-Timestamp>.<raw body>\")`, and retried for up to 24 hours."}},{"name":"Remove the account webhook","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook","host":["{{baseUrl}}"],"path":["v1","webhook"],"variable":[],"query":[]},"description":""}},{"name":"Rotate the account webhook signing secret","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook/secret","host":["{{baseUrl}}"],"path":["v1","webhook","secret"],"variable":[],"query":[]},"description":""}},{"name":"Send a test event to the account webhook","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook/test","host":["{{baseUrl}}"],"path":["v1","webhook","test"],"variable":[],"query":[]},"description":""}},{"name":"Read a profile’s own webhook","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/profile-webhook","host":["{{baseUrl}}"],"path":["v1","profile-webhook"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":false}]},"description":""}},{"name":"Set a profile’s own webhook (sent in addition to the account webhook)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/profile-webhook","host":["{{baseUrl}}"],"path":["v1","profile-webhook"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"webhook_url\": \"\",\n  \"webhook_events\": [\n    \"\"\n  ]\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Remove a profile’s webhook","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/profile-webhook","host":["{{baseUrl}}"],"path":["v1","profile-webhook"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Recent webhook deliveries with their status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook/deliveries","host":["{{baseUrl}}"],"path":["v1","webhook","deliveries"],"variable":[],"query":[{"key":"limit","value":"50","description":"","disabled":true}]},"description":""}},{"name":"Send a delivery again","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/webhook/deliveries/:id/redeliver","host":["{{baseUrl}}"],"path":["v1","webhook","deliveries",":id","redeliver"],"variable":[{"key":"id","value":"","description":""}],"query":[]},"description":""}}]},{"name":"Approvals","description":"Send scheduled posts to a client, who approves each one or asks for changes from a link, without an account.","item":[{"name":"Approval links, newest first, with how many posts are approved","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/approval-links","host":["{{baseUrl}}"],"path":["v1","approval-links"],"variable":[],"query":[{"key":"profile_username","value":"","description":"","disabled":true}]},"description":""}},{"name":"Send scheduled posts to a client for approval","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/approval-links","host":["{{baseUrl}}"],"path":["v1","approval-links"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile_username\": \"\",\n  \"job_ids\": [\n    \"\"\n  ],\n  \"request_ids\": [\n    \"\"\n  ],\n  \"title\": \"\",\n  \"note\": \"\",\n  \"expires_in_days\": 0\n}","options":{"raw":{"language":"json"}}},"description":"Each post waits for the client’s approval before it publishes; approving one whose time has passed publishes it at once. Editing a post sends it back for approval. A post leaves any link it was in before."}},{"name":"Delete a link: its posts stop waiting and publish as scheduled","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/approval-links/:id","host":["{{baseUrl}}"],"path":["v1","approval-links",":id"],"variable":[{"key":"id","value":"","description":""}],"query":[]},"description":""}}]},{"name":"Media","description":"Upload files ahead of a post, and keep them in the media library to post again.","item":[{"name":"The media library, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/library","host":["{{baseUrl}}"],"path":["v1","library"],"variable":[],"query":[{"key":"kind","value":"video","description":"","disabled":true},{"key":"limit","value":"","description":"1 to 100, default 48","disabled":true},{"key":"before","value":"","description":"next_before from the previous page","disabled":true}]},"description":""}},{"name":"Keep uploaded media in the library","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/library","host":["{{baseUrl}}"],"path":["v1","library"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"media_ids\": [\n    \"\"\n  ],\n  \"title\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Kept media is never deleted by retention and counts against the plan’s library space."}},{"name":"Import a file into the library from a link","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/library/import","host":["{{baseUrl}}"],"path":["v1","library","import"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"url\": \"\",\n  \"title\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"A Google Drive or Dropbox share link (shared as “anyone with the link”), or any public https link to a video, photo or PDF. The file is copied in and kept."}},{"name":"Take media out of the library","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/library/:media_id","host":["{{baseUrl}}"],"path":["v1","library",":media_id"],"variable":[{"key":"media_id","value":"","description":""}],"query":[]},"description":"The file is deleted once no post waiting to go out uses it."}},{"name":"Download a library file (redirects to a short-lived link)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/library/:media_id/file","host":["{{baseUrl}}"],"path":["v1","library",":media_id","file"],"variable":[{"key":"media_id","value":"","description":""}],"query":[]},"description":""}}]},{"name":"Analytics","description":"Account and post numbers from each network.","item":[{"name":"Reddit posts of a profile’s account, with score, comments, views and media","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/reddit/posts","host":["{{baseUrl}}"],"path":["v1","reddit","posts"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true},{"key":"limit","value":"25","description":"","disabled":true},{"key":"after","value":"","description":"","disabled":true}]},"description":"The account’s own submissions when Reddit lets the app list them; otherwise the posts Reelspan published for the profile (`source` says which). Page with `after`."}},{"name":"Impressions and views added up over a period, per network and per day","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/:profile_username/impressions","host":["{{baseUrl}}"],"path":["v1","analytics",":profile_username","impressions"],"variable":[{"key":"profile_username","value":"","description":""}],"query":[{"key":"days","value":"0","description":"The last N days (default 30)","disabled":true},{"key":"start_date","value":"","description":"Or a range: YYYY-MM-DD, with end_date","disabled":true},{"key":"end_date","value":"","description":"Inclusive","disabled":true},{"key":"platforms","value":"","description":"Comma-separated","disabled":true},{"key":"metrics","value":"","description":"Comma-separated, default impressions,views","disabled":true}]},"description":"Over the posts the profile published in the period, from the readings Reelspan keeps (each post is read about two days after it goes out, so the last two days fill in later). `metrics` picks other post numbers to add up (likes, comments, shares…)."}},{"name":"Stats for any post of a profile’s account, by the network’s post id","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/post-analytics","host":["{{baseUrl}}"],"path":["v1","post-analytics"],"variable":[],"query":[{"key":"platform","value":"","description":"","disabled":false},{"key":"platform_post_id","value":"","description":"","disabled":false},{"key":"user","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true}]},"description":"For posts made outside Reelspan too. Cached for 10 minutes."}},{"name":"A period’s report: posts, interactions, follower growth and top posts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:profile_username","host":["{{baseUrl}}"],"path":["v1","reports",":profile_username"],"variable":[{"key":"profile_username","value":"","description":""}],"query":[{"key":"days","value":"","description":"1 to 365, default 30","disabled":true}]},"description":"Interactions add up likes, comments, replies, reposts, shares, quotes and saves of posts with numbers (read about two days after each post goes out). Followers come from the daily account readings."}},{"name":"Best hours and weekdays to post, from your own results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/best-times/:profile_username","host":["{{baseUrl}}"],"path":["v1","best-times",":profile_username"],"variable":[{"key":"profile_username","value":"","description":""}],"query":[{"key":"timezone","value":"","description":"IANA zone, default UTC","disabled":true},{"key":"platforms","value":"","description":"Comma-separated","disabled":true}]},"description":"Each post’s numbers are read about two days after it goes out. Per network, the hours (0-23) and weekdays (0 = Monday) whose posts did better than the profile’s usual post are returned, best first, in `timezone`. A network needs 8 posts with numbers first; until then `needed` says how many more."}},{"name":"Account totals per network (followers, views, posts…)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/:profile_username","host":["{{baseUrl}}"],"path":["v1","analytics",":profile_username"],"variable":[{"key":"profile_username","value":"","description":""}],"query":[{"key":"platforms","value":"","description":"Comma-separated; default all connected","disabled":true},{"key":"days","value":"0","description":"Also report the change over this many days","disabled":true}]},"description":"Keyed by platform. Networks whose stats are unavailable return `{ error, error_code }`. Cached for 10 minutes. With `days`, each network also gets `change`: how much each number moved over those days, from the daily readings."}},{"name":"Account numbers per day (followers, views…)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/:profile_username/history","host":["{{baseUrl}}"],"path":["v1","analytics",":profile_username","history"],"variable":[{"key":"profile_username","value":"","description":""}],"query":[{"key":"days","value":"","description":"1 to 365, default 30","disabled":true},{"key":"platforms","value":"","description":"Comma-separated","disabled":true},{"key":"format","value":"json","description":"","disabled":true}]},"description":"One row per account per UTC day, oldest first: the last reading of that day. Kept from the day an account’s stats were first read. `format=csv` returns a spreadsheet."}},{"name":"Stats for the posts of one publish request","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/post-analytics/:request_id","host":["{{baseUrl}}"],"path":["v1","post-analytics",":request_id"],"variable":[{"key":"request_id","value":"","description":""}],"query":[{"key":"platform","value":"","description":"","disabled":true}]},"description":""}}]},{"name":"AI","description":"Captions written or adapted for each network.","item":[{"name":"Write captions for each network from whatever the post has","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/ai/adapt-captions","host":["{{baseUrl}}"],"path":["v1","ai","adapt-captions"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"platforms\": [\n    \"\"\n  ],\n  \"text\": \"\",\n  \"notes\": \"\",\n  \"frames\": [\n    \"\"\n  ],\n  \"images\": [\n    \"\"\n  ],\n  \"audio\": {\n    \"data\": \"\",\n    \"format\": \"wav\"\n  },\n  \"duration\": 0,\n  \"media_id\": \"\",\n  \"photo_media_ids\": [\n    \"\"\n  ],\n  \"kind\": \"video\",\n  \"language\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Give any of: your caption (`text`, kept as the facts and adapted per network), a video as `frames` plus its `audio` (the speech is transcribed first), or `images`. Uses one AI credit."}},{"name":"Adapt existing captions to each network","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/ai/rewrite-captions","host":["{{baseUrl}}"],"path":["v1","ai","rewrite-captions"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"content\": {},\n  \"platforms\": [\n    \"\"\n  ],\n  \"language\": \"\",\n  \"instructions\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Keeps the facts, changes style, length and hashtags per network. Uses one AI credit."}},{"name":"Write captions for each network from a video","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/ai/video-captions","host":["{{baseUrl}}"],"path":["v1","ai","video-captions"],"variable":[],"query":[]},"body":{"mode":"formdata","formdata":[{"key":"video","type":"file","src":[],"description":"Video file or public https URL"},{"key":"platforms","type":"text","value":"","description":"Comma-separated; default youtube,instagram,tiktok","disabled":true},{"key":"language","type":"text","value":"","description":"e.g. English, Urdu, es; detected when omitted","disabled":true},{"key":"context","type":"text","value":"","description":"Your notes about the video: facts, names, the angle you want","disabled":true}]},"description":"Samples frames from the video (up to 100 MB, 5 minutes) and writes a title/caption per network within its limits. Uses one AI credit. Platforms: youtube, instagram, tiktok, facebook, x, threads, bluesky, linkedin, pinterest."}}]},{"name":"Lookups","description":"Pages, boards and other choices a network needs before posting.","item":[{"name":"A Facebook Page’s details: about, website, phone, hours, category, picture, cover","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/facebook/page-info","host":["{{baseUrl}}"],"path":["v1","facebook","page-info"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true},{"key":"page_id","value":"","description":"Default: the chosen Page","disabled":true}]},"description":""}},{"name":"Change a Facebook Page’s about, description, website, phone, emails or hours","request":{"method":"PATCH","header":[],"url":{"raw":"{{baseUrl}}/v1/facebook/page-info","host":["{{baseUrl}}"],"path":["v1","facebook","page-info"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"page_id\": \"\",\n  \"validate_only\": false,\n  \"about\": \"\",\n  \"description\": \"\",\n  \"website\": \"\",\n  \"phone\": \"\",\n  \"emails\": [\n    \"\"\n  ],\n  \"hours\": {}\n}","options":{"raw":{"language":"json"}}},"description":"Needs pages_manage_metadata: 403 `permission_pending` until Meta approves it (GET /v1/permissions). `validate_only` works now."}},{"name":"LinkedIn company pages a profile’s member administers","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/linkedin/pages","host":["{{baseUrl}}"],"path":["v1","linkedin","pages"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true}]},"description":"Needs LinkedIn’s Community Management API: 403 `permission_pending` until approved (GET /v1/permissions)."}},{"name":"Choose the LinkedIn company page posts go out as","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/linkedin/page","host":["{{baseUrl}}"],"path":["v1","linkedin","page"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"linkedin_page_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Posts with no target_linkedin_page_id go out as this page."}},{"name":"Post as the member again, not a company page","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/linkedin/page","host":["{{baseUrl}}"],"path":["v1","linkedin","page"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Facebook Pages connected to a profile, with followers and likes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/facebook/pages","host":["{{baseUrl}}"],"path":["v1","facebook","pages"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true}]},"description":""}},{"name":"Choose the Facebook Page posts go to","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/facebook/page","host":["{{baseUrl}}"],"path":["v1","facebook","page"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"facebook_page_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"The chosen Page is used when a post sends no facebook_page_id."}},{"name":"Clear the chosen Facebook Page","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/facebook/page","host":["{{baseUrl}}"],"path":["v1","facebook","page"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Then each post needs facebook_page_id, unless only one Page is connected."}},{"name":"Google Business locations of a profile’s account","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/google-business/locations","host":["{{baseUrl}}"],"path":["v1","google-business","locations"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true},{"key":"refresh","value":"true","description":"","disabled":true}]},"description":"As saved when the account was connected; `refresh=true` reads them again from Google (and saves them). Use a location’s `id` as google_business_location_id on posts."}},{"name":"Choose the Google Business location posts go to","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/google-business/location","host":["{{baseUrl}}"],"path":["v1","google-business","location"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"location_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"Clear the chosen Google Business location","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/v1/google-business/location","host":["{{baseUrl}}"],"path":["v1","google-business","location"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Then each post needs google_business_location_id, unless the account has one location."}},{"name":"Sections of a Pinterest board","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/pinterest/boards/:board_id/sections","host":["{{baseUrl}}"],"path":["v1","pinterest","boards",":board_id","sections"],"variable":[{"key":"board_id","value":"","description":""}],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true}]},"description":""}},{"name":"Create a section on a Pinterest board","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/pinterest/boards/:board_id/sections","host":["{{baseUrl}}"],"path":["v1","pinterest","boards",":board_id","sections"],"variable":[{"key":"board_id","value":"","description":""}],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"name\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"What a profile’s Instagram and Threads accounts may still post in the next 24 hours","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/publishing-limits","host":["{{baseUrl}}"],"path":["v1","publishing-limits"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true},{"key":"platform","value":"instagram","description":"","disabled":true},{"key":"refresh","value":"true","description":"","disabled":true}]},"description":"Read live from each network (Instagram: 50 posts a day, Threads: 250 posts and 1,000 replies), cached for a minute; `refresh=true` skips the cache. Networks not connected are left out."}},{"name":"Pinterest boards of a profile’s account","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/pinterest/boards","host":["{{baseUrl}}"],"path":["v1","pinterest","boards"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true}]},"description":""}},{"name":"Create a Pinterest board on a profile’s account","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/pinterest/boards","host":["{{baseUrl}}"],"path":["v1","pinterest","boards"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"profile\": \"\",\n  \"profile_username\": \"\",\n  \"user\": \"\",\n  \"name\": \"\",\n  \"description\": \"\",\n  \"privacy\": \"PUBLIC\"\n}","options":{"raw":{"language":"json"}}},"description":""}},{"name":"What a TikTok account may post: privacy levels, interactions and its longest video","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/tiktok/creator-info","host":["{{baseUrl}}"],"path":["v1","tiktok","creator-info"],"variable":[],"query":[{"key":"profile","value":"","description":"","disabled":true},{"key":"profile_username","value":"","description":"","disabled":true},{"key":"user","value":"","description":"","disabled":true}]},"description":""}}]},{"name":"Account","description":"The API key’s workspace, plan and this month’s usage.","item":[{"name":"Read the workspace preferences","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/preferences","host":["{{baseUrl}}"],"path":["v1","preferences"],"variable":[],"query":[]},"description":""}},{"name":"Change the workspace preferences","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/v1/preferences","host":["{{baseUrl}}"],"path":["v1","preferences"],"variable":[],"query":[]},"body":{"mode":"raw","raw":"{\n  \"weekStartDay\": 0,\n  \"timezone\": \"\"\n}","options":{"raw":{"language":"json"}}},"description":"Send only what changes. `timezone` becomes the zone scheduled_date is read in when a post sends no timezone; null goes back to UTC."}},{"name":"Check the API key and read the account plan and usage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/me","host":["{{baseUrl}}"],"path":["v1","me"],"variable":[],"query":[]},"description":""}},{"name":"Features that wait for a network’s approval, and which are live","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/v1/permissions","host":["{{baseUrl}}"],"path":["v1","permissions"],"variable":[],"query":[]},"description":"Each feature built on a permission a network grants after review: what it unlocks, the approval it needs, and whether it is live. Live ones need accounts connected before the switch to reconnect."}}]}]}