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.

📖 In this article

This guide walks you through everything you need to use the ContentStudio API — from getting your API key to managing posts, workspaces, media, and team members programmatically.

🔑 Authentication & Setup 3 topics
🏢 Workspaces 5 topics
📱 Social Accounts 3 topics
📝 Posts Management 6 topics
💬 Comments & Notes 2 topics
🖼️ Media Library 2 topics
📥 Social Inbox 5 sections
📈 Analytics 3 topics
📊 API Logs & Best Practices 1 topic
FAQs 4 topics

How to Get Your ContentStudio API Key

1 On the home page, click on the API module from the left navigation bar.

If you don't see it, click the three dots (•••) at the bottom of the sidebar — it may be listed there. Otherwise, click Customize Sidebar, turn the API toggle on, and it will appear in your navigation.

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>"

Connect Social Accounts

You can now connect social accounts to your workspace directly through the API. Bluesky and Facebook Groups are connected manually using credentials. All other platforms use an OAuth-based flow.

  • Connect Bluesky Account

    Endpoint: POST /api/v1/workspaces/{workspace_id}/add/bluesky             

    cURL Example:

curl -X POST "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/add/bluesky" \
  -H "X-API-Key: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "handle": "yourname.bsky.social",
    "app_password": "xxxx-xxxx-xxxx-xxxx"
  }'
  • Connect Facebook Group

Adds a Facebook Group connection using its name and an optional image URL. No browser step is required.

Endpoint: POST /api/v1/workspaces/{workspace_id}/add/facebook-group             

cURL Example:

curl -X POST "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/add/facebook-group" \
  -H "X-API-Key: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Facebook Group",
    "image": "https://example.com/group.jpg"
  }'
  • Connect via OAuth (All Other Platforms)

Generates a one-time authorization URL for connecting to an OAuth-based social account. Use process=connect               for new accounts and process=reconnect               (with account_id              ) to refresh an expired or invalid account.


Supported platforms:

  • facebook
  • facebook-profile
  • instagram
  • instagram-via-facebook
  • twitter
  • linkedin
  • pinterest
  • tiktok
  • youtube
  • threads
  • gmb
  • tumblr

Endpoint: POST /api/v1/workspaces/{workspace_id}/connect/{platform}             

cURL Example:

curl -X POST "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/connect/facebook?process=connect" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "message": "Authorization URL generated. Open this URL in a browser to connect your Facebook account.",
  "data": {
    "authorization_url": "https://www.facebook.com/v18.0/dialog/oauth?client_id=...&state=...",
    "session_id": "cs_sess_abc123def456",
    "platform": "facebook",
    "process": "connect",
    "account_name": "My Business Page",
    "expires_at": "2026-04-16T17:30:00Z",
    "next_steps": [
      "Open the authorization_url in a web browser."
    ],
    "security": {
      "expires_in_minutes": 30,
      "single_use": true,
      "warning": "Do not share this URL. It grants one-time access to connect an account to your workspace."
    }
  }
}

Redirect  back after completing an OAuth connection

You can now specify a return_url       when initiating an OAuth connect or reconnect flow. Once the user finishes authorizing (or cancels) in the browser, they'll be redirected back to this URL instead of a default ContentStudio page.


Description: Optional URL the user is sent back to from the browser after finishing the connect flow. Must be an absolute http(s) URL.

Endpoint: POST /api/v1/workspaces/{workspace_id}/connect/{platform}      

cURL Example:

  curl -X POST "http://api-prod.contentstudio.io/api/v1/workspaces/610a1e660cb4130c40d372/connect/facebook?process=connect&return_url=https://yourapp.com/settings/integrations" \--header 'X-API-Key: YOUR_SECRET_TOKEN'

cURL Response:

{
  "status": true,
  "message": "Authorization URL generated. Open this URL in a browser to connect your Facebook account.",
  "data": {
    "authorization_url": "https://www.facebook.com/v18.0/dialog/oauth?client_id=...&state=...",
    "session_id": "cs_sess_abc123def456",
    "platform": "facebook",
    "process": "connect",
    "account_name": "My Business Page",
    "expires_at": "2026-04-16T17:30:00Z",
    "next_steps": [
      "Open the authorization_url in a web browser."
    ],
    "security": {
      "expires_in_minutes": 30,
      "single_use": true,
      "warning": "Do not share this URL. It grants one-time access to connect an account to your workspace."
    }
  }
}

3. Remove a Social Account

Disconnect and remove a connected social account from the workspace.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/accounts/{account_id}

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/accounts/{account_id}" \
  -H "X-API-Key: "

cURL Response:

{
  "status": true,
  "message": "Social account removed successfully"
}

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
Instagram feed, feed+reel, reel, carousel, story, feed+story, feed+reel+story, reel+story, carousel+story
Facebook feed, feed+reel, reel, story, feed+story, feed+reel+story, reel+story
YouTube video, shorts
TikTok video, carousel
Pinterest feed
Google My Business (GMB) feed
LinkedIn 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",
"hide_client": true,
  "scheduling": {

 "publish_type": "draft",
    "scheduled_at": "2024-12-25 15:30:00"
  },
  "first_comment": {
    "message": "Great product! Check the details in comments.",
    "accounts": [
      "BjniecijWv",
      "350830594784444"
    ]
  }
}

Set Facebook Text Background

Apply a background to a Facebook text post by passing the background ID in your post creation request.

To retrieve the full list of available background IDs, use:

Endpoint: GET /api/v1/workspaces/{workspace_id}/facebook/text-backgrounds             

cURL Example:

curl -X POST "https://api.contentstudio.io/api/v1/workspaces/{workspace_id}/posts" \
-H "X-API-Key: 
-H "Content-Type: application/json" \
-d '{
"content": {
  "text": "Exciting news coming your way!"
},
"accounts": [
  "350830594784444"
],
"post_type": "feed",
"scheduling": {
  "publish_type": "scheduled",
  "scheduled_at": "2026-05-01 10:00:00"
},
"facebook_options": {
  "facebook_background_id": "191761991491375"
}}'

cURL Response:

{
"status": true,
"message": "Post created successfully.",
"data": {
"id": "61e006a89be9dd0cd07ec692",
"content": {
  "text": "Exciting news coming your way!"
},
"facebook_options": {
  "facebook_background_id": "191761991491375"
},
"scheduling": {
  "status": "scheduled",
  "scheduled_at": "2026-05-01T10:00:00Z"
}}
}

To apply a background, pass the background ID in your request using the following format:

"facebook_options": { 
   "facebook_background_id": "106018623298955" 
}

Here are the ID's of different Facebook backgrounds for text:

