---
title: "Open whitelabel client workspace"
method: POST
path: "/api/whitelabels/{sid}/clients/{teamSid}/open"
tags: ["whitelabels"]
---

# Open whitelabel client workspace

`POST /api/whitelabels/{sid}/clients/{teamSid}/open`

## Request

- Base URL: `https://beta.getsales.io/id/v1`
- URL: `https://beta.getsales.io/id/v1/api/whitelabels/{sid}/clients/{teamSid}/open`
- Auth: HTTP bearer and API key in header `Team-SID`

Enter a client workspace of the brand as its owner, the way an admin impersonates: a 30-minute support session is minted and parked behind a one-time code; result.url is the app link that redeems it (the code rides the URL fragment, valid 120 seconds, one redemption). Audited on both halves (who, which brand, which workspace). The workspace's owner must be a client of this brand (403 not_a_client_workspace), the brand the caller's team's. Not idempotent: every call mints a new code.

Contract:
- MCP tool `open_whitelabel_client_workspace`, registry package `mcp.id/whitelabels`, mount `id.partner`.
- Operation `action`, response envelope `action`.
- Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.

## Path parameters

- `sid` string, required: Whitelabel (brand) sid (id_wl_...).
- `teamSid` string, required: A client workspace of this brand (ts_tm_...): its owner registered on the brand's host.

## Response `200`

`action` success envelope.

- OpenWhitelabelClientWorkspaceResponse
  - `success` true, required
  - `operation` 'action', required
  - `action` string, required: kebab-case verb; matches the route segment.
  - `item` unknown, required
  - `result` object, required
    - `url` string, required: The app link that redeems the code (the code is in the URL fragment).
    - `code_expires_in` integer, required: Seconds the one-time code stays redeemable (120).
    - `expires_in` integer, required: Seconds the minted session lives (1800).
    - `target` object, required: Whose workspace is entered.
      - `team_sid` string, required: The client workspace entered.
      - `team_name` string, required: Its name.
      - `user_sid` string, required: Its owner, whose session this is.
      - `email` string, required: The owner's address.
      - `first_name` string, nullable, required: The owner's given name.
      - `last_name` string, nullable, required: The owner's family name.
  - `meta` object, required
    - `trace_id` string, required: UUID v7; same 128-bit value as the X-Trace-Id header.
    - `span_id` string, required: 16 hex chars, root span of this request.
    - `timestamp` string, required: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
    - `duration_ms` integer, required: Server-side wall clock.
    - `team_sid` string, nullable: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.
    - `actor_type` string, nullable: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.

## Other responses

- `4XX`: MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
- `5XX`: MCP error envelope with `error.code` internal_error or service_unavailable.

---

[API](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-id.md) - [All operations](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-id/llms.txt) - [OpenAPI document](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-id/revisions/95e48541fe85?raw)
