---
title: "Issue a room-join token for private browser calling"
method: POST
path: "/v1/room-token"
tags: ["WebRTC"]
---

# Issue a room-join token for private browser calling

`POST /v1/room-token`

## Request

- Base URL: `https://api.revdesk.com`
- URL: `https://api.revdesk.com/v1/room-token`
- Auth: HTTP bearer

Issues a single-call token for browser calling where RevDesk places the call and your browser joins it. You provide a caller ID (from_number, which must be a number you own) and a destination (to_number); RevDesk dials the destination and returns a token your browser uses to join the live call and talk through the mic. Nothing about the underlying network is exposed to the browser. The connection runs entirely on RevDesk's own infrastructure. Pass the returned token and room_url to the RevDesk browser SDK (@revdesk/webrtc) to join.

## Headers

- `Idempotency-Key` string
- `X-Revdesk-Caller-IP` string

## Request body

- object
  - `from_number` string, required
  - `to_number` string, required
  - `ttl_seconds` integer
  - `client_name` string
  - `client_label` string

## Response `200`

Success

- object
  - `data` object, required
    - `token` string, required
    - `room_url` string, required
    - `room_name` string, required
    - `call_id` string, required
    - `expires_in` number, required
    - `from_number` string, required
    - `to_number` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict (incl. idempotency conflicts)
- `429`: Rate limited

---

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