106018623298955
1903718606535395
1881421442117417
249307305544279
1777259169190672
303063890126415
122708641613922
319468561816672
365653833956649
618093735238824
191761991491375
2193627793985415
200521337465306
1821844087883360
177465482945164
160419724814650
255989551804163
248623902401250
240401816771706
1868855943417360
1792915444087912
1654916007940525
1679248482160767
518948401838663
423339708139719
204187940028597
621731364695726
518596398537417
134273813910336
217321755510854
323371698179784
901751159967576

Delete Post

Delete a post by its unique ID. When a delete request is made, ContentStudio handles deletion on two levels:

  • Native Platform – The post is removed directly from the social platform (e.g., Facebook, Pinterest, YouTube) where it was published, provided the platform supports deletion via API.
  • ContentStudio – The post record is removed from your ContentStudio workspace.

Not all platforms support deletion via API. In cases where a platform does not support it, the post will remain live on the native platform but will still be removed from ContentStudio. See the Platform-Level Limitations section below for a full breakdown.

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>"
Example Value
{
  "delete_from_social": true,
  "account_ids": [
    "350830594784444"
  ]
}
1
Platform-Level Limitations
Platform Deletion via API
Instagram ❌ Not supported
TikTok ❌ Not supported
Facebook ⚠️ Partial support (only Page posts)
Google Business Profile (GMB) ⚠️ Partial support (video posts not supported)
Pinterest ✅ Supported
YouTube ✅ Supported
Threads ✅ Supported
X (Twitter) ✅ Supported
Bluesky ✅ Supported
Tumblr ✅ Supported
💡 Notes:
  • Instagram and TikTok do not support post deletion via API at all.
  • Facebook does not support deletion for Stories, Profile posts, or Group posts.
  • GMB does not support deletion for Video posts.
  • All other listed platforms support deletion via API.
2
When account_id is NOT Provided
💡 All the following cases apply when only post_id is passed and no specific account is targeted.
Case 2.1: Delete Across All Associated Accounts
  • The system attempts deletion on all linked accounts.
  • Deletion occurs only where supported.
  • Unsupported platforms are skipped.
Case 2.2: Mixed Platform Support

Post is linked to multiple platforms (some supported, some not).

Outcome:

  • Deleted from supported platforms.
  • Not deleted from unsupported platforms.
  • Deleted from ContentStudio completely.
Case 2.3: All Platforms Support Deletion

Post is linked only to platforms that allow deletion.

Outcome:

  • Deleted from all native platforms and other associated platforms.
  • Deleted from ContentStudio completely.
Case 2.4: Failed / Partially Published Posts
  • Some accounts = failed / not published.
  • Some accounts = successfully published.

Outcome:

  • Deletion applies only to successfully published instances.
  • If all published instances are deletable: deleted from native platforms and removed completely from ContentStudio.
  • Deleted from ContentStudio completely.
3
When account_id IS Provided
💡 These cases apply when a specific account is targeted in the API request.
Case 3.1: Supported Platform

account_id belongs to a platform that supports deletion.

Outcome:

  • Post is deleted from the native platform.
  • Post is deleted from ContentStudio (for that account).
Case 3.2: Unsupported Platform

account_id belongs to a platform that does not support deletion via API.

Outcome:

  • Post remains on the native platform.
  • Post is deleted from ContentStudio.

Update a Post

Update a post that has not been published yet. Accepts the same payload as Create Post. Posts that are already published or currently being published cannot be edited.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/posts/{post_id}  

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/posts/{post_id}" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "content": {
    "text": "Updated post text"
  },
  "accounts": [
    "BjniecijWv"
  ],
  "scheduling": {
    "publish_type": "scheduled",
    "scheduled_at": "2026-01-10 15:30:00"
  },
  "approval": {
    "approvers": [
      "627a078300a7d866600e7d02"
    ],
    "approve_option": "anyone",
    "notes": "Please review before publishing"
  },
  "approval_workflow": {
    "workflow_id": "66a1f2e4c8b9a1234567890d",
    "workflow_action": "keep",
    "notes": "Please review before publishing"
  }
}

cURL Response:

{
  "status": true,
  "message": "Post updated successfully",
  "data": {
    "id": "66a1f2e4c8b9a1234567890a",
    "post_url": "https://app.contentstudio.io/my-workspace/publisher/planner/list-view?plan_ids=66a1f2e4c8b9a1234567890a",
    "warning": ""
  }
}

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.

📊 Analytics

Access analytics data programmatically for your connected social accounts. Retrieve audience insights, post performance, engagement trends, video metrics, and demographic breakdowns — all scoped to a specific workspace and date range.


Facebook

  1. Get Facebook Analytics Summary

Retrieve Facebook Page summary KPIs for the selected period, with current vs. previous period comparison and percentage change.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/summary        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/summary?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "summary": {
    "current": {
      "fan_count": 42500,
      "page_follows": 41800,
      "talking_about_count": 1240,
      "page_impressions": 185000,
      "page_impressions_paid": 62000,
      "page_impressions_organic": 123000,
      "page_engagements": 3800,
      "page_positive_feedback": 520,
      "page_negative_feedback": 48,
      "total_posts": 22,
      "post_engagement": 2950,
      "post_reactions": 1820,
      "post_comments": 480,
      "post_clicks": 1650,
      "post_impressions": 145000,
      "post_reach": 98000,
      "post_reposts": 320,
      "post_positive_sentiment": 1480,
      "post_negative_sentiment": 210
    },
    "previous": { "..." },
    "difference": { "..." },
    "percentage": { "..." }
  }
}


  1. Get Facebook Audience Growth

Retrieve fan and follower growth over time, including daily likes, unlikes, and engagement data.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/audience-growth       

cURL Example:

 curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/audience-growth?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "audience_growth": {
    "show_data": 1,
    "data": [
      {
        "date": "2026-01-31",
        "fan_count": 42500,
        "page_fans_daily": 150,
        "page_fans_by_like": 155,
        "page_fans_by_unlike": 5,
        "page_impressions": 6800,
        "page_engagements": 460
      }
    ]
  },
  "audience_growth_rollup": {
    "current": {
      "avg_page_fans_by_like": 4.2,
      "avg_page_fans_by_unlike": 0.5,
      "fan_count": 42500,
      "talking_about_count": 1240,
      "post_count": 22
    },
    "previous": { "..." }
  }
}


  1. Get Facebook Publishing Behaviour

Retrieve daily post performance broken down by impressions, reach, and engagement type (paid, organic, viral), with optional filtering by media type.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/publishing-behaviour       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/publishing-behaviour?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31&media_type=images,videos" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "publishing_behaviour": {
    "data": [
      {
        "date": "2026-01-31",
        "reactions_engagement": 490,
        "comments_engagement": 138,
        "shares_engagement": 90,
        "paid_impressions": 19500,
        "organic_impressions": 39000,
        "viral_impressions": 7900,
        "paid_reach": 16500,
        "organic_reach": 32000,
        "viral_reach": 6700,
        "post_count": 2
      }
    ]
  },
  "publishing_behaviour_rollup": {
    "current": {
      "post_count": 22,
      "post_engagement": 2950,
      "post_reactions": 1820,
      "post_comments": 480,
      "post_clicks": 1650,
      "post_impressions": 145000,
      "post_shares": 320
    },
    "previous": { "..." }
  }
}

  1. Get Facebook Top Posts

