ComusThumbz Documentation
Admin Login

Name

Hướng dẫn hợp nhất bên ngoàiName

Phiên bản: 1.0.0
Tạo: 2026-02-03


Toàn cảnh

Hệ thống biểu diễn Webcam ComusThumbz kết hợp những người biểu diễn trực tiếp từ tới 11 nền tảng bên ngoài thành một kinh nghiệm duyệt thống nhất. Trình làm việc đồng bộ với công việc cron, được cất giữ trong tblCamsPerformers (~400K+ thu âm), và được phục vụ thông qua hệ điều hành nội bộ tại /ct/api/v1/cams.

Hệ thống này có hai lớp:

  1. Name - Những diễn viên biểu diễn của CrakRa bồn (performersext-api.pcvdaa.com) Cung cấp dữ liệu trình diễn từ các nền tảng như luồng, Chaturbate, Stripchat, vv.
  2. Name - Công ty chăm sóc trẻ em ComusThumbz của riêng mình/ct/api/v1/cams/) Phục vụ dữ liệu bộ trình diễn chuẩn cho giao diện điều khiển bằng cách lưu và lọc.
Ghi chú: Bên ngoài ARI yêu cầu ủy nhiệm ( Phím API + tín hiệu) được cung cấp bởi đội hỗ trợ của CrakRavue. Những thứ này được cấu hình trên bảng quảng cáo.

Kiến trúc hệ thống

External Cam Platforms (Chaturbate, Streamate, Stripchat, etc.)
        |
        v
CrakRevenue Performers Ext API (performersext-api.pcvdaa.com)
        |
        v
Cron: cronupdatecams.php (every 5-10 min)
        |
        v
Site-Specific Handlers (ct/admin/apis/cams.php)
        |
        v
tblCamsPerformers (normalize & store ~400K records)
        |
        v
Cron: updatecamperformerstats.php (every 1-5 min)
        |
        v
tblCamsPerformersStatsCache (pre-calculated counts)
        |
        v
Internal REST API: WebcamController (/ct/api/v1/cams/)
        |     |-- APCu cache (30s TTL)
        |     |-- Stats cache for COUNT queries
        |     |-- Fast mode (skip COUNT entirely)
        v
Frontend Pages (camperformers.php, camperformer.php, camfilter.php)
        |
        v
User clicks performer -> click.php (skim tracking) -> External chat room

ARI bên ngoài: phần mở màn

Các trình diễn của CrakRa bồn là nguồn dữ liệu chính của máy quay.

URL cơ bản: https://performersext-api.pcvdaa.com/performers-ext

Phương pháp: GET /performers-ext

Xác thực

Cần có ba yếu tố xác thực cho mỗi yêu cầu:

Nhận diệnKiểuMô tả
x-api-keyĐầu trang HTTPComment
tokenTham số truy vấnName
User-AgentĐầu trang HTTPPhải có mặt (không có gen người dùng nhận được 403)
Cảnh báo: Cả chìa khóa và thẻ tín dụng đều bị khóa miền. Chúng chỉ được phát hành cho những trang web có thẩm quyền. Token không thể tái sử dụng hoặc chuyển sang các trang web khác nếu không có sự đồng ý của CrakRanue.

Yêu cầu ví dụ:

curl --location 'https://performersext-api.pcvdaa.com/performers-ext/?token=&gender=f&live=true&page=1&size=10' \
--header 'x-api-key: ' \
--header 'User-Agent: ComusThumbz/1.0'

Truy vấn tham số

Tham sốKiểuCần thiếtMô tảMặc định
tokenchuỗiVângKý hiệu xác thực-
brandschuỗiKhôngDanh sách thương hiệu phân phối (v. d. "streamate,chaturbate")Tất cả các nhãn hiệu sẵn sàng cho biểu tượng của bạn
pagesốKhôngSố trang (phải là > = 1)1
sizesốKhôngMục trên mỗi trang (1-100, giá trị > 100 gói tại 100)1
sortingchuỗiKhôngPhương pháp sắp xếp: score. relevance. mostRecent. alphabetical. topRated. randomscore
genderchuỗiKhôngBộ lọc giới: f (Nemale) m (male) c (Vỗ tay) t (trans)f
live(Tiếng Tây Ban Nha)KhôngChỉ bộ lọc cho trình diễn trực tiếpfalse
tagschuỗiKhôngDấu chấm phẩy (v. d. "athletic,curvy")-
ethnicitieschuỗiKhôngPhân biệt chủng tộc (v. "caucasian,asian")-
ageschuỗiKhôngNhóm tuổi riêng (e.g. "gc1819,gc2029")-
langchuỗiKhôngNgôn ngữ cho đáp ứng i18n: en. es. fr. it. de. pten
namechuỗiKhôngTên của trình diễn rõ ràng (v. d. misshornymiss)-

Giá trị sắc tộc sẵn có:

  • caucasian. ebony. hispanic. asian. indian. arab. native american

Giá trị nhóm tuổi:

  • gc1819. gc2029. gc3039. gc4049. gc50plus

Định dạng trả lời

Đáp ứng thành công (200 OK):

