📡 IPTV Trial API
Programmatically generate IPTV trial accounts across every panel you have access to. Authenticate once with your master API key — pick the panel via the URL path.
Base URL
https://auto-trials.com/api/v1
Workflow
- Grab your API key from /api-key (login required, one-time setup).
- Call
GET /api/v1/panelsto see which IPTV panels you can use. - Hit
POST /api/v1/trial/{iptv_key}with a customer email — trial credentials come back as JSON.
🔐 Authentication
Every request requires your API key sent as a Bearer token. The X-API-Key header is also accepted.
curl https://auto-trials.com/api/v1/panels \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch("https://auto-trials.com/api/v1/panels", { headers: { "Authorization": "Bearer YOUR_API_KEY" } }); const data = await res.json();
$ch = curl_init("https://auto-trials.com/api/v1/panels"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"], ]); $data = json_decode(curl_exec($ch), true);
import requests resp = requests.get( "https://auto-trials.com/api/v1/panels", headers={"Authorization": "Bearer YOUR_API_KEY"}, ) print(resp.json())
⏱️ Rate Limits
60 requests per minute per API key. Excess calls receive HTTP 429
with a Retry-After header (seconds). Every successful response includes:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Total allowed per minute. |
X-RateLimit-Remaining | Calls still allowed in the current minute. |
Retry-After | Seconds until the bucket resets — only on 429. |
Trial creation is additionally throttled by your per-panel cooldown setting (same email + same panel cannot generate twice inside the window).
⚠️ Error Codes
All errors come back as JSON with success: false and an error message. HTTP status indicates the failure class.
| Status | Meaning |
|---|---|
400 | Unknown iptv_key in URL. |
401 | Missing or invalid API key. |
402 | Subscription expired. |
403 | API disabled, account banned, or no access to this panel. |
405 | Wrong HTTP method. |
422 | Invalid email or missing required field. |
429 | Rate limit OR per-email cooldown active. |
502 | Trial generation failed at the IPTV panel (captcha, panel down). |
503 | Backend mis-configured. |
🎯 Create Trial
Generates a new trial line on the chosen panel and (optionally) queues the credentials email.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
iptv_key | string | Required | One of the values from Panel Keys. |
Body parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Required | Customer email — also used for cooldown bucketing. |
send_email | boolean | Optional | Default true. false returns credentials in JSON only — no delivery email. |
website | string | Optional | URL used to render {website} and {download} placeholders in the email template. |
Request example
curl -X POST https://auto-trials.com/api/v1/trial/opplex_trial \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"email":"[email protected]","send_email":true}'
const res = await fetch("https://auto-trials.com/api/v1/trial/opplex_trial", { method: "POST", headers: { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" }, body: JSON.stringify({ email: "[email protected]", send_email: true }) }); const data = await res.json(); console.log(data);
$ch = curl_init("https://auto-trials.com/api/v1/trial/opplex_trial"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json", ], CURLOPT_POSTFIELDS => json_encode([ "email" => "[email protected]", "send_email" => true, ]), ]); $data = json_decode(curl_exec($ch), true);
import requests resp = requests.post( "https://auto-trials.com/api/v1/trial/opplex_trial", headers={"Authorization": "Bearer YOUR_API_KEY"}, json={"email": "[email protected]", "send_email": True}, ) print(resp.json())
Success response — 200
{
"success": true,
"iptv_key": "opplex_trial",
"iptv_name": "Opplex IPTV Panel",
"data": {
"server": "http://yourserver.com:8080",
"username": "trial_a1b2c3",
"password": "x9k2m",
"expiry": "24 Hours",
"m3u_url": "http://yourserver.com:8080/get.php?username=...&type=m3u_plus",
"connections": "1"
},
"email_queued": true,
"cooldown": false
}📺 List Panels
Returns every IPTV panel in the system together with your has_access flag — handy for building a panel picker.
Request example
curl https://auto-trials.com/api/v1/panels \
-H "Authorization: Bearer YOUR_API_KEY"const data = await (await fetch("https://auto-trials.com/api/v1/panels", { headers: { "Authorization": "Bearer YOUR_API_KEY" } })).json();
$ch = curl_init("https://auto-trials.com/api/v1/panels"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"], ]); $data = json_decode(curl_exec($ch), true);
import requests data = requests.get( "https://auto-trials.com/api/v1/panels", headers={"Authorization": "Bearer YOUR_API_KEY"}, ).json()
Success response — 200
{
"success": true,
"panels": [
{
"iptv_key": "opplex_trial",
"iptv_name": "Opplex IPTV Panel",
"has_access": true,
"endpoints": {
"trial": "/api/v1/trial/opplex_trial",
"status": "/api/v1/status/opplex_trial"
}
}
]
}📊 Panel Status
Returns the cached panel-login state plus your account summary. Cheap — never triggers a live ping.
Request example
curl https://auto-trials.com/api/v1/status/opplex_trial \
-H "Authorization: Bearer YOUR_API_KEY"const data = await (await fetch("https://auto-trials.com/api/v1/status/opplex_trial", { headers: { "Authorization": "Bearer YOUR_API_KEY" } })).json();
$ch = curl_init("https://auto-trials.com/api/v1/status/opplex_trial"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"], ]); $data = json_decode(curl_exec($ch), true);
Success response — 200
{
"success": true,
"iptv_key": "opplex_trial",
"iptv_name": "Opplex IPTV Panel",
"has_access": true,
"panel_logged_in": "logged_in",
"session_started_at": 1735420000,
"session_age_sec": 3600,
"account": {
"email": "[email protected]",
"role": "user",
"subscription_ends": "2026-12-31",
"last_used_at": "2026-06-26 15:32:11",
"rate_limit_per_min": 60
}
}💎 Create Paid Line COMING SOON
Planned shape:
POST /api/v1/paid-line/{iptv_key} with body {email, months, connections, package}. Watch this page for updates.
⏰ Extend Line COMING SOON
Planned shape:
POST /api/v1/extend/{iptv_key} with body {username, days}. Watch this page for updates.
🔄 Reset API Key
Rotates your API key. The previous key stops working immediately. You can authenticate this call with either the current API key (headless) or a logged-in dashboard session (browser).
Request example
curl -X POST https://auto-trials.com/api/v1/key-reset \
-H "Authorization: Bearer YOUR_API_KEY"Success response — 200
{
"success": true,
"api_key": "<new-key-here>",
"rotated_at": "2026-06-26T15:32:11+00:00"
}🏷️ Panel Keys Reference
Pass one of these values as the {iptv_key} path parameter.
opplex_trial
rynex_trial
infinity_trial
b1g_trial
panel_starsharetv
panel_opplex
zum_trial
hexa4k_trial
rolex_trial
geoiptvs_trial
geo_trial
5glive_trial
hellosky_trial
glo_trial
my8k_trial
plixi_trial