Retrieve top-performing posts ranked by engagement, with pagination, sorting, and media type filtering.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/top-posts        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/top-posts?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31&limit=15&order_by=post_engagement" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts": [
    {
      "platform_account_name": "ContentStudio",
      "platform_id": "111000111000",
      "post_id": "111000111000_902341",
      "permalink": "https://facebook.com/111000111000/posts/902341",
      "status_type": "added_photos",
      "media_type": "images",
      "caption": "New year, new playbook.",
      "like_count": 482,
      "reaction_count": 597,
      "share_count": 14,
      "comment_count": 37,
      "post_clicks": 88,
      "post_engagement": 621,
      "impression_count": 4820,
      "impression_count_organic": 4500,
      "impression_count_paid": 0,
      "impression_count_viral": 320,
      "post_video_views": 0,
      "created_at": "2026-01-22T14:08:00Z",
      "media_assets": [ { "..." } ]
    }
  ]
}

  1. Get Facebook Top Posts (Filtered)

Retrieve top-performing video and reel posts, filtered by media type and ranked by impressions by default.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/top-posts/filtered        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/top-posts/filtered?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31&media_type=videos,reels" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts": [
    {
      "platform_account_name": "ContentStudio",
      "post_id": "111000111000_889123",
      "media_type": "videos",
      "video_id": "884921",
      "caption": "Behind the scenes: launch week.",
      "like_count": 720,
      "reaction_count": 884,
      "share_count": 32,
      "comment_count": 56,
      "post_video_views": 18420,
      "impression_count": 24180,
      "post_engagement": 940,
      "created_at": "2026-01-14T11:02:00Z",
      "media_assets": [ { "..." } ]
    }
  ]
}
  1. Get a Single Facebook Post

Retrieve full analytics data for a single Facebook post by its platform-native post ID.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/post        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/post?platform_id=111000111000&post_id=111000111000_902341" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "post": {
    "platform_account_name": "ContentStudio",
    "post_id": "111000111000_902341",
    "permalink": "https://facebook.com/111000111000/posts/902341",
    "media_type": "images",
    "caption": "New year, new playbook.",
    "like_count": 482,
    "reaction_count": 597,
    "share_count": 14,
    "comment_count": 37,
    "post_engagement": 621,
    "impression_count": 4820,
    "impression_count_organic": 4500,
    "impression_count_paid": 0,
    "post_video_views": 0,
    "created_at": "2026-01-22T14:08:00Z",
    "media_assets": [ { "..." } ]
  }
}
  1. Get Facebook Active Users

Retrieve the hours and days of the week when your Page audience is most active.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/active-users        

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/active-users?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "active_users": {
    "active_users_hours": {
      "highest_value": 4800,
      "highest_hour": 20,
      "data": [
        { "hour": 20, "value": 4800 }
      ]
    },
    "active_users_days": {
      "highest_value": 18500,
      "highest_day": "Wednesday",
      "data": [
        { "day": "Wednesday", "value": 18500 }
      ]
    }
  }
}

  1. Get Facebook Page Impressions

Retrieve daily page impression totals with period-over-period averages.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/impressions        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/impressions?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "impressions": {
    "data": [
      { "date": "2026-01-31", "page_impressions": 5020 }
    ]
  },
  "impressions_rollup": {
    "current": {
      "total_impressions": 185000,
      "avg_impressions_per_day": 5968,
      "avg_impressions_per_week": 41776
    },
    "previous": {
      "total_impressions": 168000,
      "avg_impressions_per_day": 5419,
      "avg_impressions_per_week": 37933
    }
  }
}

  1. Get Facebook Page Engagement

Retrieve daily page engagement totals with period-over-period averages.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/engagement        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/engagement?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{


  "status": true,
  "engagement": {
    "engagement": {
      "data": [
        { "date": "2026-01-31", "page_engagements": 300 }
      ]
    },
    "engagement_rollup": {
      "current": {
        "page_engagements": 3800,
        "avg_engagements_per_day": 122.6,
        "avg_engagements_per_week": 858.2
      },
      "previous": {
        "page_engagements": 3400,
        "avg_engagements_per_day": 109.7,
        "avg_engagements_per_week": 767.9
      }
    }
  }
}

  1. Get Facebook Reels Insights

Retrieve performance data for Facebook Reels including watch time, initial plays, reach, and engagement.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/reels        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/reels?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "reels": {
    "show_data": 1,
    "data": [
      {
        "date": "2026-01-31",
        "total_reels": 3,
        "total_seconds_watched": 6840.2,
        "initial_plays": 5120,
        "engagement": 210,
        "reactions": 134,
        "comments": 52,
        "shares": 24
      }
    ]
  },
  "reels_rollup": {
    "current": {
      "total_reels": 6,
      "average_seconds_watched": 2245.6,
      "total_seconds_watched": 13470,
      "initial_plays": 9770,
      "reach": 7820,
      "engagement": 428
    },
    "previous": { "..." }
  }
}

  1. Get Facebook Video Insights

Retrieve video performance metrics split by organic and paid, including total view time, views, and post-level engagement.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/video-insights        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/video-insights?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "video_insights": {
    "data": [
      {
        "date": "2026-01-31",
        "total_view_time": 21240.7,
        "organic_view_time": 20800,
        "paid_view_time": 440.7,
        "total_views": 7240,
        "organic_views": 7100,
        "paid_views": 140,
        "comments": 32,
        "reactions": 210,
        "shares": 18,
        "total_posts": 3
      }
    ]
  },
  "video_rollup": {
    "current": {
      "total_view_time": 54481.2,
      "total_views": 17980,
      "organic_views": 17480,
      "paid_views": 500
    },
    "previous": { "..." }
  }
}

  1. Get Facebook Audience Demographics

Retrieve audience breakdown by gender, age group, country, and city.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/demographics        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/demographics?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \   -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{

"status": true,
"audience_gender": { "male": 24000, "female": 18000, "unknown": 500 },
"fans": 42500,
"audience_age": {
"fans_age": {
  "13-17": 850, "18-34": 12400, "25-34": 10200,
  "35-44": 8600, "45-54": 5200, "55-64": 3100, "65+": 2150
},
"max_age": 34
},
"max_gender_age": { "max_value": 10200, "age": "25-34", "gender": "male" },
"audience_country": { "US": 18000, "GB": 5200, "CA": 3100 },
"audience_city": { "New York, NY": 3200, "Los Angeles, CA": 2800 }
}
  1. Get Facebook Demographics Overview

Retrieve a combined overview of audience demographics including gender, age, country, and city data.

