ComusThumbz REST API
دليل التكامل الخارجي
الإصدار: 1.0.0
Created: 2026-02-03
لمحة عامة
The ComusThumbz Webcam Performer system aggregates live cam performers from up to 11 external platforms into a unified browsing experience. المُخدّرات مُتزامنة عن طريق وظائف مُخزّنة tblCamsPerformers ترجمة: /ct/api/v1/cams.
The system has two layers:
- External API - The CrakRevenue Performers Ext API
performersext-api.pcvdaa.com() توفر بيانات أداءية من منابر مثل ستريمات، وشاتربات، وشات، وما إلى ذلك. - Internal API - كوموس تهومبز
/ct/api/v1/cams/() يخدم بيانات الأداء المطّردة في المقدمة مع التنظيف والتصفية.
الهيكل التنظيمي
مؤشر الأداء الخارجي:
The CrakRevenue Performers Ext API is the primary data source for cam performer data.
القاعدة URL: https://performersext-api.pcvdaa.com/performers-ext
الطريقة: GET /performers-ext
التوثيق
وهناك حاجة إلى ثلاثة عناصر للتوثيق لكل طلب:
مثال:
بارامترات الحجر
Available Ethnicity Values:
caucasian,ebony,hispanic,asian,indian,arab,native american
Available Age Group Values:
gc1819,gc2029,gc3039,gc4049,gc50plus
Response Format
Success Response (200 OK):
Performer Object Reference
Basic Information
Status & Metrics
Timestamps
Streaming
الوجهات
Tags
i18n (Internationalization)
Error Responses
Supported Brands
Pagination & Performance
Pagination Parameters:
Example - First page of 6 performers:
Example - Next page:
Caching: Performer data is cached server-side for 30 seconds.
Tags Reference
Available tag values for the tags query parameter:
Fallback Strategy
The API can return empty results (count: 0, empty performers array). Implement a fallback:
- Send request with all desired filters (e.g.,
live=trueðnicities=caucasian&tags=anal,athletic,bbw) - If empty result, retry with fewer filters (e.g.,
live=trueðnicities=caucasian) - If still empty, retry with minimal filters (e.g.,
live=true)
Embedding Live Streams
To embed a live performer's stream feed in an iframe:
- Fetch a live performer from the API
- Use
iframeFeedURLfor the iframesrc - Use
roomUrlfor the click-through link
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:
Example with affiliate ID 1:
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:
CURL Request Examples
Fetch 10 female caucasian performers:
Fetch one live female performer:
Fetch a specific performer (requires name AND brand):
Fetch performers by age group:
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.
مثال:
GET /cams/online
Get only online performers. This is the primary endpoint used by camperformers.php.
Example:
GET /cams/featured
Get top/featured performers.
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
Favorites
Internal Response Format:
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:
Cam API credentials are stored per-site in tblCamsSites:
apiDatafield stores thex-api-keyvalueparametersfield stores thetokenvalue
Cron Jobs
The following cron jobs must be running for the cam system to function. Without them, performer data becomes stale and online status is incorrect.
Crontab Example:
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
featurelivecamsto be enabled
JavaScript API calls:
GET /ct/api/v1/cams/online- Main content loadGET /ct/api/v1/cams/sites- Populate site filter dropdownGET /ct/api/v1/favorites(checkMultipleFavorites) - Batch load favorite statesPOST /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
- For each enabled site in tblCamsSites:
Cron: updatecamperformerstats.php updates tblCamsPerformersStatsCache
Database to Frontend
- JavaScript calls GET /ct/api/v1/cams/online with filter params
- WebcamController receives request
- 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
User clicks performer -> click.php -> external chat room
Site-Specific API Handlers
Located in ct/admin/apis/:
الأداء
استراتيجية الاتصال بثلاثة أيام
- 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
- 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
- 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
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
- Enter endpoint:
/cams/online?page=1&perpage=5&gender=f - Click Send Request
- View the JSON response with performer data
Useful test endpoints:
Troubleshooting
No performers appearing on the frontend
- Check cron jobs are running:
php ct/admin/cronupdatecams.php - Verify API credentials in Admin -> Cam Settings
- Check
tblCamsSitesfor enabled sites - Verify
featurelivecamsis enabled in feature toggles - Check logs:
ct/logs/cron-update.log
All performers showing as offline
- Run the cron update:
php ct/admin/cronupdatecams.php - Check if external API is responding (test with CURL)
- Verify API token hasn't expired
- Check
tblCamsPerformersforstatusvalues:SELECT COUNT(*) FROM tblCamsPerformers WHERE status=1
External API returning 403 Forbidden
- Verify
x-api-keyis set correctly intblCamsSites.apiData - Ensure
User-Agentheader is being sent - Check if API key has been revoked by CrakRevenue
External API returning 401 Unauthorized
- Verify
tokenis set correctly intblCamsSites.parameters - Check if requesting unauthorized brands
- Token may be domain-bound - verify it's for your domain
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
- Reduce
perpageto 24 or less - Use debug mode (
?debug=1) to identify bottleneck
Clicks not being tracked / affiliate revenue missing
All external performer links MUST go through click.php:
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 image
- مطلوب:
PUBLIC
PUT /api/v1/creators
PUT /api/v1/creators/me Update creator profile settings
- مطلوب:
PUBLIC
مبدئي الاشتراك
GET /api/v1/creatorsubscriptions
DELETE /creators/{id}/packages/{packageالخالق يزيل الرزمة
- مطلوب:
PUBLIC
Earnings
GET /api/v1/earnings
GET /api/v1/creator/earnings/by-source الحصول على توزيع الدخل حسب المصدر (الصفوف، الاشتراكات، PPV) بما في ذلك الحسابات والمجاميع
- مطلوب:
PUBLIC
المفضلة
GET /api/v1/favorites
GET /favorites/counts الحصول على الأرقام المفضلة للمستعملين حسب النوع
- مطلوب:
PUBLIC
POST /api/v1/favorites
POST/favorites إضافة بند للجسم المفضّل"النوع: "فيديو جالري"أغنية"id": "123","notes: "optional" }
- مطلوب:
PUBLIC
DELETE /api/v1/favorites
DELETE /favorites/{type} {id} إزالة من المفضّلات
- مطلوب:
PUBLIC
المعالم
GET /api/v1/features
الحصول على مواقع كاميرا مُمَكَّنة
- مطلوب:
PUBLIC
التغذية
GET /api/v1/feed
الحصول على المحتوى GET /api/v1/feed/trending
- مطلوب:
PUBLIC
الأصدقاء
GET /api/v1/ friends
Reject friend request PUT /api/v1/ friends/{id}/reject
- مطلوب:
PUBLIC - البارامترات:
idهوية الصداقة
POST /api/v1/ friends
إرسال طلب للأصدقاء
- مطلوب:
PUBLIC
DELETE /api/v1/ friends
نقل صديق ديليت/api/v1/أصدقاء/ {id}
- مطلوب:
PUBLIC - البارامترات:
idهوية الصداقة
Galleries
GET /api/v1/galleries
GET/galleries/{id}/related - Get related galleries
- مطلوب:
PUBLIC
POST /api/v1/galleries
POST/galleries - Create gallery (admin only)
- مطلوب:
PUBLIC
PUT /api/v1/galleries
PATCH /galleries/{id}/status - Update gallery status (admin only)
- مطلوب:
PUBLIC
DELETE /api/v1/galleries
Delete gallery (admin only)
- مطلوب:
PUBLIC
تعقب الاكتئاب
GET /api/v1/impressiontrack
GET /api/v1/impressions/trends/{type} الحصول على اتجاهات الأداء مع مرور الوقت
- مطلوب:
PUBLIC
LiveStream
GET /api/v1/livestream
GET /api/v1/live/{id}/per minute/status الحصول على الحالة الراهنة في كل دقيقة
- مطلوب:
PUBLIC
وسائط الإعلام
GET /api/v1/media
الحصول على تخزين URL لملف فيديو محدد
- مطلوب:
PUBLIC - البارامترات:
videoIdهوية الفيديوfileType(الضرب): نوع الملفوف (الإبهام، العرض التمهيدي، الملصقات، الفيديو، الحانات، الخ)- العودة: لاغي - (التراجعات في التحميل أو الخطأ)
الرسائل
GET /api/v1/mesages
الحصول على قائمة المستخدمين المغلقين GET /api/v1/messages/blocked
- مطلوب:
PUBLIC
DELETE /api/v1/mesages
تحذف رسالة DELETE /api/v1/mesages/{id}
- مطلوب:
PUBLIC
النماذج
GET /api/v1/models
GET /api/v1/models/{id}/details الحصول على تفاصيل نموذجية موحّدة لـ (كوري)النموذج (المتطلب)
- مطلوب:
PUBLIC
POST /api/v1/models
POST /api/v1/models إنشاء نموذج جديد (ملحوظ فقط)
- مطلوب:
PUBLIC
PUT /api/v1/models
PUT /api/v1/modelالصفوف/الوضع النموذجي لتحديث الإحصاءات (بالإضافة فقط)
- مطلوب:
PUBLIC
DELETE /api/v1/models
DELETE /api/v1/modelالصفوف/ يحذف النموذج (يذكر فقط)
- مطلوب:
PUBLIC
الإخطارات
GET /api/v1/notifications
الحصول على أفضليات الإخطارات
- مطلوب:
PUBLIC
PUT /api/v1/notifications
تحديث أفضليات الإخطارات PUT/api/v1/notifications/preferences
- مطلوب:
PUBLIC
DELETE /api/v1/notifications
يحذف الإخطار (حذف)
- مطلوب:
PUBLIC
لاعب
GET /api/v1/player
تشكيلة اللاعبين المصورين بالفيديو والسيارات
- مطلوب:
PUBLIC
القائمة
GET /api/v1/playlists
PUT /playlists/{id}items/reorder Reorder playlist items (owner only) Body: {items]id: 1, "sort"الطلب: صفر }، {البند }id: 2, "sort"النظام: 1 }
- مطلوب:
PUBLIC
POST /api/v1/playlists
POST/playlists/{id}/items يضاف شريط فيديو إلى القائمة (المالكة فقط) الجسد:id": 123, "sortالنظام: 1 }
- مطلوب:
PUBLIC
PUT /api/v1/playlists
PUT/playlists/{id} القائمة النهائية (المالكة فقط)
- مطلوب:
PUBLIC
DELETE /api/v1/playlists
DELETE /playlists/{id}/items/{itemId} نقل الفيديو من قائمة اللعب (المالك فقط)
- مطلوب:
PUBLIC
الوظائف
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
Search
GET /api/v1/search
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)
- مطلوب:
PUBLIC
PUT /api/v1/userverification
PUT /admin/verification/{userId}/status Update verification status (admin only)
- مطلوب:
PUBLIC
DELETE /api/v1/userverification
DELETE /user/verification/documents/{documentId} تحذف وثيقة التحقق
- مطلوب:
PUBLIC
تقارير الفيديو
GET /api/v1/videoreports
GET /video-reports/reasons - Get list of valid report reasons
- مطلوب:
PUBLIC
Videos
GET /api/v1/videos
إنتاج سائل من اللقب
- مطلوب:
PUBLIC - البارامترات:
title!- العودة: الخيط
POST /api/v1/videos
POST/videos/{id}/tags - Add tag to video
- مطلوب:
PUBLIC
PUT /api/v1/videos
PATCH /videos/{id}/status - Update video status (admin only)
- مطلوب:
PUBLIC
DELETE /api/v1/videos
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