---
title: "Create a workspace and return a credential scoped to it"
method: POST
path: "/v1/workspaces"
tags: ["admin"]
---

# Create a workspace and return a credential scoped to it

`POST /v1/workspaces`

## Request

- Base URL: `https://api.indraft.io`
- URL: `https://api.indraft.io/v1/workspaces`
- Auth: HTTP bearer

Creates a workspace and returns a credential scoped to it and nothing else. Intended for provisioning one per customer under a parent account, which is why the returned credential cannot reach the workspace that created it.

## Request body

- object
  - `name` string, required
  - `displayTimezone` string, required
  - `defaultCurrency` string, required
  - `idempotencyKey` string

## Response `200`

Success

- object
  - `workspace` object, required
    - `id` string, required
    - `name` string, required
  - `credential` object, required
    - `id` string, required
    - `prefix` string, required
    - `token` string, required
    - `scopes` string[], required
  - `requestId` string, required

## Other responses

- `401`: No credential, or one that has been revoked.
- `402`: A product quota is spent, or the subscription is not active.
- `403`: Authenticated, and this capability is not held.
- `409`: A conflict the caller can resolve: a stale expectedVersion, an idempotency key reused for different input, an ambiguous or duplicate identity, or a merge that no longer applies.
- `413`: The body, or a single record inside it, exceeds its bound.
- `422`: The request does not satisfy the schema on this page.
- `429`: Infrastructure protection tripped. This is not a product quota.
- `500`: A defect on our side. The hint says so, and carries an incident id.
- `507`: The workspace is at its storage ceiling.

---

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