# Workspaces

Source: https://kirora.io/docs/api/reference/workspaces

Partner workspaces let a platform offer messaging to its own customers, one workspace per customer, created and run with a partner key and the `Kirora-Workspace` header. See [Choose an integration](https://kirora.io/docs/api/integrations).

## Endpoints

- [List your tenant workspaces](https://kirora.io/docs/api/reference/listWorkspaces): `GET /v1/workspaces`
- [Create a tenant workspace](https://kirora.io/docs/api/reference/createWorkspace): `POST /v1/workspaces`
- [Retrieve a tenant workspace](https://kirora.io/docs/api/reference/getWorkspace): `GET /v1/workspaces/{externalId}`
- [Update a tenant workspace](https://kirora.io/docs/api/reference/updateWorkspace): `PATCH /v1/workspaces/{externalId}`
- [Delete a tenant workspace](https://kirora.io/docs/api/reference/deleteWorkspace): `DELETE /v1/workspaces/{externalId}`
- [Suspend a tenant workspace](https://kirora.io/docs/api/reference/suspendWorkspace): `POST /v1/workspaces/{externalId}/suspend`
- [Resume a tenant workspace](https://kirora.io/docs/api/reference/resumeWorkspace): `POST /v1/workspaces/{externalId}/resume`
- [Cancel a tenant workspace's deletion](https://kirora.io/docs/api/reference/cancelWorkspaceDeletion): `POST /v1/workspaces/{externalId}/cancel-deletion`

## The Workspace object

```json
{
  "id": "0192f3c1-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
  "externalId": "tenant-lagos-01",
  "name": "Juniper Kitchen London",
  "country": "GB",
  "timezone": "Europe/London",
  "status": "active",
  "suspendedAt": null,
  "deletionRequestedAt": null,
  "deletesAt": null,
  "website": "https://juniperkitchen.co.uk",
  "mailKind": "both",
  "contactOptIn": "Order confirmations, and offers to diners who tick the box at checkout",
  "createdAt": "2026-10-01T09:30:00.000Z"
}
```

- `id` (string, required, uuid)
- `externalId` (string, required) — Your own id for the tenant.
- `name` (string, required)
- `country` (string, required, 2 characters) — Two-letter ISO 3166-1 country code.
- `timezone` (string, required) — IANA timezone; decides local-time sends and report days.
- `status` (string, required, one of `active`, `suspended`, `deleting`) — `suspended` refuses every send in the workspace until it is resumed; `deleting` refuses them too, and the workspace is purged unless the deletion is cancelled.
- `suspendedAt` (string | null, required, date-time) — When it was suspended; null if not.
- `deletionRequestedAt` (string | null, required, date-time) — When deletion was asked for; null if not.
- `deletesAt` (string | null, required, date-time) — When the workspace and everything in it is deleted for good, unless the deletion is cancelled before; null if no deletion is pending.
- `website` (string | null, required, uri, up to 500 characters) — The business's website.
- `mailKind` (string | null, required, one of `marketing`, `transactional`, `both`) — What the workspace sends.
- `contactOptIn` (string | null, required, 1–1,000 characters) — How its contacts agreed to hear from it: a signup form, checkout, an app.
- `createdAt` (string, required, date-time)
