---
title: "Issue a single-use live-control token"
method: POST
path: "/cdp/live-token"
tags: ["Remote CDP"]
---

# Issue a single-use live-control token

`POST /cdp/live-token`

## Request

- Base URL: `https://api.adscrawl.net`
- URL: `https://api.adscrawl.net/cdp/live-token`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/adscrawl/apis/adscrawl-api/docs/cdp/live-token/post.ts> (a function with typed inputs; its response is checked against the schema)

The API key must own the session. Returns a controlUrl containing a single-use controlToken, valid for 30 seconds. Connect to that WebSocket URL using the live-control protocol documented on the website.

## Request body

- object
  - `sessionId` string, required

## Response `200`

Live-control connection information.

- object
  - `ok` boolean, required
  - `controlUrl` string, uri, required
  - `expiresAt` integer, required: Token expiry as Unix milliseconds, not an RFC3339 string.

## Other responses

- `default`: Error response. Typical statuses are 400 invalid input, 401 invalid authentication, 402 payment/credits required, 403 ownership mismatch, 404 missing resource, 409 state or quota conflict, 410 expired session, 429 rate/concurrency limit, 500 internal failure, 502 upstream failure, 503 capacity/runtime unavailable, or 504 timeout. Not every status applies to every operation. Use HTTP status and code when present.

---

[API](https://skmtc.dev/adscrawl/apis/adscrawl-api.md) - [All operations](https://skmtc.dev/adscrawl/apis/adscrawl-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adscrawl/apis/adscrawl-api/revisions/aa45d0651921?raw)
