> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Work the Parked Calls lobby

> Park a live call into a numbered slot, watch the shared lobby, retrieve or release held calls, and decide when park beats a queue or a transfer.

# Work the Parked Calls lobby

Call park is the classic operator hand-off: put a live caller into a
numbered slot, tell a teammate which slot to pick up, and they retrieve
the call from their own phone. The **Parked Calls** page under **Voice**
is the shared lobby where every operator sees the live parked calls,
with a retrieve and a release action on each row.

Park is one of four control-plane endpoints over the tenant's voice API.
Use it when a call must move between people or devices without a
conference bridge — the caller hears hold music, the first retrieval at
any phone wins, and the slot frees for the next hand-off.

## 1. Park slots and the four endpoints

Your organization gets nine shared slots, numbered **1 through 9**. A
park puts one live call on one slot; the caller hears hold music until
someone retrieves the slot or the call hangs up. Retrieve and release
are one-stroke claims — the first succeeds and every later attempt
returns a clear error instead of a race.

| Action                 | Method | Path                             | What changes                                                         |
| ---------------------- | ------ | -------------------------------- | -------------------------------------------------------------------- |
| List live parked calls | GET    | `/api/v1/voice/park`             | Returns the tenant's live slots, newest first                        |
| Park a live call       | POST   | `/api/v1/voice/park`             | Takes a slot (auto-picks the lowest free one when `slot` is omitted) |
| Retrieve a parked call | POST   | `/api/v1/voice/park/retrieve`    | Claims the slot by number and frees it                               |
| Release a parked call  | POST   | `/api/v1/voice/park/:id/release` | Clears the slot without bridging it back to an operator              |

Two operators parking into the same slot within milliseconds resolve
through a single occupancy check — the first succeeds, the second
receives a `409 PARK_SLOT_OCCUPIED` with the occupant's slot, caller,
and elapsed time. The `PARK_…` error codes are mapped to fixes in
[Troubleshooting: voice call park orbit](/troubleshooting/voice-call-park).

## 2. Who can act on a parked call

Parked rows carry the caller's number and display name — a PII-bearing
surface. The lobby and every control-plane action are restricted to
**owner, admin, developer,** and **agent** roles (the dashboard page
mounts a role guard showing the role you need; the API routes enforce
the same guard server-side).

Viewer and observer roles see nothing on the lobby. If you only expect
to supervise, take the read path: the GET list is a read guard, so a
role with read-only permission on parked calls still cannot park,
retrieve, or release.

<Note>
  Every park, retrieve, and release writes an audit event with the
  operator, the slot, and the caller's E.164 number. The audit log is the
  record of who claimed a held caller.
</Note>

## 3. Park from the active call, retrieve from the lobby

Parking starts on the active-call surface; the lobby is where the row
lands.

1. Answer the caller from the browser softphone or your registered
   device. The active-call surface shows a **Park** action.
2. Click **Park**. The softphone sends `POST /api/v1/voice/park` with
   the call SID and auto-picks the lowest free slot — the toast naming
   the slot number (for example "**Call parked — slot 3**") is the
   confirmation. To place a specific slot, the same call carries a
   `slot` field when you pick one explicitly.
3. Open **Voice → Parked Calls**. The new row appears within one poll
   cycle (the list refreshes every ten seconds) with the slot number,
   the caller's number and name, and a live "parked for" counter.
4. Any teammate retrieves the caller by clicking **Retrieve** on the
   row — or by dialing `*N` for the slot number on any registered
   device. The first retrieval wins; the row drops off every
   operator's lobby on the next poll.

**Releasing a stray parked call.** When a caller should never have been
parked, or a row will not be picked up, click the release (circle-x)
action and confirm. Release is destructive and cannot be undone — it
frees the slot and drops the held caller.

## 4. Slot naming and collision conventions

Agree on the naming discipline with the team before parking:

