> ## Documentation Index
> Fetch the complete documentation index at: https://docs.craftkit.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a project

> POST /v1/projects — create a project owned by your account, authenticated with an account key.

<Info>**POST** `https://api.craftkit.dev/v1/projects`</Info>

Create a new project owned by the authenticated account. Use this to provision a project
programmatically instead of clicking through the dashboard — for example, one project per
customer org in a multi-tenant integration.

<Warning>
  This endpoint authenticates with an **account key** (`ck_acct_…`), not a project key
  (`ck_live_…`). A project key is rejected with `401`. See
  [Authentication](/guides/authentication) and [Account-key auth](/guides/account-api) for how the
  two credential types differ.
</Warning>

## Authorization

<ParamField header="Authorization" type="string" required>
  `Bearer ck_acct_…` — the project is created under this account.
</ParamField>

## Body

<ParamField body="name" type="string" required>Display name (1–120 chars).</ParamField>

## Response

`201`:

<ResponseField name="id" type="string">UUID of the new project.</ResponseField>

<ResponseField name="slug" type="string">
  Derived from `name` (kebab-case). On collision with a slug already used by this account — including
  a soft-deleted project's slug — a numeric suffix (`-1`, `-2`, …) is appended until it is unique.
</ResponseField>

<ResponseField name="name" type="string">Echoed back.</ResponseField>

## Errors

| Status | code              | Meaning                                                       |
| ------ | ----------------- | ------------------------------------------------------------- |
| 400    | `invalid_json`    | Body is not valid JSON.                                       |
| 401    | `unauthorized`    | Missing, invalid, or wrong-type (`ck_live_…`) bearer token.   |
| 422    | `invalid_request` | `name` missing, empty, or over 120 chars (`issues` included). |

```bash cURL theme={null}
curl -X POST https://api.craftkit.dev/v1/projects \
  -H "Authorization: Bearer $CRAFTKIT_ACCOUNT_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Acme Corp" }'
```

```json 201 theme={null}
{
  "id": "3f9b6c2e-1a2b-4c3d-9e8f-7a6b5c4d3e2f",
  "slug": "acme-corp",
  "name": "Acme Corp"
}
```

<Tip>
  Right after creating a project you almost always want a project key for it — see
  [Mint a project API key](/api-reference/create-project-key).
</Tip>
