---
title: "Provision an isolated sponsored demo workspace"
method: POST
path: "/admin/demo-workspaces"
tags: ["Administration"]
---

# Provision an isolated sponsored demo workspace

`POST /admin/demo-workspaces`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/admin/demo-workspaces`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Site-admin/admin-agent route. Idempotent by normalized owner email: creates one firm, three stable demo company identities, and an email-bound owner invitation shell without Stripe. The heavy three-company template build and invitation email run after the HTTP response via a background finalize step. Repeating the same email returns the existing workspace and re-queues a build when status is failed or still provisioning. Poll GET until workspace.status is ready or failed.

## Request body

- object
  - `ownerName` string, required
  - `ownerEmail` string, email, required
  - `templateVersion` string
  - `sponsoredUntil` string, date-time, nullable
  - `tallyIncluded` boolean
  - `sendInvitation` boolean

## Response `200`

Existing ready workspace needed no background work (buildQueued false)

## Other responses

- `201`: New workspace shell created; when buildQueued is true the dataset is still building in the background
- `202`: Workspace accepted; buildQueued true means template materialization and/or invitation delivery continues after the response. Poll GET /admin/demo-workspaces until status is ready or failed.
- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
