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

# Workspaces

> Organizations hold billing; workspaces hold the work. One workspace per client, and move it to the client's organization when they take over.

* Your **organization** is the account: the [balance](https://docs.intentleads.si/guides/billing.md), invoices and people. It has no lanes of its own.
* Each **workspace** holds the work: lanes, keywords, websites, lists, API keys, webhook and leads. All of an organization's workspaces spend its balance.
* Every organization starts with one workspace, named after it, and you land in it when you sign up. If you work for yourself, that's all you need.
* Agencies add one workspace per client. A workspace can **move to another organization**: everything in it goes along, and the new organization's balance pays for it from then on.

## Organization and workspace in the dashboard

* **In a workspace** the menu is Lanes, Leads, Lists and Settings (API keys, webhook, team, activity).
* **In the organization** it's Workspaces, Billing, Users and Settings (name, organization API keys, activity across all workspaces). Pick **Organization settings** in the switcher at the top left, or the **← organization** link under it.
* Open a workspace from **Workspaces** or from the switcher, where workspaces are listed under their organization.

## How usage counts

* Every workspace spends the organization's balance, and the monthly price tiers count everything together, so more clients means a lower price per person. **Workspaces** in the dashboard shows each one's people and dollars this month.
* Each workspace keeps its own ledger: a person exported in two client workspaces counts once in each.
* Give a workspace a monthly budget in dollars, covering intent leads, search results and website visitors together, on its page or with `PUT /api/v1/workspaces/{id}/limits` and `{"budget_usd": 500}`. See [Billing](https://docs.intentleads.si/guides/billing.md#monthly-budgets).
* People in a workspace who aren't in the organization never see the organization's balance: only what the workspace spent and what's left of its budget.
* Top-ups, the monthly top-up and invoices are managed in the main organization only.

## Create one

In the dashboard, open **Workspaces** in the organization (owners). With an admin key of the organization:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s -X POST "https://intentleads.si/api/v1/workspaces" \
  -H "Authorization: Bearer $INTENT_LEADS_ADMIN_KEY" -H "Content-Type: application/json" \
  -d '{"name": "Acme Medical"}'

# Its own API key (shown once): use it for everything in that workspace
curl -s -X POST "https://intentleads.si/api/v1/workspaces/WORKSPACE_ID/keys" \
  -H "Authorization: Bearer $INTENT_LEADS_ADMIN_KEY" -H "Content-Type: application/json" \
  -d '{"name": "Acme OS", "role": "standard"}'
```

Everyone in your organization can open every workspace, with their organization role, so each shows under the organization in the switcher. `GET /api/v1/workspaces` lists them with what each used this month.

## One key for all workspaces

A workspace key works in its workspace only. An **organization key** (create it under **Settings → API keys** in the organization) manages workspaces, billing and people, and works in any of its workspaces when the request names one:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s "https://intentleads.si/api/v1/lanes" \
  -H "Authorization: Bearer $INTENT_LEADS_ORG_KEY" \
  -H "Intent-Leads-Workspace: WORKSPACE_ID"
```

* `?workspace=WORKSPACE_ID` works too.
* With only one workspace, the organization key acts there without the header. With several and no header, lane, lead and export endpoints answer `400 workspace_required` with the list of workspaces.
* Billing, workspaces and the organization itself always act on the organization.
* The [CLI](https://docs.intentleads.si/cli.md) takes `--workspace ID`, or remembers one with `intentleads use ID`. [MCP](https://docs.intentleads.si/mcp-setup.md) tools take a `workspace` argument.

## People

* **Organization users** (your team) open every workspace. Manage them under **Users** in the organization.
* **Workspace users** (for example the client's own staff) are invited to one workspace and see only that one. Manage them from the workspace's page (**Workspaces → the workspace → Members**), or `POST /api/v1/workspaces/{id}/invites`. See [Team](https://docs.intentleads.si/guides/team.md).

## Move one to another organization

When a client takes their system over, they open their own Intent Leads organization and top it up. Then:

1. You (admin key of your organization): `POST /api/v1/workspaces/{id}/transfer` returns a one-time `transfer_code`, valid 14 days. In the dashboard: open the workspace, then **Transfer**.
2. The client (admin key of their organization): `POST /api/v1/workspaces/transfers/accept` with `{"code": "wst_…"}`. In the dashboard: **Workspaces → Have a transfer code?**

The workspace moves with its lanes, keywords, websites, lists, leads and keys, and their balance pays for it from then on. Your organization's users lose access unless you send `"keep_previous_members": true` (then they stay as workspace users, and the client can remove them). Workspace users stay, and the receiving organization's users get it. `DELETE /api/v1/workspaces/{id}/transfer` cancels an open code.

Prefer to give the client a seat first? `POST /api/v1/workspaces/{id}/handover` returns an owner invite link to the workspace. `POST /api/v1/workspaces/{id}/release` turns a workspace into an organization of its own.

Data you passed to a client stays under the [terms](https://intentleads.si/terms): they must honour removals and can't use it to build a competing data product.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.