---
title: "Create a new InfoSlides workspace and get its API key"
method: POST
path: "/v1/tenants"
tags: ["Workspaces"]
---

# Create a new InfoSlides workspace and get its API key

`POST /v1/tenants`

## Request

- Base URL: `https://infoslides.app`
- URL: `https://infoslides.app/v1/tenants`
- Auth: none declared

Called with no credential, provisions a brand-new workspace on the free plan and returns its admin API key exactly once. `ownerEmail` must be an address you can open right now, never an invented one or a placeholder; your own is recommended, so you can verify it at once and then add the person with `POST /v1/team/invitations`. Adding a screen fails with `EmailNotVerified` until the address is verified: open the verification email, sign in once with Google or Microsoft using that address, or set a password. Accepts an optional `source` field (`web`, `api`, `cli`, `mcp`, `muse`) recording how the signup originated, and optional `timeZone` and `locale` (same values as `PATCH /v1/tenant`); otherwise the workspace starts on Atlantic/Reykjavik and is-IS. An agent should also send `agent` with its own product name (e.g. "Muse", "Instinct", at most 40 characters, plain text) — kept separate from `source`, which stays the fixed channel. Optionally send `ownerName` (the person's first name, at most 100 characters) so emails greet them by name instead of the workspace name; ask for it only when that is free, never invent one. Called **with** an admin API key instead, creates an additional workspace attached to that key owner's own account (`ownerEmail` must match the caller's own address) and returns that new workspace's own admin key — the recommended way to manage several workspaces under one identity is `POST /v1/team/invitations` to add teammates instead, one API key per workspace.

## Headers

- `Idempotency-Key` string

## Request body

- CreateTenantRequest
  - `tenantName` string, nullable
  - `ownerEmail` string, nullable
  - `source` string, nullable
  - `timeZone` string, nullable
  - `locale` string, nullable
  - `agent` string, nullable
  - `ownerName` string, nullable

## Response `200`

OK

---

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