| Field | Type | Required | Description |
|---|---|---|---|
accountId | UUID! | Yes | Account to receive the new project. Project creation and account assignment are atomic. Requires account.projects.create. The caller remains the billing and seat owner. The caller project limit returns 402 when exhausted. |
name | String! | Yes | Project display name. |
slug | String | No | Unique project slug. Omit to generate a slug with a random suffix. An explicit duplicate slug returns 409; creation does not replay an existing project. |
templateSlug | String | No | Optional template slug. A template project UUID takes precedence. Null means omitted. |
templateProjectId | UUID | No | Optional template project UUID. Overrides templateSlug. Null means omitted. |