Endpoint: GET/api/v1/workspaces/{workspace_id}/analytics/facebook/demographics/overview        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/demographics/overview?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \   -H "X-API-Key: <YOUR_API_KEY>"

cURL Response: (same structure as Demographics above)


  1. Get Facebook Audience Location

Retrieve audience distribution by country and city.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/audience-location        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/audience-location?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31" \   -H "X-API-Key: <YOUR_API_KEY>

cURL Response:

{
  "status": true,
  "audience_gender": { "male": 24000, "female": 18000, "unknown": 500 },
  "fans": 42500,
  "audience_country": { "US": 18000, "GB": 5200, "CA": 3100, "AU": 2400, "IN": 2100 },
  "audience_city": {
    "New York, NY": 3200,
    "Los Angeles, CA": 2800,
    "London, United Kingdom": 2100,
    "Sydney, Australia": 1900
  }
}
  1. Get Facebook AI Insights

Retrieve AI-generated insights for your Facebook Page performance based on the selected date range and insight type.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/facebook/ai-insights        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/facebook/ai-insights?platform_id=111000111000&start_date=2026-01-01&end_date=2026-01-31&limit=5&language=en" \   -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "data": {
    "insights": "Engagement peaked on Tuesdays. Video content outperforms images by 2.4x."
  },
  "message": ""
}

Instagram

  1. Get Instagram Analytics Summary

Retrieve Instagram profile summary KPIs for the selected period, with current vs. previous period comparison and percentage change.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/summary        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/summary?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \   -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "summary": {
    "current": {
      "followers_count": 35800,
      "follows_count": 420,
      "profile_impressions": 92000,
      "profile_views": 8400,
      "profile_engagement": 4200,
      "profile_reach": 68000,
      "accounts_engaged": 3100,
      "total_posts": 24,
      "post_engagement": 3600,
      "post_reactions": 2400,
      "post_comments": 580,
      "post_saves": 720,
      "post_reach": 82000,
      "post_views": 145000,
      "total_stories": 45,
      "eng_rate": 3.8
    },
    "previous": { "..." },
    "difference": { "..." },
    "percentage": { "..." }
  }
}

  1. Get Instagram Audience Growth

Retrieve daily post performance broken down by likes, comments, saves, reach, impressions, and views, with a rollup by media type.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/publishing-behaviour        

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/publishing-behaviour?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \   -H "X-API-Key: <YOUR_API_KEY>"
cURL Response:
{
  "status": true,
  "publishing_behaviour": [
    {
      "date": "2026-01-31",
      "likes": 720,
      "comments": 158,
      "saved": 210,
      "engagement": 1088,
      "reach": 24000,
      "impressions": 41000,
      "views": 56000,
      "total_posts": 4
    }
  ],
  "publishing_behaviour_rollup": {
    "current": [
      {
        "media_type": "IMAGE",
        "total_posts": 14,
        "likes": 4200,
        "comments": 860,
        "saved": 1100,
        "engagement": 6160,
        "reach": 145000,
        "views": 180000
      }
    ],
    "previous": [ { "..." } ]
  }
}

  1. Get Instagram Top Posts

Retrieve top-performing feed posts ranked by engagement, with pagination and sorting options.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/top-posts       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/top-posts?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31&limit=15&order_by=post_engagement" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts": [
    {
      "post_id": "17841400008460056",
      "platform_id": "17841400000001234",
      "caption": "New collection just dropped!",
      "media_type": "IMAGE",
      "entity_type": "FEED",
      "permalink": "https://www.instagram.com/p/abc123/",
      "like_count": 1240,
      "comment_count": 185,
      "saved": 320,
      "post_engagement": 1745,
      "reach": 28000,
      "impression_count": 42000,
      "views": 0,
      "share_count": 0,
      "day_of_week": "Friday",
      "hour_of_day": 18,
      "created_at": "2026-01-12T18:00:00Z",
      "saved_at": "2026-01-12T18:05:00Z"
    }
  ]
}

  1. Get Instagram Top Posts (Filtered)

Retrieve top-performing Reels and video posts, filtered by media type and ranked by impressions by default.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/top-posts/filtered       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/top-posts/filtered?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31&media_type=REELS" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts": [
    {
      "post_id": "17841400008460099",
      "platform_id": "17841400000001234",
      "caption": "Reel of the week 🎬",
      "media_type": "REELS",
      "entity_type": "REELS",
      "permalink": "https://www.instagram.com/reel/xyz789/",
      "like_count": 2100,
      "comment_count": 240,
      "saved": 410,
      "post_engagement": 2750,
      "reach": 52000,
      "impression_count": 78000,
      "views": 64000,
      "share_count": 320,
      "day_of_week": "Wednesday",
      "hour_of_day": 12,
      "created_at": "2026-01-14T12:00:00Z",
      "saved_at": "2026-01-14T12:04:00Z"
    }
  ]
}
  1. Get a Single Instagram Post

Retrieve full analytics data for a single Instagram post by its platform-native post ID.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/post       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/post?platform_id=17841400000001234&post_id=17841400008460056" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "post": {
    "post_id": "17841400008460056",
    "platform_id": "17841400000001234",
    "caption": "New collection just dropped!",
    "media_type": "IMAGE",
    "entity_type": "FEED",
    "permalink": "https://www.instagram.com/p/abc123/",
    "like_count": 1240,
    "comment_count": 185,
    "saved": 320,
    "post_engagement": 1745,
    "reach": 28000,
    "impression_count": 42000,
    "views": 0,
    "share_count": 0,
    "day_of_week": "Friday",
    "hour_of_day": 18,
    "created_at": "2026-01-12T18:00:00Z",
    "saved_at": "2026-01-12T18:05:00Z"
  }
}

  1. Get Instagram Active Users

Retrieve the hours and days of the week when your Instagram audience is most active.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/active-users       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/active-users?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "active_users_hours": {
    "highest_value": 5200,
    "highest_hour": 19,
    "data": [
      { "hour": 19, "value": 5200 }
    ]
  },
  "active_users_days": {
    "highest_value": 22000,
    "highest_day": "Saturday",
    "data": [
      { "day": "Saturday", "value": 22000 }
    ]
  }
}
  1. Get Instagram Impressions

Retrieve daily profile impression totals with period-over-period averages.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/impressions       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/impressions?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "impressions": [
    { "date": "2026-01-31", "impressions": 41000 }
  ],
  "impressions_rollup": {
    "current": {
      "total_impressions": 92000,
      "avg_impressions": 2968
    },
    "previous": {
      "total_impressions": 84000,
      "avg_impressions": 2710
    }
  }
}

  1. Get Instagram Engagement