{
    "count": 213,
    "performers": [
        {
            "nameClean": "misshornymiss",
            "characteristic": {
                "bodyTypes": ["Slender"],
                "country": "CA",
                "gender": "f",
                "languages": ["English", "French"],
                "bustSize": "DD/E",
                "ethnicities": ["White"],
                "genderCode": "f",
                "eyeColor": "Green",
                "hairColor": "Red",
                "age": 47,
                "height": "65",
                "weight": "145",
                "measurements": "34-27-36\" (86-69-91cm)",
                "zodiac": "Scorpio",
                "pubicHair": "Hairy",
                "bodyMods": ["Tattoos"],
                "fetishes": ["Feet", "Anal", "Roleplay", "Submissive", "Deepthroat"],
                "bodyHairs": [],
                "sexualPreferences": ["Bisexual"],
                "theme": "Toys,Housewives"
            },
            "score": 5,
            "live": true,
            "iframeFeedURL": "https://hybridclient.naiadsystems.com/purecam?performer=misshornymiss&performerid=88333014&volumelevel=0&widescreen=true",
            "roomUrl": "https://t.crjmpy.com/158626/6358?affsub4=AT0007&model=misshornymiss",
            "i18n": {
                "characteristic": { "country": "Canada", "gender": "Woman" },
                "description": "Self-description text...",
                "expertise": "Specialties text...",
                "turnOns": "Preferences text..."
            },
            "updatedDate": "2025-05-07T18:37:27.019Z",
            "customTags": ["langenglish", "langfrench", "gc4049", "gccanada"],
            "totalVideos": 54,
            "characteristicsTags": ["anal", "bisexual", "caucasian", "deepthroat"],
            "autoTags": ["blowjob", "dirty talk", "feet", "housewife"],
            "stars": 5,
            "systemScore": 0.99631191,
            "systemSource": "streamate",
            "lastConnection": "2025-04-28T19:51:04.000Z",
            "itemId": "streamate88333014",
            "createdDate": "2022-09-03T05:14:07.506Z",
            "name": "misshornymiss",
            "thumbnailUrl": "https://imagetransform.icfcdn.com/avatar/misshornymiss.webp"
        }
    ]
}

Tham khảo đối tượng chạy

Thông tin cơ bản

Thuộc tínhKiểuMô tảTrong bản dịch Lite
namechuỗiHiện tênVâng
nameCleanchuỗiTên tiêu chuẩn hệ thốngVâng
itemIdchuỗiNhận diện duy nhất (platformid)Vâng
thumbnailUrlchuỗiURL ảnh hồ sơVâng
roomUrlchuỗiLiên kết trực tiếp từ căn phòng (theo dõi liên lạc)Vâng

Trạng thái & mét

Thuộc tínhKiểuMô tảTrong bản dịch Lite
live(Tiếng Tây Ban Nha)Đang truyềnVâng
scoresốĐánh giá nhà cung cấpKhông
starssốĐánh giá sao (15)Vâng
systemScoresốĐánh giá hệ thống nội bộ (0- 1)Không
totalVideossốSố video sẵn sàngKhông
systemSourcechuỗiBộ nhận diện nền tảng (e.g. streamate)Vâng

Nhãn thời gian

Thuộc tínhKiểuMô tảTrong bản dịch Lite
createdDatechuỗiNgày tạo hồ sơ (ISO 8601)Vâng
updatedDatechuỗiCập nhật hồ sơ cuối (ISO 8601)Không
lastConnectionchuỗiHoạt động cuối (ISO 8601)Không

Dòng

Thuộc tínhKiểuMô tảTrong bản dịch Lite
iframeFeedURLchuỗiURL đường luồng cho tôi khungVâng

Đối tượng kí tự

Thuộc tínhKiểuMô tảTrong bản dịch Lite
agesốTuổi biểu diễnVâng
heightchuỗiChiều cao theo inchKhông
weightchuỗiNặng bằng cân.Không
measurementschuỗiĐo cơ thểKhông
bustSizechuỗiKích cỡ BraVâng
hairColorchuỗiMàu tócVâng
eyeColorchuỗiMàu mắtVâng
pubicHairchuỗiNameKhông
gender / genderCodechuỗiBộ nhận diện trình GenderVâng
countrychuỗiMã quốc gia hai chữ cáiVâng
languageschuỗi []Ngôn ngữ nóiVâng
ethnicitieschuỗi []Nền tảng sắc tộcVâng
bodyTypeschuỗi []Kiểu chữ kýVâng
bodyModschuỗi []CommentKhông
bodyHairschuỗi []Đặc điểm tócKhông
zodiacchuỗiDấu hiệu chiêm tinhKhông
sexualPreferenceschuỗi []Định hướng giới tínhKhông
fetisheschuỗi []Lợi ích cá nhânKhông
themechuỗiNameKhông

Thẻ

Thuộc tínhKiểuMô tảTrong bản dịch Lite
customTagschuỗi []NameVâng
characteristicsTagschuỗi []NameVâng
autoTagschuỗi []NameVâng

i18n (sự quốc tế hóa)

Thuộc tínhKiểuMô tảTrong bản dịch Lite
characteristicđối tượngCác tính chất đã dịch ( cùng cấu trúc)Vâng
descriptionchuỗiTự mô tảKhông
expertisechuỗiĐặc biệtKhông
turnOnschuỗiTùy thíchKhông
Ghi chú: Phiên bản lite được bật theo mặc định cho hiệu suất làm việc tốt hơn (từ tốn, tải nhỏ hơn). Liên lạc với giám đốc điều hành CrakR evenue để kích hoạt phiên bản đầy đủ.

