GET ?action=get_lines
Returns all lines (activations) with credentials and bouquet assignments. Each row is shaped by the service the line lives on: a line on a service with a playlist editor returns bouquets grouped by live/vod/series, one on a plain panel returns a flat bouquet_ids. Add &plugin_id= to ask for one service's lines. Add &customer_email= (or &customer_id=) to get one customer's lines only — the way a storefront shows someone their own subscriptions. Without either, every line is returned: that is the admin view.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
plugin_id | integer | Optional | Only lines on this service |
customer_email | string | Optional | Only this customer's lines (linked to their login, or still carrying this address) |
customer_id | integer | Optional | Same, by customer id. An unknown id is a 404 |
Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Activation ID |
xtream_username | string | Xtream panel username |
xtream_password | string | Xtream panel password |
xtream_host | string|null | Xtream panel host URL |
mac_address | string|null | MAC address (MAC connection type only) |
m3u_url | string|null | Generated M3U playlist URL |
epg_url | string|null | Generated EPG URL |
customer_email | string | Customer email address |
customer_name | string|null | Customer full name |
status | string | active, trial_active, expired, suspended, canceled |
expiration_date | string|null | Expiration datetime UTC |
activated_at | string|null | Activation datetime UTC |
product_id | integer|null | Linked Panelr product ID |
connection_type | string | m3u or mac |
provider | string|null | The service's name as it was when the line was created — display only. Use plugin_id to identify the service. |
plugin_id | integer|null | The service this line lives on — see get_plugins. Two services may hand out the same username, so this is what tells them apart. |
plugin_name | string|null | What the store owner currently calls that service |
product_name | string|null | The plan the line is on |
portal_label | string|null | The customer's own name for the line ("Living Room"), set via update_customer |
is_trial | boolean | True when the line began as a free trial |
host_id | integer|null | Assigned host ID |
panel_user_id | string|null | Panel user identifier |
reseller_notes | string|null | Internal reseller notes |
editor_id | string|null | Editor line ID (when editor configured) |
editor_username | string|null | Editor credentials username (when editor configured) |
editor_password | string|null | Editor credentials password (when editor configured) |
bouquets | object | Per-category bouquet IDs — editor mode only. See Bouquet Structure below. |
bouquet_ids | array | Flat bouquet ID array — no editor mode only |
Bouquet Structure
When an editor is configured, bouquets are returned per-category. An empty array for a category means all bouquets in that category are active (current and future).
// Editor configured:
"bouquets": { "live": [101, 102], "vod": [], "series": [] }
// No editor:
"bouquet_ids": [101, 102]