Retrieve daily engagement totals including reactions, comments, saves, and post count, with period-over-period rollup.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/engagement       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/engagement?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "engagements": [
    {
      "date": "2026-01-31",
      "engagement": 1088,
      "comments": 158,
      "reactions": 720,
      "post_count": 4
    }
  ],
  "engagements_rollup": {
    "current": {
      "engagement": 3600,
      "avg_engagement": 116.1,
      "comments": 580,
      "reactions": 2400,
      "saved": 720,
      "count": 24
    },
    "previous": {
      "engagement": 3200,
      "avg_engagement": 103.2,
      "comments": 510,
      "reactions": 2100,
      "saved": 640,
      "count": 20
    }
  }
}

  1. Get Instagram Hashtag Performance

Retrieve engagement metrics grouped by hashtag, with a rollup of total hashtag usage across the period.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/hashtags       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/hashtags?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_hashtags": [
    {
      "name": "#fashion",
      "engagement": 3800,
      "likes": 2800,
      "comments": 480,
      "saved": 520,
      "posts": 12
    }
  ],
  "top_hashtags_rollup": {
    "current": {
      "post_engagement": 18500,
      "total_likes": 14200,
      "total_comments": 2400,
      "total_saves": 2800,
      "total_unique_hashtags": 38,
      "total_hashtag_uses": 112
    },
    "previous": {
      "post_engagement": 16200,
      "total_likes": 12400,
      "total_comments": 2100,
      "total_saves": 2450,
      "total_unique_hashtags": 32,
      "total_hashtag_uses": 95
    }
  }
}

  1. Get Instagram Stories Performance

Retrieve daily Stories metrics including impressions, reach, replies, exits, and tap-forward/back counts.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/stories-performance       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/stories-performance?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "stories_performance": [
    {
      "date": "2026-01-31",
      "avg_story_impressions": 4500,
      "story_impressions": 18000,
      "story_reach": 13500,
      "story_reply": 92,
      "story_exits": 450,
      "story_taps_forward": 1950,
      "story_taps_back": 360,
      "published_stories": 4
    }
  ],
  "stories_rollup": {
    "current": {
      "story_impressions": 185000,
      "avg_story_impressions": 4111,
      "story_reach": 138000,
      "story_reply": 950,
      "story_exits": 4800,
      "story_taps_forward": 21000,
      "story_taps_back": 3900,
      "published_stories": 45
    },
    "previous": { "..." }
  }
}

  1. Get Instagram Reels Performance

Retrieve daily Reels metrics including engagement, watch time, likes, comments, saves, and shares.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/reels-performance       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/reels-performance?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "reels": [
    {
      "date": "2026-01-31",
      "total_posts": 3,
      "engagement": 2100,
      "likes": 1560,
      "comments": 245,
      "saves": 295,
      "shares": 210,
      "avg_watch_time": 13.1,
      "total_watch_time": 56000
    }
  ],
  "reels_rollup": {
    "current": {
      "engagement": 18500,
      "likes": 13800,
      "comments": 2200,
      "saves": 2800,
      "total_posts": 24,
      "shares": 1900,
      "avg_watch_time": 12.4,
      "total_watch_time": 425000
    },
    "previous": { "..." }
  }
}

  1. Get Instagram Audience Age & Gender

Retrieve audience breakdown by age group and gender, including the dominant age-gender segment.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/demographics-age       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/demographics-age?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "audience_age": {
    "13-17": 1250,
    "18-24": 9800,
    "25-34": 12400,
    "35-44": 7200,
    "45-54": 3100,
    "55-64": 1500,
    "65+": 550
  },
  "audience_gender": {
    "female": 21500,
    "male": 13800,
    "unknown": 500
  },
  "max_audience_age": {
    "gender": "female",
    "age": "25-34",
    "value": 7800
  }
}
  1. Get Instagram Audience Location

Retrieve audience distribution by country and city.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/country-city       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/country-city?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "audience_city": {
    "New York, NY": 4200,
    "Los Angeles, CA": 3600,
    "London, United Kingdom": 2800,
    "Chicago, IL": 2200,
    "Sydney, Australia": 1900
  },
  "audience_country": {
    "US": 16500,
    "GB": 4800,
    "CA": 3200,
    "AU": 2900,
    "IN": 2400
  }
}
  1. Get Instagram AI Insights

Retrieve AI-generated insights for your Instagram account performance based on the selected date range and insight type.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/instagram/ai-insights       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/instagram/ai-insights?platform_id=17841400000001234&start_date=2026-01-01&end_date=2026-01-31&limit=5&language=en" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "data": {
    "insights": "Reels drove 2.1x the engagement of static posts. Best posting window: weekdays 18:00–20:00."
  },
  "message": ""
}


Youtube Analytics

1. Get YouTube Analytics Summary

Retrieve YouTube channel summary KPIs for the selected period, with current vs. previous period comparison and percentage change.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/summary       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/summary?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "summary": {
    "current": {
      "subscribers": 48200,
      "videos": 185,
      "views": 125000,
      "watch_time": 385000,
      "avg_view_duration": 184.2,
      "like": 4200,
      "dislike": 85,
      "comment": 620,
      "share": 380,
      "engagement": 5285
    },
    "previous": { "..." },
    "difference": { "..." },
    "percentage": { "..." }
  }
}

2. Get YouTube Subscriber Trend

Retrieve cumulative and daily subscriber growth over the selected period.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/subscriber-trend       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/subscriber-trend?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "subscriber_trend": [
    {
      "date": "2026-01-31",
      "subscribers_gained_daily": 85,
      "subscribers_total": 47027
    }
  ]
}

3. Get YouTube Subscriber Trend (Daily)

Retrieve daily subscriber gain alongside running totals, broken down per day.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/subscriber-trend-daily       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/subscriber-trend-daily?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "subscriber_trend_daily": [
    {
      "date": "2026-01-31",
      "subscribers_gained_daily": 85,
      "subscribers_total": 47027
    }
  ]
}

4. Get YouTube Engagement Trend

Retrieve cumulative and daily engagement metrics including likes, dislikes, shares, and comments over the selected period.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/engagement-trend       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/engagement-trend?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "engagement_trend": [
    {
      "date": "2026-01-31",
      "like_daily": 158,
      "like_total": 41358,
      "dislike_daily": 2,
      "dislike_total": 822,
      "share_daily": 14,
      "share_total": 3614,
      "comment_daily": 24,
      "comment_total": 5924,
      "engagement_daily": 198,
      "engagement_total": 51718
    }
  ]
}

5. Get YouTube Engagement Trend (Daily)

Retrieve the same engagement metrics as the trend endpoint, broken down strictly per day.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/engagement-trend-daily       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/engagement-trend-daily?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "engagement_trend": [
    {
      "date": "2026-01-31",
      "like_daily": 158,
      "like_total": 41358,
      "dislike_daily": 2,
      "dislike_total": 822,
      "share_daily": 14,
      "share_total": 3614,
      "comment_daily": 24,
      "comment_total": 5924,
      "engagement_daily": 198,
      "engagement_total": 51718
    }
  ]
}