Comment

Mã Trạng tháiĐáp ứngNguyên nhân
403 bị cấm{"message": "Forbidden"}Comment
403 bị cấmTrang lỗi HTMLThiếu User-Agent đầu trang
401 không được phép{"message": "Unauthorized: brands not allowed"}Yêu cầu các nhãn hiệu không được ủy quyền cho các bạn.
401 không được phép{"message": "Unauthorized: No token provided"}Thiếu token Tham số truy vấn
401 không được phép{"message": "Unauthorized: Failed to retrieve token data"}hiệu suất không hợp lệ
Yêu cầu 400 Sai{"error": "string"}Lỗi cấp dịch vụ
Comment{"message": "Internal Server Error"}Lỗi bên máy phục vụ

Nhãn được hỗ trợ

NhãnNền tảng
streamateDòng chảy
mfcMy FreeCams
chaturbateChaturbate
bongacashBongaCams
awempireLiveJasmin
stripchatThoát y
imliveImLive
Cảnh báo: Anh chỉ có thể lấy những nghệ sĩ từ các thương hiệu được ủy quyền cho vật kỷ niệm của anh. Yêu cầu thương hiệu trái phép trả lại lỗi 401.

& Hiệu suất đăng nhập

Mẹo: Sử dụng tối đa 12 diễn viên mỗi trang cho hiệu suất tốt nhất. Càng nhiều diễn viên yêu cầu, thời gian đáp ứng càng lâu.

Tham số chú thích:

Tham sốKiểuMặc địnhMô tả
pagesố1Số trang
sizesố1Trình xem mỗi trang (50 100)

Trang đầu trong số 6 người biểu diễn:

https://performersext-api.pcvdaa.com/performers-ext?token=<YOURTOKEN>&gender=f&live=true&lang=en&page=1&size=6

Example - Next page:

https://performersext-api.pcvdaa.com/performers-ext?token=<YOURTOKEN>&gender=f&live=true&lang=en&page=2&size=6

Caching: Performer data is cached server-side for 30 seconds.

Tags Reference

Available tag values for the tags query parameter:

anal, athletic, bbw, curvy, dancing, beautiful, black hair, blowjob, bdsm,
bondage, deepthroat, dirty talk, big ass, big tits, blond hair, brown hair,
dominant, findom, femdom, feet, housewife, kinky, milf, muscular, hairy,
masturbation, petite, red hair, skinny, sex toy, squirt, striptease,
submissive, tattoos

Fallback Strategy

The API can return empty results (count: 0, empty performers array). Implement a fallback:

  1. Send request with all desired filters (e.g., live=true&ethnicities=caucasian&tags=anal,athletic,bbw)
  2. If empty result, retry with fewer filters (e.g., live=true&ethnicities=caucasian)
  3. If still empty, retry with minimal filters (e.g., live=true)

 

Tip: The fallback implementation is client-side. Progressively remove the most restrictive filters first (tags, then ethnicities, then age groups).

 

Embedding Live Streams

To embed a live performer's stream feed in an iframe:

  1. Fetch a live performer from the API
  2. Use iframeFeedURL for the iframe src
  3. Use roomUrl for the click-through link
<a id="testLink" href="PERFORMEROBJECT.roomUrl" target="blank">
    <iframe
        id="testIframe"
        src="PERFORMEROBJECT.iframeFeedURL"
        frameborder="0"
        allow="autoplay; encrypted-media"
        sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox"
        style="pointer-events: none; width: 100%; height: 100%; border: none;"
    ></iframe>
</a>

 

Warning: The iframe must have pointer-events: none so clicks pass through to the wrapping <a> tag, which opens the performer's room in a new tab with affiliate tracking.

 

Tracking URLs

Each performer's roomUrl contains affiliate tracking parameters. The URL format is:

https://{domain}/{affiliateid}/{path}?{trackingparams}&model={performerName}

Example with affiliate ID 1:

https://t.crjmpy.com/1/3?affsub1=documentation&model=misshornymiss

 

Error: Your affiliate ID must be included in the roomUrl for successful commission tracking. Missing affiliate IDs mean lost revenue.

 

ComusThumbz Integration: All external performer links are routed through click.php for skim tracking:

$clickurl = sprintf('click.php?url=%s&type=camperformer&id=%d',
    urlencode($performer['chatroomurl']), $performer['performerid']);

CURL Request Examples

Fetch 10 female caucasian performers:

curl --location 'https://performersext-api.pcvdaa.com/performers-ext/?token=<YOURTOKEN>&gender=f&ethnicities=caucasian&page=1&size=10' \
--header 'x-api-key: <YOURAPIKEY>'

Fetch one live female performer:

curl --location 'https://performersext-api.pcvdaa.com/performers-ext/?gender=f&live=true&token=<YOURTOKEN>&size=1&page=1' \
--header 'x-api-key: <YOURAPIKEY>'

Fetch a specific performer (requires name AND brand):

curl --location 'https://performersext-api.pcvdaa.com/performers-ext/?name=misshornymiss&brands=streamate&token=<YOURTOKEN>&size=1&page=1' \
--header 'x-api-key: <YOURAPIKEY>'

Fetch performers by age group:

curl --location 'https://performersext-api.pcvdaa.com/performers-ext/?token=<YOURTOKEN>&ages=gc2029&size=6&page=1' \
--header 'x-api-key: <YOURAPIKEY>'