* **Auto-pick is the default.** Leave the slot field blank and park
  slots claim the lowest free number (the same digits a desk phone
  dials with `*N`). Team muscle memory stays consistent — the numbers
  mean "next free slot," not "my slot."
* **Named slots are for deliberate placement.** When a receptionist says
  "Mr Santos is on 2," the number is the message. Pick the slot explicitly
  and the occupant's `409` response carries the info needed to re-park
  elsewhere.
* **Never let auto-pick hide a collision.** A `409` on a named slot
  means another operator claimed it first — the response also carries
  **on the occupant view** the parked-at time and the caller info, so
  name the free slot and re-issue rather than retrying the same slot.

## 5. Hold and abandon discipline

The nine slots are a shared, finite lobby. Every row carries a running
elapsed counter the whole floor sees, so a parked call that goes
unanswered for minutes is visible to everyone — that is the abandon
signal to act on before the caller hangs up.

Decide the team's longest-hold window (for example, two minutes). When
a row crosses it, one of three things should happen:

* **Retrieve the row** — the slot frees normally.
* **Release the row** — when retrieval would mean an abandoned call
  is dropped anyway; confirm the destructive action.
* **Route inbound into a queue instead** — if the same caller would
  have waited in a queue, the queue's SLA and abandon metrics own the
  recording; park is the wrong surface for that flow.

A row that ages past the retention horizon clears server-side, so a
forgotten park does not hold a slot forever — the running timer is for
the team to act, not for the platform to babysit. (For a bounded pool
model, see the troubleshooting page's "Do you legitimately need more
slots?" section; inbound volume belongs on queues.)

## 6. Worked example — the receptionist's hand-off

Acme's receptionist covers the main number from a browser softphone.

1. A caller asking for Billing lands on the desk. The receptionist
   answers, speaks to the caller, and clicks **Park** — auto-pick
   claims slot **4**.
2. The toast reads "**Call parked — slot 4**"; the receptionist tells
   the billing specialist "Billing on 4."
3. The specialist opens **Voice → Parked Calls**, clicks **Retrieve**
   on the row for slot 4 (or dials `*4` from a desk phone); the first
   attempt bridges the caller and frees the slot.
4. While the specialist talks, the ticket the team keeps for this
   caller updates as the parked row's `parkedForSeconds` shows the
   elapsed hold time — the lobby is the ground truth for "how long has
   this caller been on hold?"

If two operators had clicked Retrieve at the same moment, the second
would see `410 PARK_ALREADY_RETRIEVED` naming the retriever — safe to
treat the claim as taken (see [Troubleshooting](/troubleshooting/voice-call-park)).

## 7. When NOT to use park

Park is a per-slot, team-visible lobby — not a queue, and not a warm
transfer.

* **Inbound volume belongs on a queue.** A queue holds hundreds of
  callers in FIFO order with SLA metrics; park holds nine total live
  calls against the team. Route inbound numbers to a
  [voice queue](/guides/voice-queues) and park only for hand-offs the
  queue cannot dispatch.
* **A known teammate belongs on a transfer.** Blind-transfer targets a
  named extension with a single click through the
  [attendant console](/guides/attendant-console) — park is for the
  "anyone can grab this caller" pattern, not a directed hand.
* **Warm hand-off belongs on a conference.** When the specialist must
  hear who is on the line first, use a warm transfer or the conference
  bridge — never park, since there is no announcement step before the
  retrieve claim.

## See also

* [Paging, ring groups & call park](/voice/paging-ring-groups-call-park) — the three sibling group-distribution primitives
* [Attendant console guide](/guides/attendant-console) — the four-panel operator workspace that carries the shared lobby panel
* [Troubleshooting: voice call park orbit](/troubleshooting/voice-call-park) — the `PARK_…` error catalog and slot-state diagnosis
* [Voice queues](/guides/voice-queues) — the ACD path inbound volume belongs on
