Create a client workspace
Create a workspace for one of your clients.
Creates a workspace for one of your clients. Every integration starts here: the partner_workspace_id you choose is your own ID for the client, and every other route names the client with it in its path. The owner you name gets admin access to the workspace in the Sillage app.
You can have only one live workspace per domain. To cover another team or product of the same client, create a persona in the existing workspace instead: each persona has its own lists, signal setups and leads.
There is no idempotency key. A retry with the same partner_workspace_id answers 409: read the workspace back with GET /v3/partner/workspaces/{partner_workspace_id}.
Route
Body parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partner_workspace_id | string | Yes | none | Your own ID for the client, 1 to 255 characters. Must be unique among your workspaces, deleted ones included. Must not contain /, ?, # or spaces. |
| name | string | Yes | none | Name of the workspace, 1 to 255 characters. |
| domain | string | Yes | none | The main website of the client, as a hostname with no protocol or path, for example acme.com. Saved in lowercase. You can have only one live workspace per domain. |
| owner_email | string | Yes | none | Email of the person who gets admin access to the workspace in the Sillage app. |
Example request
curl -X POST "https://api.getsillage.com/api/v3/partner/workspaces" \
-H "Authorization: Bearer $SILLAGE_MASTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"partner_workspace_id": "crm-4821",
"name": "Acme",
"domain": "acme.com",
"owner_email": "owner@acme.com"
}'Success response
Status: 201 Created
{
"data": {
"partner_workspace_id": "crm-4821",
"name": "Acme",
"domain": "acme.com",
"archived": false,
"created_at": "2026-10-16T09:00:00.000Z"
}
}Response fields
| Field | Type | Description |
|---|---|---|
| data.partner_workspace_id | string | Your own ID for the client. |
| data.name | string | Name of the workspace. |
| data.domain | string or null | Company domain of the client, in lowercase. null on some older workspaces. |
| data.archived | boolean | true when the client is paused. |
| data.created_at | string | ISO 8601 date and time the workspace was created. |
The email in owner_email is not returned.
Errors
| Status | Meaning |
|---|---|
| 401 | The master key is missing or invalid. |
| 409 | You already have a workspace with this partner_workspace_id (You already have a workspace with partner_workspace_id "crm-4821".), or you already have a live workspace on this domain (You already have a workspace for acme.com (crm-4821). Create a persona in it instead: each persona has its own lists, signal setups and leads.), or another create or restore is running for you at the same moment (A workspace is being created or restored for you right now. Retry in a moment.). |
| 422 | The body is not valid (Invalid request body): a required field is missing or empty, partner_workspace_id contains /, ?, # or spaces (Must not contain "/", "?", "#" or spaces), domain (not a hostname with no protocol or path) or owner_email is not valid, or a field the route does not accept is sent (for example Unknown field: foo). errors names each field. A query parameter is refused too. |
| 429 | Rate limit exceeded. |
| 500 | An unexpected server error occurred. |
Error responses use RFC 9457 problem documents with Content-Type: application/problem+json. type is always about:blank; code tells one problem from another, detail says what went wrong this time, and errors names the field at fault.