API Reference
The Crosspostify API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes.
You like Swagger documentation better?
Check out our Swagger API documentation.
Not a developer?
Use Crosspostify's dashboard to get started with social media posting.
Base URL
https://v1.api.crosspostify.comAuthentication
All API requests require authentication using an API key. Include your API key in the X-API-Key header with every request.
The API key can be retrieved in the Crosspostify App.
Your API key carries many privileges, so be sure to keep it secure! Do not share your secret API key in publicly accessible areas such as GitHub, client-side code, and so forth.
Rate Limits
To ensure fair usage and maintain service quality, the Crosspostify API implements rate limiting:
When you exceed a rate limit, you'll receive a 429 status code. We recommend implementing exponential backoff in your applications.
Errors
Crosspostify uses conventional HTTP response codes to indicate the success or failure of an API request.
Everything worked as expected.
The request was unacceptable, often due to missing a required parameter.
No valid API key provided.
The requested resource doesn't exist.
Too many requests hit the API too quickly.
Something went wrong on Crosspostify's end.
Endpoints
Below are all the available API endpoints organized by functionality.
/post/imageCreate a new single image post across multiple social media platforms.
Platform Support & Notes
- Only supported for TikTok, Instagram, Facebook, LinkedIn, Pinterest, Tumblr, Bluesky
titleonly used for TikTok and PinterestboardIdis mandatory for every Pinterest Account- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
mediaIdstringrequiredThe ID of the uploaded image media file
postsarrayrequiredArray of post objects containing account and content information
posts[].accountIdstringrequiredThe ID of the social media account to post to
posts[].captionstringrequiredThe caption/text content for the post
posts[].titlestringoptionalPost title (only used for TikTok and Pinterest)
posts[].boardIdstringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledDatestringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
posts[].facebookFirstCommentstringoptionalFirst comment for Facebook posts (ignored for non-Facebook platforms).
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/image" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaId": "img_12345",
"posts": [
{
"accountId": "acc_789",
"caption": "Check out our new product!",
"title": "New Product Announcement",
"boardId": "board_123",
"scheduledDate": "2025-01-15T10:00:00Z",
"facebookFirstComment": "This is my first comment on Facebook"
}
]
}'/post/imagesCreate a new multiple images post across multiple social media platforms.
Platform Image Limits
- Instagram: Maximum 10 images per post
- TikTok: Maximum 10 images per post
- LinkedIn: Maximum 10 images per post
- Pinterest: Maximum 5 images per post
- Tumblr: Maximum 10 images per post
- Bluesky: Maximum 4 images per post
Notes
- Only supported for TikTok, Instagram, LinkedIn, Pinterest, Tumblr and Bluesky
titleonly used for TikTok and PinterestboardIdis mandatory for every Pinterest Account- For Pinterest all images in a multiple image post must have the same aspect ratio
- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
mediaIdsarrayrequiredArray of uploaded image media file IDs (max varies by platform)
postsarrayrequiredArray of post objects containing account and content information
posts[].accountIdstringrequiredThe ID of the social media account to post to
posts[].captionstringrequiredThe caption/text content for the post
posts[].titlestringoptionalPost title (only used for TikTok and Pinterest)
posts[].boardIdstringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledDatestringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
posts[].facebookFirstCommentstringoptionalFirst comment for Facebook posts (ignored for non-Facebook platforms).
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/images" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaIds": ["img_12345", "img_67890"],
"posts": [
{
"accountId": "acc_789",
"caption": "Check out our new products!",
"title": "New Product Collection",
"boardId": "board_123",
"scheduledDate": "2025-01-15T10:00:00Z",
"facebookFirstComment": "Drop your thoughts below 👇"
}
]
}'/post/videoCreate a new video post across multiple social media platforms.
Notes
titleonly used for YouTube and Pinterestlinkonly used for PinterestboardIdis mandatory for every Pinterest Account- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
mediaIdstringrequiredThe ID of the uploaded video media file
postsarrayrequiredArray of post objects containing account and content information
posts[].accountIdstringrequiredThe ID of the social media account to post to
posts[].captionstringrequiredThe caption/text content for the post
posts[].titlestringoptionalPost title (only used for YouTube and Pinterest)
posts[].linkstringoptionalLink URL (only used for Pinterest)
posts[].boardIdstringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledDatestringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
posts[].facebookFirstCommentstringoptionalFirst comment for Facebook posts (ignored for non-Facebook platforms).
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/video" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaId": "vid_12345",
"posts": [
{
"accountId": "acc_789",
"caption": "Watch our latest video!",
"title": "New Video Release",
"link": "https://example.com",
"boardId": "board_123",
"scheduledDate": "2025-01-15T10:00:00Z",
"facebookFirstComment": "First comment with extra info and links"
}
]
}'/post/textCreate a text-only post. Currently supported for Facebook Pages only.
Platform Support & Notes
- Supported platforms: Facebook
- No media is required or accepted for this endpoint
- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
postsarrayrequiredArray of post objects containing account and text content
posts[].accountIdstringrequiredThe ID of the Facebook Page social account to post to
posts[].captionstringrequiredThe text content for the post
scheduledDatestringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix). If omitted, the post is queued immediately.
posts[].textFormatPresetIdstring | integeroptionalFacebook text background preset ID. Applies only to Facebook text posts. Must be numeric.
posts[].facebookFirstCommentstringoptionalFirst comment for Facebook posts (ignored for non-Facebook platforms).
Validation
- If provided,
textFormatPresetIdmust be numeric (string or integer). Otherwise the request is rejected with HTTP 400. - Ignored for non-Facebook platforms.
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/text" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"scheduledDate": "2025-01-15T10:00:00Z",
"posts": [
{
"accountId": "acc_facebook_page_123",
"caption": "Hello Facebook! This is a text-only post with a background.",
"textFormatPresetId": "106018623298955",
"facebookFirstComment": "P.S. Don’t miss our live Q&A at 5 PM!"
}
]
}'Facebook Text Background Presets
You can optionally provide textFormatPresetId for Facebook text-only posts. The value is forwarded to Facebook as text_format_preset_id. Keep IDs as strings in requests to avoid numeric precision issues.
| ID | Label |
|---|---|
106018623298955 | Solid purple |
365653833956649 | Pink tropical plants |
618093735238824 | Brown illustration |
191761991491375 | 3D hearts |
2193627793985415 | 3D heart eyes emojis |
200521337465306 | 3D flame emojis |
1821844087883360 | Walking yellow illustration |
177465482945164 | Light purple 3D cube pattern |
160419724814650 | Orange with pink illustration |
248623902401250 | 3D smiling emoji |
240401816771706 | 3D rose emojis |
1868855943417360 | 3D crying laughter emoji |
255989551804163 | Eye pink illustration |
1654916007940525 | Light grey illustration |
1679248482160767 | Light blue illustration |
518948401838663 | Pink heart pattern |
423339708139719 | Illustration |
204187940028597 | Solid red |
621731364695726 | Solid red |
518596398537417 | Red illustration |
134273813910336 | Tree red illustration |
217321755510854 | Pink/purple hearts on pink |
323371698179784 | Sunset red illustration |
901751159967576 | Gradient dark orange/red |
552118025129095 | Brown illustration |
263789377694911 | Apple red illustration |
606643333067842 | Tulip light orange illustration |
458988134561491 | Cat dark orange illustration |
548109108916650 | Unicorn red illustration |
175493843120364 | Pink/yellow gradient |
338976169966519 | Stairs beige illustration |
206513879997925 | Spiral beige illustration |
168373304017982 | Cube beige illustration |
1271157196337260 | Solid red |
174496469882866 | Lemon yellow illustration |
862667370603267 | Egg light yellow illustration |
127541261450947 | Ball green illustration |
218067308976029 | Light grey illustration |
688479024672716 | Gradient teal/light green |
238863426886624 | Cat light blue illustration |
301029513638534 | Solid teal |
154977255088164 | Solid teal |
1941912679424590 | Gradient grey/dark grey |
396343990807392 | Flower teal illustration |
143093446467972 | Blue clouds on dark blue |
161409924510923 | Rocket heart in the sky |
145893972683590 | Solid dark purple |
217761075370932 | Solid blue |
931584293685988 | Wave blue illustration |
148862695775447 | Pink/purple hearts on purple |
100114277230063 | Deep sea blue illustration |
558836317844129 | Spiral purple illustration |
172497526576609 | Watermelon light purple |
433967226963128 | Solid purple |
197865920864520 | Donut light purple |
643122496026756 | Pink illustration |
762009070855346 | Balloon light grey illustration |
228164237768720 | Grey hearts on black |
146487026137131 | Rain black illustration |
221828835275596 | Glasses light grey illustration |
1903718606535395 | Solid red |
1881421442117417 | Solid black |
249307305544279 | Gradient red/blue |
1777259169190672 | Gradient purple/magenta |
303063890126415 | Yellow/orange/pink gradient |
122708641613922 | Gradient dark grey/black |
319468561816672 | Dark blue illustration |
121945541697934 | Pink illustration |
288211338285858 | Blue illustration |
446330032368780 | Gradient red |
219266485227663 | Solid magenta |
1289741387813798 | Solid dark red |
1365883126823705 | Solid blue |
Notes
- This list can change over time per Facebook.
- Unknown or invalid IDs will receive a 400 validation error.
- Leave
textFormatPresetIdempty to post with no background.
/pinterest-boards/accountIdGet Pinterest boards for a specific account.
Path Parameters
accountIdstringrequiredThe ID of the Pinterest account
Response
Code Example
curl -X GET "https://v1.api.crosspostify.com/pinterest-boards/acc_123" \
-H "X-API-Key: your_api_key_here"/social-accountsGet user's connected social media accounts.
Query Parameters
platformstringoptionalFilter by platform (facebook, instagram, tiktok, pinterest, etc.)
Response
Code Example
curl -X GET "https://v1.api.crosspostify.com/social-accounts" \
-H "X-API-Key: your_api_key_here"/postsGet user posts with filtering and pagination options.
Query Parameters
statusstringoptionalFilter by post status (QUEUED, SCHEDULED, PUBLISHED, FAILED)
platformstringoptionalFilter by platform (facebook, instagram, tiktok, etc.)
limitintegeroptionalNumber of posts to return (max 100, default 50)
Response
Code Example
curl -X GET "https://v1.api.crosspostify.com/posts?limit=10" \
-H "X-API-Key: your_api_key_here"/posts/postIdDelete a scheduled post (only works for posts that haven't been published yet).
Path Parameters
postIdstringrequiredThe ID of the post to delete
Response
Code Example
curl -X DELETE "https://v1.api.crosspostify.com/posts/post_123" \
-H "X-API-Key: your_api_key_here"/mediaGet user's uploaded media files.
Query Parameters
typestringoptionalFilter by media type (IMAGE, VIDEO)
limitintegeroptionalNumber of media files to return (max 100, default 50)
Response
Code Example
curl -X GET "https://v1.api.crosspostify.com/media" \
-H "X-API-Key: your_api_key_here"/mediaUpload a media file (image or video) for later use in posts.
Request Body (multipart/form-data)
mediafilerequiredThe media file to upload (max 100MB for images, 500MB for videos)
typestringrequiredMedia type: IMAGE or VIDEO
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/media" \
-H "X-API-Key: your_api_key_here" \
-F "[email protected]" \
-F "type=IMAGE"/media/mediaIdDelete a media file from your account.
Path Parameters
mediaIdstringrequiredThe ID of the media file to delete
Response
Code Example
curl -X DELETE "https://v1.api.crosspostify.com/media/img_123" \
-H "X-API-Key: your_api_key_here"