Internal API Endpoints

The internal ComusThumbz REST API normalizes external performer data and serves it to the frontend.

Base URL: https://{domain}/ct/api/v1

Controller: ct/api/v1/controllers/WebcamController.php
Model: ct/api/v1/models/WebcamModel.php

GET /cams

List all performers with filtering.

Parameter Type Default Description
page int 1 Page number
perpage int 20 Items per page (max 100)
isonline int - 0 or 1 - filter by online status
site int - Site ID (1-11)
gender string - f, m, c, t
race string - Ethnicity filter
hair string - Hair color filter
bust string - Bust size filter
figure string - Figure type filter
hd int - HD stream filter (0 or 1)
minage int - Minimum age
maxage int - Maximum age
minviewers int - Minimum viewer count
search string - Search by username
sortby string - Sort field

Example:

GET /ct/api/v1/cams?page=1&perpage=20&gender=f&isonline=1&sortby=viewers

GET /cams/online

Get only online performers. This is the primary endpoint used by camperformers.php.

Parameter Type Default Description
page int 1 Page number
perpage int 20 Items per page (max 100)
site int - Site ID filter
gender string - Gender filter
minviewers int - Minimum viewers
race string - Ethnicity filter
hair string - Hair color filter
bust string - Bust size filter
figure string - Figure type filter
country string - Country filter
tags string - Tags filter
language string - Language filter
location string - Location filter
isnew int - New performer filter
hd int - HD filter
excludeid int - Exclude specific performer
sortby string - Sort: viewers, followers, newest, newmodels, favorited, experienced, ageasc, agedesc, hdfirst, alphabetical
fast int - Set to 1 to skip COUNT query (returns "unknown" total)

Example:

GET /ct/api/v1/cams/online?page=1&perpage=24&gender=f&sortby=viewers&fast=1

Get top/featured performers.

Parameter Type Default Description
limit int 10 Number of performers
criteria string - viewers, new, or popular

GET /cams/stats

Get global webcam statistics (no parameters). Returns counts from tblCamsPerformersStatsCache.

Response includes: total performers, online count, offline count, per-site counts, per-gender counts, HD count, etc.

GET /cams/sites

List all enabled cam sites from tblCamsSites. No parameters.

GET /cams/filters

Get all available filter options (races, hair colors, bust sizes, figures, etc.). No parameters. Used to populate filter dropdowns on the frontend.

GET /cams/races

Get all available race/ethnicity values. No parameters.

GET /cams/{id}

Get a performer by their performerid (primary key lookup).

GET /cams/{site}/{username}

Get a performer by site ID and username (composite index lookup).

GET /cams/{site}/{username}/status

Check if a specific performer is currently online. Returns {online: true/false}.

GET /cams/{id}/schedule

Get a performer's schedule/heatmap data showing when they're typically online.

Comments & Ratings

Method Endpoint Description
GET /cams/{site}/{performer}/comments Get comments on a performer
POST /cams/{site}/{performer}/comments Add comment (requires auth)
POST /cams/{site}/{performer}/rate Rate performer (requires auth)

Favorites

Method Endpoint Description
GET /favorites/cams Get user's cam favorites
POST /favorites Add favorite (body: {"contenttype":"camperformer","contentid":"123"})

Internal Response Format:

{
    "success": true,
    "data": {
        "performers": [
            {
                "performerid": 12345,
                "site": 1,
                "username": "performername",
                "gender": "f",
                "age": 25,
                "race": "asian",
                "numusers": 150,
                "status": 1,
                "hd": 1,
                "imageurl": "https://cdn.example.com/...",
                "chatroomurl": "https://example.com/performer"
            }
        ]
    },
    "pagination": {
        "page": 1,
        "perpage": 20,
        "total": 45000,
        "totalpages": 2250,
        "hasmore": true
    },
    "message": "Performers retrieved successfully"
}

 

Admin Configuration

Cam Sites Settings

Navigate to Admin Panel -> Cam Settings (ct/admin/camssettings.php)

Features:

  • Enable/disable individual cam sites
  • Set API credentials (API key and token) per site
  • Configure sync frequency
  • View sync logs
  • Toggle site availability on the frontend

Config Variables

Relevant settings in ct/dat/config.inc.php:

$domain = 'comusthumbzdemo.com';
$apibaseurl = "https://{$domain}/ct/api/v1";

Cam API credentials are stored per-site in tblCamsSites:

  • apiData field stores the x-api-key value
  • parameters field stores the token value

 


Cron Jobs

 

Configuration Required:
The following cron jobs must be running for the cam system to function. Without them, performer data becomes stale and online status is incorrect.

 

Cron Job File Frequency Purpose
Cam Data Sync ct/admin/cronupdatecams.php Every 5-10 minutes Fetch performers from all enabled external APIs
Stats Cache Update ct/admin/cron/updatecamperformerstats.php Every 1-5 minutes Update tblCamsPerformersStatsCache with fresh counts
Cam Maintenance ct/admin/cron/maintenancecamperformers.php Daily Cleanup deleted performers, fix missing fields

Crontab Example:

/5     php /path/to/ct/admin/cronupdatecams.php
/2     php /path/to/ct/admin/cron/updatecamperformerstats.php
0 3    php /path/to/ct/admin/cron/maintenancecamperformers.php

