---
title: "Create a workspace"
method: POST
path: "/tenant/workspaces"
tags: ["Tenant"]
---

# Create a workspace

`POST /tenant/workspaces`

## Request

- Base URL: `https://api.savanto.ai`
- URL: `https://api.savanto.ai/tenant/workspaces`
- Auth: HTTP bearer

Create a new workspace (a distinct site / storefront) under the authenticated tenant. Returns the workspace id you will pass as `X-Workspace-ID` on every subsequent content, crawl, and chat request. Typical onboarding flow: create → (optionally set platform) → start crawl → ingest products/posts. Creation does NOT enqueue a crawl — call `POST /crawl` separately.

## Request body

- CreateWorkspaceRequest
  - `workspaceId` string, required
  - `name` string
  - `description` string
  - `source` string
  - `siteUrl` string

## Response `201`

Workspace created

- object
  - `object` 'workspace', required
  - `requestId` string, required
  - `data` object, required
    - `workspace` WorkspaceSummary, required
      - `workspaceId` string, required
      - `name` string
      - `domain` string
      - `platform` 'wordpress' | 'shopify' | 'custom'
      - `status` 'active' | 'deleting'
      - `createdAt` string
      - `updatedAt` string
    - `message` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `413`: Payload too large
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/savanto/apis/savanto-api.md) · [All operations](https://skmtc.dev/savanto/apis/savanto-api/llms.txt) · [OpenAPI document](https://skmtc.dev/savanto/apis/savanto-api/revisions/82437327a878?raw)
