Studio API
Studios often have integration needs with other internal tools and platforms they use to centralize data about their models and tippers that may span multiple platforms.
For Studio Plus accounts we offer an API that currently covers the following endpoints:
- Recent cam sessions: A list of the most recently (24h) completed cam sessions (broadcasts) of your models.
- Cam session details: A comprehensive list of stats and insights for the completed cam session.
info
If you are a studio with integration needs, reach out to CB Cam Insights support to discuss the API and the Studio Plus plan option. The details of the API below are geared towards developers to plug the data into your system.
Recent Cam Sessions API
Retrieve a list of cam sessions for the studio’s models that finished within the last 24 hours.
Endpoint
POST https://api.cbcaminsights.com/public_api/recent_cam_sessions
Request Body
Send a JSON object with the following properties (note that models
is optional here):
{
"apiKey": "your_api_key",
"models": ["modelA", "modelB"]
}
Property | Type | Required | Description |
---|---|---|---|
apiKey | string | Yes | Your API key for authentication |
models | string[] | No | List of model usernames; if omitted, returns sessions for all models in your studio` |
Response
Returns a JSON array of camsessionSummary
objects for all sessions that ended in the past 24 hours:
[
{
"camSessionId": 123456,
"performerName": "model_user",
"startTime": "2025-05-18T20:00:00Z",
"endTime": "2025-05-18T22:15:00Z",
"totalTokens": 15000,
"tipTokens": 9000,
"purchaseTokens": 5000,
"privateTokens": 1000,
"viewers": 120,
"followersAdded": 35,
"earningsPerHour": 6250.50,
"duration": "2h 15m"
}
]
camSessionSummary Schema
Property | Type | Description |
---|---|---|
camSessionId | integer | Unique identifier of the session |
performerName | string | Model's username |
startTime | string | ISO8601 timestamp when session started |
endTime | string | ISO8601 timestamp when session ended (nullable) |
totalTokens | integer | Total tokens earned |
tipTokens | integer | Tokens earned via tips |
purchaseTokens | integer | Tokens earned via purchases |
privateTokens | integer | Tokens earned via private shows |
viewers | integer | Peak concurrent viewers |
followersAdded | integer | New followers gained during session |
earningsPerHour | number | Token earnings per hour in USD (decimal) |
duration | string | Human-friendly duration (e.g., "1h 23m") |
Cam Session Details API
Retrieve detailed statistics and events for a specific cam session by its camSessionId
. This endpoint will only return data for cam sessions that were for one of the Studio's configured models.
Endpoint
POST https://api.cbcaminsights.com/public_api/cam_session_details
Request Body
Send a JSON object with the following properties:
{
"apiKey": "your_api_key",
"camSessionId": 123456
}
Property | Type | Required | Description |
---|---|---|---|
apiKey | string | Yes | Your API key for authentication |
camSessionId | integer | Yes | Identifier of the cam session to fetch details for |
Response
Returns a JSON object with the following structure:
{
"overallStats": { /* CamSessionSummary */ },
"summary": "Optional AI-generated session summary as text",
"tips": [ /* TipWithTimeSpenderAndTipMenuItem[] */ ],
"purchases": [ /* PurchaseWithTimeAndSpender[] */ ],
"satisfactionScores": [ /* SatisfactionScoreDetails[] */ ]
}
CamSessionSummary
Aggregate stats for this cam session, same data that's returned for each cam session from the Recent Cam Sessions endpoint.
Property | Type | Description |
---|---|---|
camSessionId | integer | ID of the session (matches request parameter) |
performerName | string | Model's username |
startTime | string | ISO8601 timestamp when session started |
endTime | string | ISO8601 timestamp when session ended (nullable, null if still live) |
totalTokens | integer | Total tokens earned |
tipTokens | integer | Tokens earned via tips |
purchaseTokens | integer | Tokens earned via purchases |
privateTokens | integer | Tokens earned via private shows |
viewers | integer | Peak concurrent viewers |
followersAdded | integer | New followers gained during the session |
earningsPerHour | number | Earnings in USD per hour (decimal) |
duration | string | Human-friendly duration (e.g., "1h 23m") |
TipWithTimeSpenderAndTipMenuItem
Property | Type | Description |
---|---|---|
time | string | ISO8601 timestamp of the tip |
amount | integer | Token amount tipped |
tipper | string | Username of the tipper |
tipMenuItem | string | Name of the matched tip menu item (if applicable) |
PurchaseWithTimeAndSpender
Property | Type | Description |
---|---|---|
time | string | ISO8601 timestamp of the purchase |
item | string | Name of the purchased menu item |
amount | integer | Token amount spent |
buyer | string | Username of the buyer |
SatisfactionScoreDetails
Property | Type | Description |
---|---|---|
time | string | ISO8601 timestamp when the score was recorded |
upVotes | integer | Number of positive satisfaction votes |
downVotes | integer | Number of negative satisfaction votes |
percent | number | Percentage of positive votes (0–100) |
max | integer | Maximum possible score or votes scale used |
Example Request
POST /public_api/cam_session_details HTTP/1.1
Host: api.cbcaminsights.com
Content-Type: application/json
{
"apiKey": "ABC123",
"camSessionId": 123456
}
Example Response
{
"overallStats": {
"camSessionId": 123456,
"performerName": "model_user",
"startTime": "2025-05-18T20:00:00Z",
"endTime": "2025-05-18T22:15:00Z",
"totalTokens": 15000,
"tipTokens": 9000,
"purchaseTokens": 5000,
"privateTokens": 1000,
"viewers": 120,
"followersAdded": 35,
"earningsPerHour": 6666.66,
"duration": "2h 15m"
},
"summary": "The model delivered an engaging session with steady peaks of activity...",
"tips": [
{
"time": "2025-05-18T20:05:23Z",
"amount": 100,
"tipper": "user123",
"tipMenuItem": "Cheerful Wave"
}
],
"purchases": [
{
"time": "2025-05-18T21:45:10Z",
"item": "VIP Show",
"amount": 5000,
"buyer": "user456"
}
],
"satisfactionScores": [
{
"time": "2025-05-18T22:14:00Z",
"upVotes": 45,
"downVotes": 5,
"percent": 90.0,
"max": 50
}
]
}