Frontend Pages

camperformers.php - Browse Page

The main cam browsing page with infinite pagination and advanced filtering.

URL: https://{domain}/camperformers.php

Features:

Grid display of performer cards (24 or 48 per page)Advanced filters: gender, race, hair, bust, figure, site, HD, ageSort options: viewers, followers, newest, new models, favorited, experienced, age, HD first, alphabetical

  • Search by username/displayname/tags
  • Favorites support (logged-in users)
  • Performance debug panel (?debug=1)
  • Feature guard: requires featurelivecams to be enabled

 

JavaScript API calls:

  • GET /ct/api/v1/cams/online - Main content load
  • GET /ct/api/v1/cams/sites - Populate site filter dropdown
  • GET /ct/api/v1/favorites (checkMultipleFavorites) - Batch load favorite states
  • POST /ct/api/v1/favorites/{type}/{id} - Toggle favorites

 

camperformer.php - Detail Page

Individual performer profile page.

URL: https://{domain}/camperformer.php?id={performerid}

Features:

  • Server-side SEO data loading (meta tags, Open Graph)
  • Performer profile: image, bio, stats
  • Online/offline status badge with viewer count
  • HD badge when available
  • External chat link (routed through click.php)
  • Related performers (same tags/gender)
  • Schedule/heatmap display
  • Comments and ratings

 

camfilter.php - Filter Results

Filter-specific results page.

URL: https://{domain}/camfilter.php?type={filtertype}&value={filtervalue}

Supported filter types: tag, gender, race, hair, bust, figure, language, site, country, location, pubicarea, isnew, hd, model


Data Flow

External API to Database

1. Cron: cronupdatecams.php runs every 5-10 minutes
  1. For each enabled site in tblCamsSites:
   a. Load site-specific handler (ct/admin/apis/cams{site}api.php)
   b. For external API sites: PerformersExtApiClient calls performersext-api.pcvdaa.com
   c. Parse response, normalize to standard format
   d. INSERT/UPDATE tblCamsPerformers
   e. Set status=1 for online performers, status=0 for offline
  1. Cron: updatecamperformerstats.php updates tblCamsPerformersStatsCache

Database to Frontend

1. User visits camperformers.php
  1. JavaScript calls GET /ct/api/v1/cams/online with filter params
  2. WebcamController receives request
  3. WebcamModel checks APCu cache (30s TTL)
 
  • Cache hit: return cached data
  • Cache miss: query tblCamsPerformers with filters
 

For pagination totals: use tblCamsPerformersStatsCache (or skip with fast=1)Return JSON responseJavaScript renders performer cards

  1. User clicks performer -> click.php -> external chat room

Site-Specific API Handlers

Located in ct/admin/apis/:

File Platform
camschaturbateapi.php Chaturbate
camsstripchatapi.php Stripchat
camsbongacamsapi.php BongaCams
camscam4api.php Cam4
camscambuilderapi.php CamBuilder
camscamsodaapi.php CamSoda
camscherrytvapi.php CherryTV
camsflirt4freeapi.php Flirt4Free
camsxloveapi.php XLove
camsimliveapi.php ImLive
camslivejasminapi.php LiveJasmin
camsmfcapi.php MyFreeCams
PerformersExtApiClient.php Unified external API client

Performance & Caching

Three-Layer Caching Strategy

  1. APCu In-Memory Cache (30-second TTL)
  • Used by WebcamModel::getOnlinePerformers()
  • Cache key: MD5 hash of page + perPage + filters + fastMode
  • Fastest layer - serves repeated identical requests instantly
  1. Database Stats Cache (tblCamsPerformersStatsCache)
  • Updated by cron every 1-5 minutes
  • Avoids expensive COUNT() queries on 400K+ rows
  • Estimates per-site and per-gender counts
  1. Fast Mode (?fast=1)

Skips COUNT() entirelyReturns "unknown" as total count

  • Frontend detects end-of-results when page returns fewer items than perpage
  • Used for initial page loads

Query Optimization

-- Optimized online query (uses indexes, no COUNT)
SELECT performerid, username, imageurl, numusers, site, status
FROM tblCamsPerformers
WHERE status = 1
  AND deleted = 0
  AND enabled = 1
  AND gender = 'f'
ORDER BY numusers DESC
LIMIT 24 OFFSET 0;

 

Tip: The external API recommends a maximum of 12 performers per page. The internal API allows up to 100 but 24-48 is optimal for frontend performance.

 


Testing with API Tester

The built-in API Tester (ct/admin/apitester.php) can be used to test cam endpoints:

Navigate to Admin Panel -> API TesterSet the method to GET

  1. Enter endpoint: /cams/online?page=1&perpage=5&gender=f
  2. Click Send Request
  3. View the JSON response with performer data

Useful test endpoints:

Endpoint What it Tests
/cams/stats Verify cron jobs are running (check counts)
/cams/sites Verify site configuration
/cams/online?perpage=1&fast=1 Quick test of online performers
/cams/filters Verify available filter options
/cams/123 Test single performer lookup

Troubleshooting

 

Error:
No performers appearing on the frontend

 

  1. Check cron jobs are running: php ct/admin/cronupdatecams.php
  2. Verify API credentials in Admin -> Cam Settings
  3. Check tblCamsSites for enabled sites
  4. Verify featurelivecams is enabled in feature toggles
  5. Check logs: ct/logs/cron-update.log

 

