Enable a line
Turn a line back on by setting its enabled flag to true. The endpoint returns the full line object with the new state.
For reseller keys in users billing mode with a non-trial line, this endpoint re-checks slot capacity before enabling. That closes the loophole where a reseller could disable an old line and enable a new one to sneak past the user cap.
The endpoint does not touch admin_enabled. If the admin has explicitly disabled the line via update, calling enable does not lift that block. Use update with admin_enabled: true for that.
Endpoint
POST https://<your-panel-domain>/panel-api/v1/lines/{id}/enable
Authentication
Bearer token in the Authorization header. See Panel API authentication.
Required scope
lines:write.
Idempotency
Required. Send an Idempotency-Key header on every call. Retrying the same key returns the cached response; a missing header returns 400 missing_idempotency_key.
Path parameters
| Name | Type | Description |
|---|---|---|
id |
int | The line id to enable. |
Request body
Empty. Send an empty JSON body {} (or no body at all, since the endpoint accepts both).
Response
200 OK with the full line object. enabled will be true.
{
"id": 172504293,
"username": "u_a1b2c3d4",
"password": "53fa969a",
"member_id": 100,
"exp_date": 1788885053,
"max_connections": 1,
"is_trial": false,
"is_restreamer": false,
"enabled": true,
"admin_enabled": true,
"bouquets": [],
"created_at": 1786206653
}
Examples
cURL
curl -X POST https://<your-panel-domain>/panel-api/v1/lines/172504293/enable \
-H "Authorization: Bearer <your-api-key>" \
-H "Idempotency-Key: line-172504293-enable-2026-08-08"
PHP SDK
require __DIR__ . '/api-panel-php-sdk-1.0.0/autoload.php';
use XtreamAI\PanelApi\PanelApiClient;
$client = new PanelApiClient(baseUrl: 'https://<your-panel-domain>', token: '<your-api-key>');
$line = $client->lines->enable(172504293, idempotencyKey: 'line-172504293-enable-2026-08-08');
echo $line->enabled ? 'enabled' : 'still disabled', PHP_EOL;
Python SDK
from xtream_ai_panel_api import PanelApiClient
client = PanelApiClient(base_url="https://<your-panel-domain>", token="<your-api-key>")
line = client.lines.enable(172504293, idempotency_key="line-172504293-enable-2026-08-08")
print(line.enabled)
Errors
| HTTP | Error slug | When it happens | How to fix |
|---|---|---|---|
| 400 | missing_idempotency_key |
The Idempotency-Key header was not sent. |
Send a per-intent key on every write. |
| 401 | invalid_key |
Token is unknown, expired, disabled, or deleted. | Check the token or issue a new one. |
| 402 | slot_limit_exceeded |
Reseller (users mode, non-trial line) would exceed its own user cap. | Delete or disable another line first. |
| 402 | ancestor_cap_reached |
A parent reseller's cap would be exceeded. | Raise the parent cap. |
| 403 | insufficient_scope |
Token lacks lines:write. |
Issue a key with the scope. |
| 404 | not_found |
The line id does not exist, or a reseller key targeted a line it does not own. | Verify the id and ownership. |
| 409 | idempotency_conflict |
Same key was reused with a different body. | Use a fresh key. |
| 409 | idempotency_in_flight |
Same key is still processing. | Retry after a moment. |
| 429 | rate_limited |
The key hit its per-minute cap. | Back off and retry after Retry-After seconds. |
See also
- Disable a line
- Update a line (to move
admin_enabled) - Panel API lines overview