ContentStudio API
ContentStudio’s API lets you manage workspaces, social accounts, and posts programmatically. This guide provides an overview of the available endpoints and explains how to authenticate and use the API effectively. By using your API key, you can connect ContentStudio with integrations like Zapier, Make.com, or custom applications.
How to Get Your ContentStudio API Key
1 Click on your profile picture in the top-right corner, and select the API Key option from the dropdown menu.

2 Click on Generate API Key and copy your unique API key.

You can now use this API key wherever required, such as in Zapier, Make.com, or when connecting with other integrations.
3 Click on the three dots next to your API key. You’ll see two options:
- Regenerate: Create a new API key if your current one is compromised or you want to reset access.
- Revoke: Permanently disable the existing API key if it’s no longer needed.

Authentication
Authenticate all requests with your API key in the request header. For a complete list of available endpoints and examples, see the ContentStudio API Guide.
Header format:
X-API-Key: <YOUR_API_KEY>
Example using cURL:
cURL -H "X-API-Key: <YOUR_API_KEY>" \ https://api.contentstudio.io/api/v1/me
This authenticates your request and grants access to API endpoints.
Endpoints-Get Authenticated User
Retrieve information about the currently authenticated user.
Endpoint: GET /api/v1/me
cURL Example:
cURL -X GET "https://api.contentstudio.io/api/v1/me" \ -H "X-API-Key: <YOUR_API_KEY>"
Get Workspaces
Fetch a list of workspaces linked to your account.
Endpoint: GET /api/v1/workspaces
cURL Example:
cURL -X GET "https://api.contentstudio.io/api/v1/workspaces?page=1&per_page=10" \ -H "X-API-Key: <YOUR_API_KEY>"
Get Content Categories for a workspace
Retrieve the list of content categories for a specific workspace with resolved social account information. Global categories are excluded.
Endpoint: GET /api/v1/workspaces/{workspace_id}/content-categories
cURL Example:
curl http://api.contentstudio.io/api/v1/workspaces/610a1e56b41530ca40d372/content-categories \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Content categories retrieved successfully.",
"current_page": 1,
"per_page": 10,
"total": 25,
"last_page": 3,
"from": 1,
"to": 10,
"data": [
{
"_id": "625d0674cebc2f5e7743",
"name": "My Category",
"color": "color_15",
"state": "active",
"accounts": [
{
"_id": "10692115395",
"platform": "facebook",
"name": "My Facebook Page"
}
],
"slots_count": 5,
"posts_count": 10,
"color_code": "#544c72"
}
]
}
Get campaigns for a workspace
Retrieve paginated list of campaigns (folders) for a specific workspace, sorted alphabetically by name.
Endpoint: GET/api/v1/workspaces/{workspace_id}/campaigns
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb4130c40d372/campaigns \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Campaigns retrieved successfully",
"current_page": 1,
"per_page": 10,
"total": 25,
"last_page": 3,
"from": 1,
"to": 10,
"data": [
{
"_id": "625d06734ceb636c2f5e7743",
"name": "Q1 Marketing",
"color": "color_9"
}
]
}
Get labels for a workspace
Retrieve paginated list of labels for a specific workspace, sorted alphabetically by name.
Endpoint: GET /api/v1/workspaces/{workspace_id}/labels
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1ecb41530ca40d372/labels \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Labels retrieved successfully",
"current_page": 1,
"per_page": 10,
"total": 25,
"last_page": 3,
"from": 1,
"to": 10,
"data": [
{
"_id": "625d06734ceb636c2f5e7743",
"name": "Urgent",
"color": "color_1"
}
]
}
List Media assets
Retrieve a paginated list of media assets for a workspace with filtering, search, and sort options.
Endpoint: GET /api/v1/workspaces/{workspace_id}/media
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb30ca40d372/media \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Media retrieved successfully.",
"current_page": 1,
"per_page": 20,
"total": 150,
"last_page": 8,
"from": 1,
"to": 20,
"data": [
{
"_id": "625d06734ceb636c2f5e7743",
"name": "banner.jpg",
"url": "https://storage.googleapis.com/.../banner.jpg",
"mime_type": "image/jpeg",
"extension": "jpg",
"size": 245760,
"type": "image",
"folder_id": null,
"is_processing": false,
"created_at": "2026-03-16T07:33:51.539Z",
"dimensions": {
"width": 1920,
"height": 1080
}
}
]
}
Upload media
Upload a media file or import from URL into the workspace media library. Provide either a file or a URL, not both.
Endpoint: POST /api/v1/workspaces/{workspace_id}/media
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb41530ca40d372/media \ --request POST \ --header 'Content-Type: multipart/form-data' \ --header 'X-API-Key: YOUR_SECRET_TOKEN' \ --form 'file=' \ --form 'url=https://example.com/image.jpg' \ --form 'folder_id=625d06734ceb636c2f5e7743'
cURL Response:
{
"status": true,
"message": "Media uploaded successfully.",
"data": {
"_id": "625d06734ceb636c2f5e7743",
"name": "photo.jpg",
"url": "https://storage.googleapis.com/.../photo.jpg",
"mime_type": "image/jpeg",
"extension": "jpg",
"size": 245760,
"type": "image",
"folder_id": null,
"is_processing": false,
"created_at": "2026-03-16T07:33:51.539Z",
"dimensions": {
"width": null,
"height": null
}
}
}
Get Social Accounts
Retrieve connected social accounts for a workspace.
Endpoint: GET /api/v1/workspaces/{workspace_id}/accounts
cURL Example:
cURL -X GET "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/accounts?platform=facebook,instagram" \
-H "X-API-Key: <YOUR_API_KEY>"
Get Posts
Fetch posts from a workspace with filtering options (draft, scheduled, published, etc.).
Endpoint: GET /api/v1/workspaces/{workspace_id}/posts
cURL Example:
cURL -X GET "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/posts?status[]=scheduled&per_page=10" \
-H "X-API-Key: <YOUR_API_KEY>"
cURL Reponse :
{
"status": true,
"message": "Posts retrieved successfully",
"current_page": 1,
"per_page": 10,
"total": 25,
"last_page": 3,
"from": 1,
"to": 10,
"data": [
{
"id": "61e006a89be9dd0cd07ec692",
"workspace_id": "610a1e660cb41530ca40d372",
"content": {
"text": "Check out our latest product launch! ",
"images": [
"https://example.com/image1.jpg"
],
"video": "https://example.com/video.mp4"
},
"accounts": {
"facebook": [
{
"account_id": "350830594784444",
"account_name": "My Business Page",
"platform": "facebook"
}
],
"instagram": [
{
"account_id": "17841400455970028",
"account_name": "@mybusiness",
"platform": "instagram"
}
]
},
"scheduling": {
"status": "scheduled",
"scheduled_at": "2024-12-25T15:30:00Z",
"published_at": "2024-12-25T15:30:00Z",
"timezone": "America/New_York"
},
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z",
"created_by": "John Doe"
}
]
}
Note: The highlighted value in "id" is the unique post ID. You can use this ID to identify, update, or delete a specific post.
Create Post
Create and schedule a new post and add the first comment.
You can now choose from three publishing types: Draft, Schedule, or Queued.
| Platform | Allowed Post Types |
|---|---|
| feed, feed+reel, reel, carousel, story, feed+story, feed+reel+story, reel+story, carousel+story | |
| feed, feed+reel, reel, story, feed+story, feed+reel+story, reel+story | |
| YouTube | video, shorts |
| TikTok | video, carousel |
| feed | |
| Google My Business (GMB) | feed |
| feed, carousel |
Endpoint: POST /api/v1/workspaces/{workspace_id}/posts
cURL Example:
{
"content": {
"text": "Check out our latest product launch! ",
"media": {
"images": [
"https://example.com/image1.jpg"
],
"video": "https://example.com/video.mp4"
}
},
"accounts": [
"BjniecijWv",
"350830594784444",
"17841453340834745"
],
"post_type": "reel+story",
"scheduling": {
"publish_type": "scheduled",
"scheduled_at": "2024-12-25 15:30:00"
},
"first_comment": {
"message": "Great product! Check the details in comments.",
"accounts": [
"BjniecijWv",
"350830594784444"
]
}
}
Delete Post
Delete a post by ID.
Endpoint: DELETE /api/v1/workspaces/{workspace_id}/posts/{post_id}
cURL Example:
cURL -X DELETE "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/posts/{post_id}" \
-H "X-API-Key: <YOUR_API_KEY>"
Approve or reject a post
Approve or reject a single post that is under review with an optional comment.
Endpoint: POST /api/v1/workspaces/{workspace_id}/posts/{post_id}/approval
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb41530ca40d372/posts/68872722d9c2a0366a00ae32/approval \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_SECRET_TOKEN' \
--data '{
"action": "approve",
"comment": ""
}
Fetch post comments
Retrieve a paginated list of comments for a specific post
Endpoint: GET /api/v1/workspaces/{workspace_id}/posts/{post_id}/comments
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb41530ca40d372/posts/66a1f2e4c8b9a1234567890a/comments \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Comments fetched successfully",
"current_page": 1,
"per_page": 20,
"total": 45,
"last_page": 3,
"from": 1,
"to": 20,
"data": [
{
"_id": "66a1f2e4c8b9a1234567890a",
"comment": "Great post!",
"is_note": false,
"mentioned_users": [
{
"_id": "627a078300a7d866600e7d02",
"name": "John Doe"
}
],
"author": {
"_id": "627a078300a7d866600e7d02",
"name": "Jane Smith",
"profile_picture": "https://example.com/avatar.jpg"
},
"created_at": "2026-01-15T10:30:00.000000Z",
"updated_at": "2026-01-15T10:30:00.000000Z"
}
]
}
Add a comment to a post
Create a new comment or internal note on a post
Endpoint: POST /api/v1/workspaces/{workspace_id}/posts/{post_id}/comments
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb41530ca40d372/posts/66a1f2e4c8b9a1234567890a/comments \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_SECRET_TOKEN' \
--data '{
"comment": "This looks great, ready to publish!",
"is_note": false,
"mentioned_users": [
"user456"
]
}'
cURL Response:
{
"status": true,
"message": "Comment created successfully",
"data": {
"_id": "66a1f2e4c8b9a1234567890a",
"comment": "Great post!",
"is_note": false,
"mentioned_users": [
{
"_id": "627a078300a7d866600e7d02",
"name": "John Doe"
}
],
"author": {
"_id": "627a078300a7d866600e7d02",
"name": "Jane Smith",
"profile_picture": "https://example.com/avatar.jpg"
},
"created_at": "2026-01-15T10:30:00.000000Z",
"updated_at": "2026-01-15T10:30:00.000000Z"
}
}
Get workspace team members
Retrieve a paginated list of team members for a specific workspace. Useful for selecting approvers when creating posts with approval workflows.
Endpoint: GET /api/v1/workspaces/{workspace_id}/posts/{post_id}/comments
cURL Example:
curl http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb41530ca40d372/team-members \ --header 'X-API-Key: YOUR_SECRET_TOKEN'
cURL Response:
{
"status": true,
"message": "Team members retrieved successfully",
"current_page": 1,
"per_page": 10,
"total": 5,
"last_page": 1,
"from": 1,
"to": 5,
"data": [
{
"_id": "627a078300a7d866600e7d02",
"name": "John Doe",
"email": "john@example.com",
"profile_picture": "https://example.com/avatar.jpg",
"role": "admin",
"membership": "member"
}
]
}
Best Practices
- Keep it safe: Never share your API key publicly.
- Rotate if needed: You can revoke and regenerate keys anytime from settings.
- Use only where needed: Paste the key only into trusted platforms or integrations.
How to View Your API Request Logs
1 Click on your profile picture in the top-right corner, and go to API Key. Then click on Request Log to open the API log page.

2 Use the Methods dropdown to filter your requests by GET, POST, PUT, PATCH, or DELETE.

3 Use the Statuses dropdown to filter requests by Success (2xx), Client Error (4xx), or Server Error (5xx).

4 Once filters are applied, click the Export CSV button to download your API request logs.

Related Articles
FAQs
Q1. Where can I use the ContentStudio API key?
You can use it to authenticate integrations with tools like Zapier, Make.com, or directly when making API requests.
Q2. Can I generate multiple API keys?
No, only one active API key is available per account at a time.
Q3. What happens if I regenerate my API key?
The old key will stop working immediately, and you’ll need to update the new key anywhere you were using it (Zapier, Make.com, custom apps, etc.).
Q4. What happens if I revoke my API key?
Revoking permanently disables the key. Any integrations using it will stop working until you generate a new one.
Q5. Is my API key private?
Yes. Treat it like a password — never share it publicly or expose it in client-side code.