Error:
All performers showing as offline

 

  1. Run the cron update: php ct/admin/cronupdatecams.php
  2. Check if external API is responding (test with CURL)
  3. Verify API token hasn't expired
  4. Check tblCamsPerformers for status values: SELECT COUNT(*) FROM tblCamsPerformers WHERE status=1

 

Error:
External API returning 403 Forbidden

 

  1. Verify x-api-key is set correctly in tblCamsSites.apiData
  2. Ensure User-Agent header is being sent
  3. Check if API key has been revoked by CrakRevenue

 

Error:
External API returning 401 Unauthorized

 

  1. Verify token is set correctly in tblCamsSites.parameters
  2. Check if requesting unauthorized brands
  3. Token may be domain-bound - verify it's for your domain

 

Error:
Slow page load for cam performers

 

Enable fast mode: ensure frontend uses ?fast=1Check APCu is installed and enabled: php -m | grep apcuVerify stats cache cron is running
  1. Reduce perpage to 24 or less
  2. Use debug mode (?debug=1) to identify bottleneck

 

Error:
Clicks not being tracked / affiliate revenue missing

All external performer links MUST go through click.php:

$clickurl = sprintf('click.php?url=%s&type=camperformer&id=%d',

    urlencode($externalurl), $performerid);

Direct links bypass tracking and result in 100% skim penalty.

AdminModeration

GET /api/v1/adminmoderation

Bulk approve POST /api/v1/admin/moderation/bulk/approve

  • Auth Required: PUBLIC

DELETE /api/v1/adminmoderation

Delete content (DMCA takedown) DELETE /api/v1/admin/moderation/{type}/{id}

  • Auth Required: PUBLIC

AdminUsers

GET /api/v1/adminusers

Get user activity log GET /api/v1/admin/users/{id}/activity

  • Auth Required: PUBLIC

PUT /api/v1/adminusers

Update user PUT /api/v1/admin/users/{id}

  • Auth Required: PUBLIC

Ads

GET /api/v1/ads

Get ad statistics (Admin) GET /api/v1/admin/ads/{id}/stats

  • Auth Required: PUBLIC

Analytics

GET /api/v1/analytics

Get traffic analytics GET /api/v1/analytics/traffic

  • Auth Required: PUBLIC

Auth

GET /api/v1/auth

Disable 2FA DELETE /api/v1/auth/2fa

  • Auth Required: PUBLIC

Banners

GET /api/v1/banners

Get banner statistics GET /api/v1/banners/{id}/stats

  • Auth Required: PUBLIC
  • Parameters:
  • bannerId (int): Banner ID

Categories

GET /api/v1/categories

Get galleries in category GET /api/v1/categories/{id}/galleries

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Category ID

POST /api/v1/categories

Create new category (admin only) POST /api/v1/categories

  • Auth Required: PUBLIC

PUT /api/v1/categories

Update category (admin only) PUT /api/v1/categories/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Category ID

DELETE /api/v1/categories

Delete category (admin only) DELETE /api/v1/categories/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Category ID

ClickTracking

GET /api/v1/clicktracking

GET /api/v1/stats/clicks/user/{userId} Get user's click history (User must be authenticated)

  • Auth Required: PUBLIC

Comments

GET /api/v1/comments

GET /api/v1/comments/flagged Get all flagged comments (admin only)

  • Auth Required: PUBLIC

POST /api/v1/comments

POST /api/v1/cams/{site}/{performer}/comments Add a comment to a webcam performer

  • Auth Required: PUBLIC

PUT /api/v1/comments

PUT /api/v1/comments/{id}/status Update comment status (admin only)

  • Auth Required: PUBLIC

DELETE /api/v1/comments

DELETE /api/v1/comments/{id}/like Remove like/dislike from a comment

  • Auth Required: PUBLIC

CreatorEarnings

GET /api/v1/creatorearnings

GET /creator/earnings/platform-settings - Get platform fee settings Returns global platform fee and creator's custom fee if applicable This endpoint is PUBLIC (no auth required) for display purposes

  • Auth Required: PUBLIC

CreatorProfiles

GET /api/v1/creatorprofiles

CreatorProfilesController - Creator profile management

  • Auth Required: PUBLIC

POST /api/v1/creatorprofiles

POST /creator/profile - Create new creator profile

  • Auth Required: PUBLIC

PUT /api/v1/creatorprofiles

PATCH /creator/profile/me - Update authenticated creator's profile

  • Auth Required: PUBLIC

Creators

GET /api/v1/creators

POST /api/v1/creators/me/cover Upload creator cover image

  • Auth Required: PUBLIC

PUT /api/v1/creators

PUT /api/v1/creators/me Update creator profile settings

  • Auth Required: PUBLIC

CreatorSubscriptions

GET /api/v1/creatorsubscriptions

DELETE /creators/{id}/packages/{packageid} - Creator disables a package

  • Auth Required: PUBLIC

Earnings

GET /api/v1/earnings

GET /api/v1/creator/earnings/by-source Get earnings breakdown by source (tips, subscriptions, PPV) Includes counts and totals

  • Auth Required: PUBLIC

Favorites

GET /api/v1/favorites

GET /favorites/counts Get user's favorites counts by type

  • Auth Required: PUBLIC

POST /api/v1/favorites