6. Get YouTube Views Trend

Retrieve cumulative and daily video views split by subscriber and non-subscriber audiences.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/views-trend       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/views-trend?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "views_trend": [
    {
      "date": "2026-01-31",
      "subscriber_views_daily": 3100,
      "subscriber_views_total": 88100,
      "non_subscriber_views_daily": 1600,
      "non_subscriber_views_total": 43600,
      "video_views_daily": 4700,
      "video_views_total": 131700
    }
  ]
}

7. Get YouTube Views Trend (Daily)

Retrieve the same views breakdown as the trend endpoint, broken down strictly per day.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/views-trend-daily       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/views-trend-daily?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "views_trend": [
    {
      "date": "2026-01-31",
      "subscriber_views_daily": 3100,
      "subscriber_views_total": 88100,
      "non_subscriber_views_daily": 1600,
      "non_subscriber_views_total": 43600,
      "video_views_daily": 4700,
      "video_views_total": 131700
    }
  ]
}

8. Get YouTube Watch Time Trend

Retrieve cumulative and daily watch time in minutes, split by subscriber and non-subscriber audiences, with average view duration.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/watch-time-trend       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/watch-time-trend?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "watch_time": [
    {
      "date": "2026-01-31",
      "subscriber_watch_time_daily": 9300,
      "subscriber_watch_time_total": 261300,
      "non_subscriber_watch_time_daily": 4800,
      "non_subscriber_watch_time_total": 130800,
      "average_watch_time": 188.6
    }
  ]
}

9. Get YouTube Watch Time Trend (Daily)

Retrieve the same watch time breakdown as the trend endpoint, broken down strictly per day.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/watch-time-trend-daily       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/watch-time-trend-daily?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "watch_time": [
    {
      "date": "2026-01-31",
      "subscriber_watch_time_daily": 9300,
      "subscriber_watch_time_total": 261300,
      "non_subscriber_watch_time_daily": 4800,
      "non_subscriber_watch_time_total": 130800,
      "average_watch_time": 188.6
    }
  ]
}

10. Get YouTube Video Discovery Sources

Retrieve a breakdown of how viewers are finding your videos, with values and percentage share per traffic source.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/find-video       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/find-video?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "find_video": [
    {
      "name": "YouTube Search",
      "value": 68000,
      "perc_value": 54.4
    }
  ]
}

11. Get YouTube Video Sharing Breakdown

Retrieve a breakdown of how viewers are sharing your videos, with values and percentage share per sharing method.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/video-sharing       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/video-sharing?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "video_sharing": [
    {
      "name": "Copy Link",
      "value": 180,
      "perc_value": 47.4
    }
  ]
}

12. Get YouTube Top Posts

Retrieve top-performing videos ranked by both views and engagement.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/top-posts       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/top-posts?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts_ordered_by_views": [
    {
      "post_id": "dQw4w9WgXcQ",
      "title": "2026 Product Overview",
      "media_type": "video",
      "like_count": 4200,
      "comment_count": 620,
      "share_count": 380,
      "impression_count": 125000,
      "minutes_watched": 6418,
      "average_view_duration": 184.2,
      "average_view_percentage": 74.8,
      "engagement_rate": 4.23,
      "created_at": "2026-01-08T15:00:00Z"
    }
  ],
  "top_posts_ordered_by_engagement": [
    {
      "post_id": "abc123xyz",
      "title": "How We Grew 10x in 2025",
      "media_type": "video",
      "like_count": 5800,
      "comment_count": 840,
      "share_count": 520,
      "impression_count": 98000,
      "minutes_watched": 7120,
      "average_view_duration": 201.4,
      "average_view_percentage": 78.2,
      "engagement_rate": 7.31,
      "created_at": "2026-01-15T12:00:00Z"
    }
  ]
}

13. Get YouTube Least Performing Posts

Retrieve the lowest-performing videos ranked by both views and engagement.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/least-posts       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/least-posts?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "least_posts_ordered_by_views": [
    {
      "post_id": "zzz000",
      "title": "Behind the Scenes Clip",
      "media_type": "short",
      "like_count": 42,
      "comment_count": 8,
      "share_count": 5,
      "impression_count": 850,
      "minutes_watched": 180,
      "average_view_duration": 22.4,
      "average_view_percentage": 46.7,
      "engagement_rate": 0.65,
      "created_at": "2026-01-28T09:00:00Z"
    }
  ],
  "least_posts_ordered_by_engagement": [
    {
      "post_id": "zzz001",
      "title": "Quick Update",
      "media_type": "short",
      "like_count": 28,
      "comment_count": 4,
      "share_count": 3,
      "impression_count": 620,
      "minutes_watched": 95,
      "average_view_duration": 18.1,
      "average_view_percentage": 38.4,
      "engagement_rate": 0.48,
      "created_at": "2026-01-30T11:00:00Z"
    }
  ]
}

14. Get YouTube Sorted Top Posts

Retrieve a paginated, sortable list of top-performing videos ordered by a chosen metric.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/sorted-top-posts       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/sorted-top-posts?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31&order_by=post_engagement&limit=15" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "top_posts": [
    {
      "post_id": "dQw4w9WgXcQ",
      "title": "2026 Product Overview",
      "media_type": "video",
      "like_count": 4200,
      "comment_count": 620,
      "share_count": 380,
      "impression_count": 125000,
      "minutes_watched": 6418,
      "average_view_duration": 184.2,
      "average_view_percentage": 74.8,
      "engagement_rate": 4.23,
      "created_at": "2026-01-08T15:00:00Z"
    }
  ]
}

15. Get a Single YouTube Video

Retrieve full analytics data for a single YouTube video by its post ID.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/video       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/video?platform_id=UCxxxxxxxxxxxxxx&post_id=dQw4w9WgXcQ" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "post": {
    "post_id": "dQw4w9WgXcQ",
    "title": "2026 Product Overview — What's New",
    "description": "A complete walkthrough of all new features released in 2026.",
    "duration": 742,
    "media_type": "video",
    "iframe_embed_url": "https://www.youtube.com/embed/dQw4w9WgXcQ",
    "share_url": "https://youtu.be/dQw4w9WgXcQ",
    "like_count": 4200,
    "dislike_count": 85,
    "comment_count": 620,
    "share_count": 380,
    "impression_count": 125000,
    "minutes_watched": 6418,
    "average_view_duration": 184.2,
    "average_view_percentage": 74.8,
    "engagement_rate": 4.23,
    "subscribers_gained": 78,
    "created_at": "2026-01-08T15:00:00Z"
  }
}

16. Get YouTube Performance Schedule

