My Portals
Manage your portal instances
Billing
Manage your subscription and payment methods
Monthly Summary
Total Monthly Cost
£0.00
Active Portals
0
Active Add-ons
None
Current Plan
Loading billing information...
Payment Method
No payment method on file
Billing History
| Date | Description | Amount | Status |
|---|---|---|---|
| No billing history | |||
Invoices
View and download your invoices
| Invoice # | Date | Portal | Amount | Status | Actions |
|---|---|---|---|---|---|
| No invoices found | |||||
Settings
Manage your password and security settings
Change Password
Update your account password. A verification code will be sent to your email.
Two-Factor Authentication
We highly recommend enabling 2FA
Two-factor authentication adds an extra layer of security to your account. After enabling, you'll need to enter a code from your authenticator app when logging in.
Status: Not Enabled
Choose Your 2FA Method
Email Code
Receive a code via email each time you log in
Authenticator App
Use Google Authenticator, Authy, or Microsoft Authenticator
Setup Instructions
- Download an authenticator app:
- Open the app and scan the QR code or enter the secret key manually
- Enter the 6-digit code from the app below to verify
Secret Key: XXXX-XXXX-XXXX-XXXX
Account Settings
Manage your account information
Profile Information
Loading...
Name
Loading...
Company
Not set
Member Since
Loading...
Security
For 2FA settings, go to Settings
Connected Accounts
Loading connected accounts...
Help Center
Get support and manage your tickets
Your Support Tickets
| Ticket # | Subject | Portal | Priority | Status | Last Updated | Actions |
|---|---|---|---|---|---|---|
| Loading tickets... | ||||||
FAQ & Guides
Find answers to common questions and learn how to use your portal
Getting Started
Setting up your portal is easy:
- Choose a Plan: Visit the pricing page and select a package that suits your needs.
- Complete Payment: Pay via Stripe (card) or bank transfer.
- Portal Provisioning: Your portal will be automatically created and you'll receive login credentials via email.
- Access Admin Panel: Log into your portal's admin panel at
yoursubdomain.channelmod.com/admin - Configure Settings: Set up your site name, branding, and connect your bots.
Your portal subdomain is the unique identifier for your portal. For example, if your subdomain is "dj", your portal is accessible at:
- Main Site:
dj.channelmod.com - Admin Panel:
dj.channelmod.com/admin - Bot Manager:
dj.channelmod.com/bot-manager
Bot Setup & Configuration
To connect your Telegram bot:
- Open Telegram and search for @BotFather
- Send
/newbotand follow the prompts to create your bot - Copy the Bot Token provided by BotFather
- Go to your portal's Bot Manager → Settings
- Paste the token in the "Telegram Bot Token" field
- Click Save and your bot will start automatically
Tip: Make sure to add your bot as an admin to any groups you want it to manage.
To connect your Discord bot:
- Go to Discord Developer Portal
- Click New Application and give it a name
- Go to the Bot section and click "Add Bot"
- Copy the Bot Token (click "Reset Token" if needed)
- In your portal's Bot Manager, go to Settings and paste the Discord Bot Token
- Use the OAuth2 URL Generator to invite your bot to your server with the required permissions
To connect your Twitch bot:
- Create a Twitch account for your bot (or use your main account)
- Go to Twitch Token Generator
- Generate an OAuth token with the required scopes
- In your portal's Bot Manager, paste the OAuth token and channel name
- Save and the bot will connect to your Twitch chat
AI Chat allows your bot to respond intelligently to users:
- Tokens: Each AI response uses tokens. Your plan includes a monthly token allowance.
- Wake Word: Users trigger the AI by using a wake word (default:
!chat) - Custom Prompts: You can customize the AI's personality in Bot Manager → AI Chat
- Token Add-ons: Need more tokens? Purchase add-ons from the Upgrade Plan modal.
Monitor your token usage in Bot Manager → AI Chat → Token Usage section.
Tiers & Subscriptions
Tiers allow you to offer different access levels to your community:
- Go to your portal's Admin Panel → Tier Config
- Click Add Tier to create a new tier
- Set the tier name, price, and features
- Configure which links/content each tier can access
- Users can subscribe to tiers from your portal's homepage
Your bot will automatically verify users against their tier and grant/restrict access accordingly.
When a user purchases a subscription:
- They receive a verification code via email
- They can enter this code in your portal's "Manage Subscription" section
- Once verified, the bot grants them access to the appropriate tier content
- They can also connect their Discord/Twitch account for automatic verification
Billing & Payments
To update your payment method:
- Go to Dashboard → Billing
- Click Update Payment Method
- Enter your new card details securely via Stripe
- Your new card will be used for future billing cycles
All your invoices are available in the Dashboard → Invoices tab. You can:
- View all past payments and their status
- See the description of each charge
- Filter by date or portal
Refund policies vary by purchase type:
- Monthly subscriptions: You can cancel anytime. You'll retain access until the current billing period ends.
- One-time purchases: Refunds may be available within 14 days. Contact support via Help Center.
- AI Token Add-ons: Non-refundable once tokens have been used.
To change your plan:
- Go to Dashboard → My Portals
- Click Manage on your portal
- Click Upgrade Your Plan
- Select a new package and complete the payment
Upgrades take effect immediately. Downgrades take effect at the next billing cycle.
Moderation & Auto-Moderation
Auto-moderation helps keep your community safe:
- Go to Bot Manager → Moderation
- Enable the features you want:
- Word Filter: Block specific words/phrases
- Link Filter: Block unauthorized links
- Spam Detection: Auto-detect and remove spam
- Configure actions (warn, mute, kick, ban)
- Set up a log channel to track moderation actions
Activity monitoring tracks member engagement (Telegram only):
- Set a minimum posting interval (5 min to 1 month)
- Members who don't post within the interval can be:
- Warned via DM
- Automatically removed
- Exempt specific usernames from monitoring
- This feature is off by default
Troubleshooting
If your bot appears offline:
- Check the token: Ensure your bot token is correct in Bot Manager → Settings
- Restart the bot: Click the "Restart Bot" button in Bot Manager
- Check permissions: Make sure the bot has the required permissions in your group/server
- View logs: Check the Activity Log for error messages
If issues persist, open a support ticket in the Help Center.
If AI tokens aren't showing correctly:
- Make sure you have an AI Chat addon active (check Upgrade Plan)
- Token usage updates may take a few minutes to reflect
- Check Bot Manager → AI Chat → Token Usage section
- If you just purchased, try refreshing the page
If your payment was declined:
- Check that your card details are correct
- Ensure you have sufficient funds
- Try a different payment method
- Contact your bank to authorize the transaction
- For bank transfers, ensure you used the correct reference
Features & Tools
Custom commands let your bot respond to specific triggers:
- Go to Bot Manager → Commands
- Click Add Command
- Set a trigger (e.g.,
!rules) and the response message - Enable/disable commands using the toggle switch
- Commands work across all connected platforms (Telegram, Discord, Twitch)
Use !help in chat to see all available commands.
Run giveaways to engage your community:
- Go to Bot Manager → Giveaways
- Set the prize, duration, and number of winners
- Users enter by typing
!enterin chat - Winners are automatically selected when the giveaway ends
Giveaways run across all your connected platforms simultaneously.
Accept donations from your community:
- Go to your portal's Admin Panel → Settings
- Enable donations and configure your Stripe keys
- Your donation page is available at
yourportal.channelmod.com/donate - Donors can enter their name and an optional message
- Use
!topdonatorin chat to show top donors
Donor names from the donation page are shown in leaderboards.
Let your audience request songs during streams:
- Go to Bot Manager → Music
- Connect a music platform (Spotify, YouTube Music, Apple Music, or Amazon Music)
- Enable song requests
- Users can request songs using
!sr [song name]in chat - Optionally set a wake word for natural language requests
You can set maximum song length, subscriber-only mode, and other restrictions.
Device locking prevents code sharing by tying each verification code to a single device:
- When a user verifies with their code, it's locked to their device
- If someone else tries to use the same code on a different device, it will be rejected
- This prevents unauthorized sharing of premium group access
- Admins can reset device locks from the Admin Panel if needed
Schedule automated messages to your community:
- Go to Bot Manager → Scheduling
- Create a new scheduled message with your content
- Set the interval (e.g., every hour, daily, weekly)
- Choose which platforms to send it to
Great for regular announcements, rules reminders, or promotional content.
Greet new members automatically:
- Go to Bot Manager → Settings for each platform
- Find the Welcome Message field
- Enter your custom welcome message
- The bot will send this to new members when they join
Affiliates & Payouts
Earn commissions by referring new customers:
- Go to Dashboard → Affiliates
- Click Create Affiliate Code
- Share your unique referral link or code with others
- When someone signs up and purchases using your code, you earn a commission
- Track your referrals, earnings, and payouts in the Affiliates tab
Configure how you receive your earnings:
- Go to your portal's Admin Panel → Settings
- Find the Payout Method section
- Choose between Stripe Connect or PayPal
- Enter your account details and save
Payouts are processed automatically based on your earnings. You can also request manual payouts from the Billing tab.
API & Advanced
Access your portal data programmatically:
- Go to Dashboard → API Documentation
- Your API key is available in your portal settings
- Use the documented endpoints to manage codes, users, and settings
- All API requests require authentication via your API key
The API documentation includes examples and response formats for each endpoint.
White-labeling lets you customize the branding of your portal:
- Custom logo and site name
- Custom domain support
- Remove ChannelMod branding from your portal
- Available on plans that include the white-label feature
Configure branding in your portal's Admin Panel → Settings.
The built-in ticket system lets your community members request support:
- Members can open tickets from your portal or via bot commands
- Manage tickets in Bot Manager → Tickets
- Reply to tickets, change priority, and close resolved issues
- Ticket notifications can be sent to a designated channel
Affiliates
Earn commissions by referring customers
Your Affiliate Stats
Monthly Earnings
Your Affiliate Codes
| Code | Commission | Uses | Earnings | Status | Actions |
|---|---|---|---|---|---|
| Loading affiliate codes... | |||||
How Affiliates Work
Create affiliate codes and share them with others. When someone purchases a new portal or package upgrade using your referral link, you earn a 20% commission on their purchase.
- Share your link:
https://channelmod.com?ref=YOUR_CODE - Earn 20% commission on new portal purchases and package upgrades
- Track your referrals and earnings in real-time
- Commissions are paid monthly via PayPal or Stripe
- Disabling a code stops new referrals but doesn't affect existing earnings
API Documentation
Integrate your portal with external applications using our comprehensive REST API
Getting Started
Welcome to the Portal API! This guide will help you integrate your portal with external applications, automate member management, and build custom integrations.
Prerequisites
- A portal with API Access enabled in your package or add-ons
- Your portal's API key (found in Admin → Settings → API)
- Basic knowledge of REST APIs and JSON
Quick Start Example
Here's a complete example to get you started - fetching all members:
// JavaScript/Node.js Example
const response = await fetch('https://your-portal.channelmod.com/api/v1/members', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data.members);
Members
Manage user subscriptions, access levels, and membership status
Tiers
Create and manage subscription tiers and pricing
Access Codes
Generate, validate, and manage access codes
Analytics
Access revenue reports and member statistics
Authentication
All API requests require authentication using your portal's API key. Include the key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Finding Your API Key
- Log in to your portal's Admin panel
- Navigate to Settings → API
- Click Generate API Key if you don't have one
- Copy the API key (keep it secret!)
Security Best Practices
- Never expose your API key in client-side code or public repositories
- Store API keys in environment variables or secure vaults
- Rotate your API key periodically (regenerate in Settings → API)
- Use IP whitelisting if available for additional security
Important
If your API key is compromised, regenerate it immediately in your portal's Settings → API. All existing integrations using the old key will stop working.
Base URL
All API endpoints are relative to your portal's base URL:
https://YOUR_PORTAL_SUBDOMAIN.channelmod.com/api/v1
Replace YOUR_PORTAL_SUBDOMAIN with your actual portal subdomain (e.g., myportal).
Members API
The Members API allows you to manage all user subscriptions in your portal. You can list, create, update, and delete members programmatically.
GET
/members
List all members in your portal with optional filtering and pagination.
Query Parameters:
| tier_id | Filter by tier ID (optional) |
| status | Filter by status: active, inactive, expired (optional) |
| page | Page number for pagination (default: 1) |
| limit | Results per page (default: 50, max: 100) |
Example Response:
{
"success": true,
"members": [
{
"id": 123,
"telegram_id": "123456789",
"username": "john_doe",
"tier_id": 1,
"tier_name": "Premium",
"status": "active",
"expires_at": "2024-12-31T23:59:59Z",
"created_at": "2024-01-15T10:30:00Z"
}
],
"total": 150,
"page": 1,
"pages": 3
}
GET
/members/:id
Get details of a specific member by ID.
POST
/members
Create a new member with access code.
Request Body:
{
"telegram_id": "123456789",
"username": "new_user",
"tier_id": 1,
"duration_days": 30
}
PUT
/members/:id
Update an existing member's tier or expiration.
DELETE
/members/:id
Remove a member and revoke their access.
Tiers API
The Tiers API allows you to manage subscription tiers (membership levels) in your portal. Create different tiers with various pricing and features.
GET
/tiers
List all tiers in your portal with member counts and pricing details.
Example Response:
{
"success": true,
"tiers": [
{
"id": 1,
"name": "Premium",
"price": 9.99,
"duration_days": 30,
"features": ["private_channel", "vip_support"],
"member_count": 45
},
{
"id": 2,
"name": "VIP",
"price": 29.99,
"duration_days": 30,
"features": ["private_channel", "vip_support", "1on1_coaching"],
"member_count": 12
}
]
}
POST
/tiers
Create a new tier.
PUT
/tiers/:id
Update an existing tier.
DELETE
/tiers/:id
Delete a tier (members will be moved to default tier).
Access Codes API
Access codes allow users to join your portal without going through payment. Perfect for giveaways, promotions, or manual member enrollment.
GET
/access-codes
List all access codes.
POST
/access-codes
Generate new access codes.
Request Body:
{
"tier_id": 1,
"quantity": 10,
"duration_days": 30,
"max_uses": 1,
"prefix": "VIP"
}
Example Response:
{
"success": true,
"codes": [
"VIP-ABCD-1234",
"VIP-EFGH-5678",
"VIP-IJKL-9012"
]
}
POST
/access-codes/validate
Validate an access code without redeeming it.
Request Body:
{
"code": "VIP-ABCD-1234"
}
DELETE
/access-codes/:code
Revoke an access code permanently.
Analytics API
Access detailed analytics about your portal including member statistics, revenue data, and growth metrics.
GET
/analytics/overview
Get portal analytics overview.
Example Response:
{
"success": true,
"analytics": {
"total_members": 150,
"active_members": 142,
"new_members_today": 5,
"new_members_week": 23,
"revenue_month": 1499.85,
"churn_rate": 2.5
}
}
GET
/analytics/revenue
Get detailed revenue analytics with optional date range.
Query Parameters:
| start_date | Start date (YYYY-MM-DD) |
| end_date | End date (YYYY-MM-DD) |
Webhooks
Webhooks allow your application to receive real-time notifications when events occur in your portal. Configure webhooks in your portal's Admin → Settings → Webhooks.
Setting Up Webhooks
- Go to your portal's Admin → Settings → Webhooks
- Enter your webhook URL (must be HTTPS)
- Select which events you want to receive
- Copy your webhook secret for signature verification
- Click Save and test with a sample event
Available Events:
| member.created | New member joined your portal |
| member.expired | Member subscription expired |
| member.renewed | Member renewed subscription |
| tier.changed | Member changed tier |
| payment.received | Payment received |
| payment.failed | Payment failed |
Webhook Payload Example:
{
"event": "member.created",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"member_id": 123,
"telegram_id": "123456789",
"username": "new_user",
"tier": "Premium",
"expires_at": "2024-02-15T10:30:00Z"
},
"signature": "sha256=abc123..."
}
Webhook Security
Each webhook request includes a X-Webhook-Signature header containing an HMAC-SHA256 signature of the payload.
Verify this signature using your webhook secret to ensure the request is authentic.
Error Handling
All API endpoints return consistent error responses:
{
"success": false,
"error": "Error message here",
"code": "ERROR_CODE"
}
HTTP Status Codes:
| 200 | Success |
| 201 | Created successfully |
| 400 | Bad request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - API access not enabled for your package |
| 404 | Not found - Resource doesn't exist |
| 429 | Too many requests - Rate limit exceeded |
| 500 | Internal server error |
Rate Limiting
API requests are limited to 100 requests per minute per API key.
If you exceed this limit, you'll receive a 429 status code.
The X-RateLimit-Remaining header shows your remaining quota.
SDKs & Code Examples
Use these code examples to quickly integrate with our API in your preferred language.
Node.js / JavaScript
// Using fetch (built-in to Node.js 18+) async function getMembers() { const response = await fetch('https://myportal.channelmod.com/api/v1/members', { headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' } }); return await response.json(); } // Create a new member async function createMember(telegramId, username, tierId) { const response = await fetch('https://myportal.channelmod.com/api/v1/members', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ telegram_id: telegramId, username: username, tier_id: tierId, duration_days: 30 }) }); return await response.json(); }
Python
import requests API_KEY = 'YOUR_API_KEY' BASE_URL = 'https://myportal.channelmod.com/api/v1' # Get all members def get_members(): response = requests.get( f'{BASE_URL}/members', headers={'Authorization': f'Bearer {API_KEY}'} ) return response.json() # Generate access codes def generate_codes(tier_id, quantity=10): response = requests.post( f'{BASE_URL}/access-codes', headers={ 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' }, json={ 'tier_id': tier_id, 'quantity': quantity, 'duration_days': 30 } ) return response.json()
PHP
<?php
$api_key = 'YOUR_API_KEY';
$base_url = 'https://myportal.channelmod.com/api/v1';
// Get all members
function getMembers() {
global $api_key, $base_url;
$ch = curl_init("$base_url/members");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
?>
cURL
# List all members curl -X GET "https://myportal.channelmod.com/api/v1/members" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" # Create access codes curl -X POST "https://myportal.channelmod.com/api/v1/access-codes" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"tier_id": 1, "quantity": 10, "duration_days": 30}'