POST /favorites Add item to favorites Body: { "contenttype": "video|gallery|camperformer|model", "contentid": "123", "notes": "optional" }

  • Auth Required: PUBLIC

DELETE /api/v1/favorites

DELETE /favorites/{type}/{id} Remove from favorites

  • Auth Required: PUBLIC

Features

GET /api/v1/features

Get enabled cam sites GET /api/v1/features/cams

  • Auth Required: PUBLIC

Feed

GET /api/v1/feed

Get trending content GET /api/v1/feed/trending

  • Auth Required: PUBLIC

Friends

GET /api/v1/friends

Reject friend request PUT /api/v1/friends/{id}/reject

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Friendship ID

POST /api/v1/friends

Send friend request POST /api/v1/friends

  • Auth Required: PUBLIC

DELETE /api/v1/friends

Remove friend DELETE /api/v1/friends/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Friendship ID

Galleries

GET /api/v1/galleries

GET /galleries/{id}/related - Get related galleries

  • Auth Required: PUBLIC

POST /api/v1/galleries

POST /galleries - Create gallery (admin only)

  • Auth Required: PUBLIC

PUT /api/v1/galleries

PATCH /galleries/{id}/status - Update gallery status (admin only)

  • Auth Required: PUBLIC

DELETE /api/v1/galleries

DELETE /galleries/{id} - Delete gallery (admin only)

  • Auth Required: PUBLIC

ImpressionTracking

GET /api/v1/impressiontracking

GET /api/v1/impressions/trends/{type} Get performance trends over time

  • Auth Required: PUBLIC

LiveStream

GET /api/v1/livestream

GET /api/v1/live/{id}/per-minute/status Get current per-minute session status

  • Auth Required: PUBLIC

Media

GET /api/v1/media

Get storage URL for a specific video file

  • Auth Required: PUBLIC
  • Parameters:
  • videoId (int): Video ID
  • fileType (string): File type (thumbnail, preview, poster, video, hls, etc.)
  • Returns: void - (returns download URL or error)

Messages

GET /api/v1/messages

Get list of blocked users GET /api/v1/messages/blocked

  • Auth Required: PUBLIC

DELETE /api/v1/messages

Delete a message DELETE /api/v1/messages/{id}

  • Auth Required: PUBLIC

Models

GET /api/v1/models

GET /api/v1/models/{id}/details Get unified model details Query params: - type: regular|cammodel (required)

  • Auth Required: PUBLIC

POST /api/v1/models

POST /api/v1/models Create new model (admin only)

  • Auth Required: PUBLIC

PUT /api/v1/models

PUT /api/v1/modelclasses/{id}/status Update model status (admin only)

  • Auth Required: PUBLIC

DELETE /api/v1/models

DELETE /api/v1/modelclasses/{id} Delete model (admin only)

  • Auth Required: PUBLIC

Notifications

GET /api/v1/notifications

Get notification preferences GET /api/v1/notifications/preferences

  • Auth Required: PUBLIC

PUT /api/v1/notifications

Update notification preferences PUT /api/v1/notifications/preferences

  • Auth Required: PUBLIC

DELETE /api/v1/notifications

Delete notification (soft delete) DELETE /api/v1/notifications/{id}

  • Auth Required: PUBLIC

Player

GET /api/v1/player

Player Controller Handles video player configuration and settings

  • Auth Required: PUBLIC

Playlists

GET /api/v1/playlists

PUT /playlists/{id}/items/reorder Reorder playlist items (owner only) Body: { "items": [ { "itemid": 1, "sortorder": 0 }, { "itemid": 2, "sortorder": 1 } ] }

  • Auth Required: PUBLIC

POST /api/v1/playlists

POST /playlists/{id}/items Add video to playlist (owner only) Body: { "videoid": 123, "sortorder": 1 }

  • Auth Required: PUBLIC

PUT /api/v1/playlists

PUT /playlists/{id} Update playlist (owner only)

  • Auth Required: PUBLIC

DELETE /api/v1/playlists

DELETE /playlists/{id}/items/{itemId} Remove video from playlist (owner only)

  • Auth Required: PUBLIC

Posts

GET /api/v1/posts

GET /api/v1/posts/{id}/poll Get poll data for a post

  • Auth Required: PUBLIC
  • Parameters:
  • postId (int): Post ID

POST /api/v1/posts

POST /api/v1/posts/with-product Create a post with product attachment Handles multipart/form-data with files

  • Auth Required: PUBLIC

PUT /api/v1/posts

PUT /api/v1/posts/{id}/poll Update poll data for a post

  • Auth Required: PUBLIC
  • Parameters:
  • postId (int): Post ID

DELETE /api/v1/posts

DELETE /comments/{id} Delete a comment (soft delete)

  • Auth Required: PUBLIC

Products

GET /api/v1/products

Refund a merchandise purchase (Option 2: Proportional Loss) - User gets full refund (100%) - Creator loses their portion (80%) - Platform absorbs their portion (20%)

  • Auth Required: PUBLIC

POST /api/v1/products

Products Controller Handles creator merchandise/product operations

  • Auth Required: AUTH

PUT /api/v1/products

Update order shipping status and tracking number

  • Auth Required: PUBLIC

Ratings

GET /api/v1/ratings

GET /api/v1/models/{id}/rating Get rating stats for a model

  • Auth Required: PUBLIC