Retrieve daily engagement and views broken down by subscriber vs. non-subscriber audiences, useful for identifying the best days to publish.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/performance-schedule       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/performance-schedule?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "engagement": [
    {
      "date": "2026-01-31",
      "count": 3,
      "likes": 420,
      "dislikes": 9,
      "shares": 38,
      "comments": 64,
      "engagement": 531
    }
  ],
  "video_views": [
    {
      "date": "2026-01-31",
      "count": 3,
      "subscriber_views": 3100,
      "non_subscriber_views": 1600
    }
  ]
}

17. Get YouTube AI Insights

Retrieve AI-generated insights for your YouTube channel performance based on the selected date range and insight type.

Endpoint: GET /api/v1/workspaces/{workspace_id}/analytics/youtube/ai-insights       

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/analytics/youtube/ai-insights?platform_id=UCxxxxxxxxxxxxxx&start_date=2026-01-01&end_date=2026-01-31&limit=5&language=en" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "status": true,
  "data": {
    "insights": "Shorts grew subscribers 1.8x faster than long-form. Watch-time peaks on weekend uploads."
  },
  "message": ""
}

Social Inbox

Your social inbox is now available through the API. Read and reply to comments, manage DM conversations, handle Google Business Profile reviews, organize with tags, and triage incoming items. Everything you do in the Inbox dashboard, you can now do programmatically.


Comments

1. List Comments on a Post

Retrieve all comments on a connected social media post, including threaded replies.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/posts/{post_id}/comments

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/posts/{post_id}/comments" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "data": [
    {
      "comment_id": "17895695668004321",
      "post_id": "17895695668004000",
      "platform": "facebook",
      "message": "Love this product!",
      "author": { "id": "1234567890", "name": "Jane Doe" },
      "like_count": 3,
      "is_hidden": false,
      "created_at": "2026-07-28T10:15:00Z",
      "replies": []
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 1 }
}

2. Reply to a Post or Comment

Post a new top-level comment, reply to an existing comment, or send a Facebook private reply.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/posts/{post_id}/comments

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/posts/{post_id}/comments" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "message": "Thanks for reaching out! We'll get back to you shortly.",
  "platform_id": "1784509823456123",
  "parent_comment_id": "17895695668004321",
  "is_private_reply": false
}

cURL Response:

{
  "comment_id": "17895695668004890",
  "post_id": "17895695668004000",
  "parent_comment_id": "17895695668004321",
  "message": "Thanks for reaching out! We'll get back to you shortly.",
  "platform": "facebook",
  "created_at": "2026-08-04T09:12:00Z"
}

3. Hide a Comment

Hide a comment on a post so it's no longer publicly visible. This action is idempotent.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/hidden

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/hidden" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "comment_id": "17895695668004321",
  "is_hidden": true,
  "updated_at": "2026-08-04T09:15:00Z"
}

4. Unhide a Comment

Make a previously hidden comment publicly visible again. This action is idempotent.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/hidden

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/hidden" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "comment_id": "17895695668004321",
  "is_hidden": false,
  "updated_at": "2026-08-04T09:16:00Z"
}

5. Like a Comment

Like a Facebook comment on behalf of your connected Page. This action is idempotent.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/like

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/like" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "comment_id": "17895695668004321",
  "liked": true,
  "updated_at": "2026-08-04T09:18:00Z"
}

6. Unlike a Comment

Remove your Page's like from a Facebook comment. This action is idempotent.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/like

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}/like" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "comment_id": "17895695668004321",
  "liked": false,
  "updated_at": "2026-08-04T09:19:00Z"
}

7. Delete a Comment

Permanently delete a comment from a connected social media post.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/comments/{comment_id}" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "comment_id": "17895695668004321",
  "deleted": true
}

Conversations

8. List Messages in a Conversation

Retrieve the full message history for a direct message conversation.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/messages

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/messages" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "data": [
    {
      "message_id": "m_98765432",
      "conversation_id": "c_12345678",
      "platform": "instagram",
      "sender": { "id": "17841400000000000", "name": "John Smith" },
      "message": "Hi, is this still available?",
      "attachments": [],
      "is_bookmarked": false,
      "created_at": "2026-08-03T14:22:00Z"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 1 }
}

9. Send a Message (Text or Media)

Send a reply in a conversation; include an attachment to send media instead of plain text.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/messages

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/messages" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "message": "Yes, it's still available! Let me know if you'd like to order.",
  "platform_id": "17841400000000000",
  "attachment": {
    "type": "image",
    "url": "https://cdn.contentstudio.io/uploads/product-photo.jpg"
  }
}

cURL Response:

{
  "message_id": "m_98765500",
  "conversation_id": "c_12345678",
  "message": "Yes, it's still available! Let me know if you'd like to order.",
  "attachments": [
    { "type": "image", "url": "https://cdn.contentstudio.io/uploads/product-photo.jpg" }
  ],
  "created_at": "2026-08-04T09:25:00Z"
}

10. List Internal Notes on a Conversation

Retrieve internal team notes attached to a conversation; these are private and never sent to the contact.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/notes

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/notes" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "data": [
    {
      "note_id": "n_5551212",
      "conversation_id": "c_12345678",
      "message": "Customer is a VIP, escalate if unresolved after 24h.",
      "mentioned_users": ["u_1001"],
      "created_by": "u_1002",
      "created_at": "2026-08-02T11:00:00Z"
    }
  ]
}

11. Add an Internal Note to a Conversation

Attach a private internal note to a conversation and optionally mention teammates.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/notes

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/notes" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "message": "Following up with customer tomorrow morning.",
  "platform_type": "instagram",
  "platform_id": "17841400000000000",
  "mentioned_users": ["u_1001"]
}

cURL Response:

{
  "note_id": "n_5551300",
  "conversation_id": "c_12345678",
  "message": "Following up with customer tomorrow morning.",
  "mentioned_users": ["u_1001"],
  "created_by": "u_1002",
  "created_at": "2026-08-04T09:30:00Z"
}

12. Bookmark a Message

Star a message in a conversation for quick reference later. This action is idempotent.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}/bookmark

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}/bookmark" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "message_id": "m_98765432",
  "is_bookmarked": true,
  "updated_at": "2026-08-04T09:32:00Z"
}

13. Unbookmark a Message

Remove a star from a previously bookmarked message. This action is idempotent.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}/bookmark

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}/bookmark" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "message_id": "m_98765432",
  "is_bookmarked": false,
  "updated_at": "2026-08-04T09:33:00Z"
}

14. Delete a Message

Soft-delete a message from a conversation.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/messages/{message_id}" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "message_id": "m_98765432",
  "deleted": true
}

15. List Bookmarked Messages in a Conversation

Retrieve all messages that have been starred within a specific conversation.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/bookmarks

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/conversations/{conversation_id}/bookmarks" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "data": [
    {
      "message_id": "m_98765432",
      "conversation_id": "c_12345678",
      "message": "Hi, is this still available?",
      "is_bookmarked": true,
      "created_at": "2026-08-03T14:22:00Z"
    }
  ]
}

Items

16. Search Inbox Items

