Disable a line, POST /ext/line/{uuid}/disable

If you are starting a new integration instead of migrating, prefer the native v1 API with the official SDKs. The OneStream dialect exists to let existing OneStream code point at Xtream AI with only a base URL change.

Suspend a line's ability to stream without deleting it. The row is preserved. Expiry, credentials, bouquets, connection cap, and adult-content flag stay untouched. When you re-enable the line with POST /ext/line/{uuid}/enable it comes back exactly as it was.

Use this during a refund investigation, a chargeback pause, or when a customer asks for a temporary hold on a subscription they want to resume later. If the intent is permanent removal, use POST /ext/line/{uuid}/terminate instead.

Disabling an already disabled line is a no-op and still returns 200 OK.

Endpoint

POST https://<your-panel-domain>/panel-api/onestream/ext/line/{uuid}/disable

Authentication

X-Api-Key. X-Auth-User and Authorization: Bearer also accepted. See Authentication.

Required scope

lines:write.

Idempotency

Optional. Disable is naturally idempotent (the outcome is the same whether the line was enabled or disabled), but a rid still lets you use GET /ext/transaction/{rid} to confirm the operation reached the panel after a timeout.

Path parameters

Name Type Description
uuid string The opaque line UUID.

Request body

Optional. If sent, only rid is meaningful.

Field Type Required Default Description
rid string no Idempotency key.
{
  "rid": "disable-user-42-2026-08"
}

Response

200 OK with the opaque line_id. No other fields are returned.

{
  "line_id": "b32c1a04-11ea-4c67-8fd1-0001000000f1"
}

Examples

cURL

curl -X POST "https://<your-panel-domain>/panel-api/onestream/ext/line/b32c1a04-11ea-4c67-8fd1-0001000000f1/disable" \
  -H "X-Api-Key: <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"rid": "disable-user-42-2026-08"}'

PHP raw

$uuid = 'b32c1a04-11ea-4c67-8fd1-0001000000f1';
$ch = curl_init("https://<your-panel-domain>/panel-api/onestream/ext/line/{$uuid}/disable");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'X-Api-Key: <your-api-key>',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'rid' => 'disable-user-42-2026-08',
    ]),
]);
$body   = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

Python raw

import requests

uuid_ = "b32c1a04-11ea-4c67-8fd1-0001000000f1"
r = requests.post(
    f"https://<your-panel-domain>/panel-api/onestream/ext/line/{uuid_}/disable",
    headers={"X-Api-Key": "<your-api-key>"},
    json={"rid": "disable-user-42-2026-08"},
    timeout=30,
)
r.raise_for_status()
print(r.json())

Errors

HTTP Error slug (or message) When it happens How to fix
401 Invalid API key Token is unknown, expired, disabled, or deleted. Check the token or issue a new one.
403 insufficient_scope Token lacks lines:write. Issue a key with the scope.
409 Transaction already processed Same rid was reused with a different body. Use a fresh rid, or replay with the exact original body.
422 line_id not found or invalid The UUID in the URL is malformed, was not issued by this panel, or belongs to a different panel. Uniform on purpose. Verify the UUID you stored on line-creation.
429 Rate limit exceeded The key hit its per-minute cap. Back off and retry after Retry-After seconds.
501 not_implemented A GET request was sent to this URL. Only POST is accepted.

See also