DELETE /search/history - Clear user's search history

  • Auth Required: PUBLIC

SecurityQuestions

GET /api/v1/securityquestions

Reset password using security question token POST /api/v1/auth/reset-password-with-token

  • Auth Required: PUBLIC

Settings

GET /api/v1/settings

Get video player settings GET /api/v1/settings/player

  • Auth Required: PUBLIC

PUT /api/v1/settings

Get all public settings (cached) This is the main method that builds the settings array / private function getPublicSettings(): array { global $conn;

  • Auth Required: PUBLIC

Sponsors

GET /api/v1/sponsors

Track sponsor click POST /api/v1/sponsors/{id}/click

  • Auth Required: PUBLIC

Styles

GET /api/v1/styles

Bulk save multiple styles at once POST /api/v1/styles/bulk

  • Auth Required: PUBLIC

DELETE /api/v1/styles

Delete a specific style override DELETE /api/v1/styles/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Style ID

Subscriptions

GET /api/v1/subscriptions

Upgrade subscription POST /api/v1/subscriptions/upgrade

  • Auth Required: PUBLIC

Tags

GET /api/v1/tags

Parse tag string and return tag IDs (creates tags if they don't exist) POST /api/v1/tags/parse

  • Auth Required: PUBLIC

POST /api/v1/tags

Create new tag (admin only) POST /api/v1/tags

  • Auth Required: PUBLIC

PUT /api/v1/tags

Update tag (admin only) PUT /api/v1/tags/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Tag ID

DELETE /api/v1/tags

Delete tag (admin only) DELETE /api/v1/tags/{id}

  • Auth Required: PUBLIC
  • Parameters:
  • id (int): Tag ID

Tips

GET /api/v1/tips

POST /api/v1/tips/{tipid}/refund Refund a tip (creator only) - Option 2: Proportional Loss User gets 100% back, creator loses their portion (80%), platform absorbs their portion (20%)

  • Auth Required: PUBLIC

UserPreferences

GET /api/v1/userpreferences

GET /user/preferences Get all user preferences (privacy, stream, email)

  • Auth Required: PUBLIC

PUT /api/v1/userpreferences

PUT /user/preferences/email Update user's email preferences

  • Auth Required: PUBLIC

Users

GET /api/v1/users

Get trusted devices for current user GET /api/v1/user/trusted-devices

  • Auth Required: PUBLIC

PUT /api/v1/users

Update profile privacy settings PUT /api/v1/users/me/privacy

  • Auth Required: PUBLIC

DELETE /api/v1/users

Remove a trusted device DELETE /api/v1/user/trusted-devices/{id}

  • Auth Required: PUBLIC

UserVerification

GET /api/v1/userverification

GET /admin/verification/stats Get verification statistics (admin only)

  • Auth Required: PUBLIC

PUT /api/v1/userverification

PUT /admin/verification/{userId}/status Update verification status (admin only)

  • Auth Required: PUBLIC

DELETE /api/v1/userverification

DELETE /user/verification/documents/{documentId} Delete a verification document

  • Auth Required: PUBLIC

VideoReports

GET /api/v1/videoreports

GET /video-reports/reasons - Get list of valid report reasons

  • Auth Required: PUBLIC

Videos

GET /api/v1/videos

Generate URL-friendly slug from title

  • Auth Required: PUBLIC
  • Parameters:
  • title (string):
  • Returns: string -

POST /api/v1/videos

POST /videos/{id}/tags - Add tag to video

  • Auth Required: PUBLIC

PUT /api/v1/videos

PATCH /videos/{id}/status - Update video status (admin only)

  • Auth Required: PUBLIC

DELETE /api/v1/videos

DELETE /videos/{id} - Delete video (owner or admin)

  • Auth Required: PUBLIC

WatchHistory

GET /api/v1/watchhistory

POST /content/{type}/{id}/track Track viewing of any content type (camperformer, gallery, model) Body: optional { "watchedduration": 1, "totalduration": 1 }

  • Auth Required: PUBLIC

PUT /api/v1/watchhistory

POST /videos/{id}/progress Update video watch progress Body: { "watchedduration": 120, "totalduration": 600, "lastposition": 120 }

  • Auth Required: PUBLIC

DELETE /api/v1/watchhistory

DELETE /history/{id} Remove specific history entry

  • Auth Required: PUBLIC

Webcam

GET /api/v1/webcam

GET /cams/{id}/schedule - Get performer's schedule/heatmap data

  • Auth Required: PUBLIC
  • Parameters:
  • performerId (int): Performer ID from tblCamsPerformers
  • Returns: array - Schedule data with metadata

Webhooks

GET /api/v1/webhooks

GET /api/v1/webhooks/status Get cloud encoding status (requires admin auth)

  • Auth Required: PUBLIC

Withdrawals

GET /api/v1/withdrawals

GET /api/v1/creator/withdrawals/my-requests Get withdrawal history for current user

  • Auth Required: PUBLIC


External API Change Log

Version Date Description
1.6 2025-10-01 Lite version enabled by default
1.5 2025-08-13 Added iframeFeedUrl usage example
1.4 2025-08-06 Added legal & compliance requirements
1.3 2025-07-22 Added ages parameter, error codes, fallback info
1.2 2025-07-14 Updated name filter
1.1 2025-07-01 Performance optimization, available value listing
1.0 2025-05-23 First deployment