Search and filter inbox elements (conversations, posts, reviews) across your connected accounts.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/elements/search

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/search" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "inbox_types": ["conversation", "post", "review"],
  "action": "all",
  "page": 1,
  "limit": 20,
  "search_term": "refund",
  "tags": ["urgent"],
  "all_channels": { "facebook": ["17841400000000000"] },
  "targeted_element": ""
}

cURL Response:

{
  "data": [
    {
      "element_id": "e_44221100",
      "inbox_type": "conversation",
      "platform": "facebook",
      "status": "pending",
      "is_read": false,
      "is_archived": false,
      "tags": ["urgent"],
      "updated_at": "2026-08-04T08:10:00Z"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 1 }
}

17. Get Inbox Summary

Retrieve item counts for each inbox bucket, such as pending, done, and archived.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/elements/summary

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/summary" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "inbox_types": ["conversation", "post", "review"],
  "all_channels": { "facebook": ["17841400000000000"] }
}

cURL Response:

{
  "pending": 12,
  "done": 48,
  "archived": 5,
  "unread": 7,
  "assigned_to_me": 3
}

18. Get an Item's Contact Profile

Retrieve the contact profile associated with an inbox element, such as name and contact details.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/contact

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/contact" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "element_ref": "e_44221100",
  "platform_id": "17841400000000000",
  "name": "Jane Doe",
  "email": "jane.doe@example.com",
  "phone": "+1-555-0134",
  "company": "Acme Co."
}

19. Update an Item's Contact Profile

Update the contact details stored against an inbox element.

Endpoint: PATCH /api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/contact

cURL Example:

curl -X PATCH "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/contact" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "platform_id": "17841400000000000",
  "name": "Jane Doe",
  "email": "jane.doe@example.com",
  "phone": "+1-555-0134",
  "company": "Acme Co."
}

cURL Response:

{
  "element_ref": "e_44221100",
  "platform_id": "17841400000000000",
  "name": "Jane Doe",
  "email": "jane.doe@example.com",
  "phone": "+1-555-0134",
  "company": "Acme Co.",
  "updated_at": "2026-08-04T09:40:00Z"
}

20. Update Item Status (Done, Pending, Archive, Assign)

Bulk update the status of one or more inbox elements. Mark as done or pending, archive, or assign to a teammate.

Endpoint: PATCH /api/v1/workspaces/{workspace_id}/inbox/elements

cURL Example:

curl -X PATCH "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "element_refs": ["e_44221100", "e_44221101"],
  "status": "done",
  "archived": false,
  "assigned": true,
  "assigned_to": { "user_id": "u_1001" }
}

cURL Response:

{
  "updated": ["e_44221100", "e_44221101"],
  "status": "done",
  "archived": false,
  "assigned": true,
  "assigned_to": { "user_id": "u_1001" }
}

21. Mark an Item as Read

Mark an inbox element as read. This action is idempotent.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/read

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/read" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "element_ref": "e_44221100",
  "is_read": true,
  "updated_at": "2026-08-04T09:42:00Z"
}

22. Apply Tags to an Item

Attach one or more inbox tags to a conversation, post, or review.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/tags

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/tags" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "tags": ["urgent", "vip"],
  "platform_id": "17841400000000000",
  "inbox_type": "conversation"
}

cURL Response:

{
  "element_ref": "e_44221100",
  "tags": ["urgent", "vip"]
}

23. Remove a Tag from an Item

Detach a single inbox tag from an element.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/tags/{tag_id}

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/elements/{element_ref}/tags/{tag_id}" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "element_ref": "e_44221100",
  "tag_id": "t_9001",
  "removed": true
}

Reviews

24. Reply to a Review

Add or replace your reply to a Google Business Profile review; calling this again overwrites the existing reply.

Endpoint: PUT /api/v1/workspaces/{workspace_id}/inbox/reviews/{review_id}/reply

cURL Example:

curl -X PUT "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/reviews/{review_id}/reply" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "platform_id": "accounts/1234567890/locations/9876543210",
  "review_reply": "Thank you so much for your feedback, we're glad you enjoyed your visit!"
}

cURL Response:

{
  "review_id": "r_33110099",
  "review_reply": "Thank you so much for your feedback, we're glad you enjoyed your visit!",
  "updated_at": "2026-08-04T09:45:00Z"
}

25. Delete a Review Reply

Remove your business's reply from a Google Business Profile review.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/reviews/{review_id}/reply

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/reviews/{review_id}/reply" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "review_id": "r_33110099",
  "deleted": true
}

Tags

26. List Inbox Tags

Retrieve all inbox tags created within the workspace.

Endpoint: GET /api/v1/workspaces/{workspace_id}/inbox/tags

cURL Example:

curl -X GET "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/tags" \
  -H "X-API-Key: <YOUR_API_KEY>"

cURL Response:

{
  "data": [
    { "tag_id": "t_9001", "tag_name": "urgent", "tag_color": "#FF0000" },
    { "tag_id": "t_9002", "tag_name": "vip", "tag_color": "#FFA500" }
  ]
}

27. Create an Inbox Tag

Create a new inbox tag with a name and color.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/tags

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/tags" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "tag_name": "billing",
  "tag_color": "#00A3FF"
}

cURL Response:

{
  "tag_id": "t_9003",
  "tag_name": "billing",
  "tag_color": "#00A3FF"
}

28. Delete Inbox Tags

Permanently delete one or more inbox tags in bulk.

Endpoint: DELETE /api/v1/workspaces/{workspace_id}/inbox/tags

cURL Example:

curl -X DELETE "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/tags" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "tag_ids": ["t_9003"]
}

cURL Response:

{
  "deleted": ["t_9003"]
}

29. Update an Inbox Tag

Rename or recolor an existing inbox tag.

Endpoint: PATCH /api/v1/workspaces/{workspace_id}/inbox/tags/{tag_id}

cURL Example:

curl -X PATCH "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/tags/{tag_id}" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "tag_name": "billing-issues",
  "tag_color": "#0057D9"
}

cURL Response:

{
  "tag_id": "t_9003",
  "tag_name": "billing-issues",
  "tag_color": "#0057D9"
}

30. Merge Inbox Tags

Merge two or more existing tags into a single new tag.

Endpoint: POST /api/v1/workspaces/{workspace_id}/inbox/tags/merge

cURL Example:

curl -X POST "https://api-prod.contentstudio.io/api/v1/workspaces/{workspace_id}/inbox/tags/merge" \
  -H "X-API-Key: <YOUR_API_KEY>"

Request Body:

{
  "tag_name": "customer-support",
  "tag_color": "#8E44AD",
  "tag_ids": ["t_9001", "t_9002"]
}

cURL Response:

{
  "tag_id": "t_9010",
  "tag_name": "customer-support",
  "tag_color": "#8E44AD",
  "merged_from": ["t_9001", "t_9002"]
}

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.


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.


Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us