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.com
Authentication
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/image
Create a new single image post across multiple social media platforms.
Platform Support & Notes
- Only supported for TikTok, Instagram, Facebook, LinkedIn, Pinterest, Tumblr, Bluesky
title
only used for TikTok and PinterestboardId
is mandatory for every Pinterest Account- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
mediaId
stringrequiredThe ID of the uploaded image media file
posts
arrayrequiredArray of post objects containing account and content information
posts[].accountId
stringrequiredThe ID of the social media account to post to
posts[].caption
stringrequiredThe caption/text content for the post
posts[].title
stringoptionalPost title (only used for TikTok and Pinterest)
posts[].boardId
stringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledFor
stringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
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",
"scheduledFor": "2024-01-15T10:00:00Z"
}
]
}'
/post/images
Create 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
title
only used for TikTok and PinterestboardId
is 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
mediaIds
arrayrequiredArray of uploaded image media file IDs (max varies by platform)
posts
arrayrequiredArray of post objects containing account and content information
posts[].accountId
stringrequiredThe ID of the social media account to post to
posts[].caption
stringrequiredThe caption/text content for the post
posts[].title
stringoptionalPost title (only used for TikTok and Pinterest)
posts[].boardId
stringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledFor
stringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
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",
"scheduledFor": "2024-01-15T10:00:00Z"
}
]
}'
/post/video
Create a new video post across multiple social media platforms.
Notes
title
only used for YouTube and Pinterestlink
only used for PinterestboardId
is mandatory for every Pinterest Account- All datetime values must be in UTC timezone (ISO 8601 format with 'Z' suffix)
Request Body
mediaId
stringrequiredThe ID of the uploaded video media file
posts
arrayrequiredArray of post objects containing account and content information
posts[].accountId
stringrequiredThe ID of the social media account to post to
posts[].caption
stringrequiredThe caption/text content for the post
posts[].title
stringoptionalPost title (only used for YouTube and Pinterest)
posts[].link
stringoptionalLink URL (only used for Pinterest)
posts[].boardId
stringoptionalPinterest board ID (mandatory for Pinterest accounts)
posts[].scheduledFor
stringoptionalSchedule the post for a specific time (ISO 8601 format with 'Z' suffix)
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",
"scheduledFor": "2024-01-15T10:00:00Z"
}
]
}'
/pinterest-boards/accountId
Get Pinterest boards for a specific account.
Path Parameters
accountId
stringrequiredThe 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-accounts
Get user's connected social media accounts.
Query Parameters
platform
stringoptionalFilter 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"
/posts
Get user posts with filtering and pagination options.
Query Parameters
status
stringoptionalFilter by post status (QUEUED, SCHEDULED, PUBLISHED, FAILED)
platform
stringoptionalFilter by platform (facebook, instagram, tiktok, etc.)
limit
integeroptionalNumber 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/postId
Delete a scheduled post (only works for posts that haven't been published yet).
Path Parameters
postId
stringrequiredThe 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"
/media
Get user's uploaded media files.
Query Parameters
type
stringoptionalFilter by media type (IMAGE, VIDEO)
limit
integeroptionalNumber 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"
/media
Upload a media file (image or video) for later use in posts.
Request Body (multipart/form-data)
media
filerequiredThe media file to upload (max 100MB for images, 500MB for videos)
type
stringrequiredMedia 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/mediaId
Delete a media file from your account.
Path Parameters
mediaId
stringrequiredThe 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"