POST /socials/posts with your content and a list of platforms. One call fans out to every channel, and you manage the replies and analytics from the same place.
Connect platforms
Posting requires at least one connected account. Two ways to connect:twitter, linkedin, instagram, facebook, youtube, tiktok, pinterest, threads, reddit, bluesky, googlebusiness.
Publish a post
content and platforms are required. Without publish_now or scheduled_at, the post is saved as a draft.
Worked example: schedule a post to three platforms
This schedules one post to LinkedIn, X, and Threads, with a LinkedIn-specific override and an attached image.422 unless you attach media via media_urls or upload_ids.
Pins also need a board. If you don’t name one, Crevio pins to the first board on the connected account; pass platform_data.pinterest.board_id to choose, using an id from GET /socials/accounts/{id}/boards. An account with no boards at all fails with a message telling you to create one.
platform_data work in either snake_case or camelCase (board_id and boardId are the same field).
Google Business Profile
Agooglebusiness post is an update on the Business Profile, shown on Google Search and Maps. It takes text up to 1,500 characters and images only: a post with a video attached is rejected with 422. Optional platform_data.googlebusiness keys: location_id (a profile with several locations), language_code, topic_type (STANDARD, EVENT, OFFER or ALERT), call_to_action, event and offer.
Google Business Profile posts have no comments, so GET /socials/comments?platform=googlebusiness returns an empty list.
Publish a draft later
Posts created withoutpublish_now/scheduled_at stay as drafts until you publish them.
Queue posts into set posting times
Set weekly posting times once, then send posts withqueue: true instead of picking a scheduled_at for each. Every queued post takes the next free time, so ten posts fill the next ten slots.
PUT /socials/queue replaces the whole set. Each slot is a day_of_week (0 is Sunday, 6 is Saturday) and a 24-hour time, read in timezone (an IANA name; it defaults to the account’s timezone). Sending the same body again changes nothing, and posts already in the queue keep their times. If social posting is not activated yet, this activates it, which needs an active subscription.
GET /socials/queue returns the same timezone and slots, plus next_slots: the upcoming times they fall on. An account with no posting times gets empty slots.
Queue a new post, or a draft:
scheduled, with scheduled_at set to the time it got. queue cannot be combined with publish_now or scheduled_at (422). When no posting time is free, or none are set, the request fails with 422 and code social_queue_empty: a new post is not saved, and a draft stays a draft.
Know when a post goes out
Subscribe a webhook endpoint tosocial_post.scheduled, social_post.published and social_post.failed instead of polling GET /v1/socials/posts/:id. Each carries the post, and social_post.failed carries the reason in error.
Manage comments
Crevio surfaces incoming comments so you (or an agent) can engage without leaving the API. Reply publicly, hide spam, like, send a private reply, or delete.unhide, like, private_reply, and delete.
X (Twitter) engagement
/v1/socials/twitter/* covers the X-only reads and engagement that have no cross-platform equivalent: searching public posts, resolving one by id or URL, and reposting, bookmarking and following with their inverses.
Nothing under
/socials/twitter publishes. A reply is still a post — POST /socials/posts with platform_data.twitter.replyToTweetId set to the id you found — so there is exactly one endpoint that says something publicly.SocialAccount holds one row per platform, so the account is unambiguous and the optional account_id (a sacct_… id) is an explicit override, not a required selector. With no X account connected you get a 404; pointing account_id at a non-X account gets a 400.
Search
query is passed to X unchanged, so its own operators (from:, to:, -is:retweet, conversation_id:, quoted phrases, boolean OR) all work. Standalone operators like is:, has: and lang: must be combined with a keyword or a from: clause. Results are cursor-paginated, and search is limited to 300 requests per 15-minute window per connected account.
Each result carries
id, text, created, conversation_id, in_reply_to_tweet_id, lang, author, and the public counts (like_count, reply_count, retweet_count, quote_count).
Lookup and engagement
A tweet URL carries slashes, so it can’t ride in a path segment — pass it totweets/lookup as a query parameter instead.
retweets and bookmarks take tweet_id; follows takes the target’s numeric target_user_id. Follow answers with following and pending_follow — a protected account yields a pending follow request rather than a completed follow.
Analytics
Pull performance at the account level (across all connected channels) or for an individual post.Next steps
Tasks
Have Crevio write and schedule social posts on a recurring basis.
Images
Generate post visuals with AI.
Ads & Voice
Turn a high-performing post into a paid ad.
API reference
Every social endpoint and parameter.

