---
title: "Create a project"
method: POST
path: "/api/projects"
tags: ["Projects"]
---

# Create a project

`POST /api/projects`

## Request

- Base URL: `https://dosai.pro`
- URL: `https://dosai.pro/api/projects`
- Auth: HTTP bearer

Creates a project owned by the caller. `system_prompt` is deliberately NOT accepted here: create the project, then set the prompt with PATCH.

## Request body

- ProjectCreate
  - `name` string, required
  - `company_name` string, required
  - `industry` string
  - `description` string
  - `color` string

## Response `201`

Created project, wrapped in `data`. `warning` explains a non-blocking caveat (no trial balance on an extra project); `trial_grant_pending` means the starting balance is still being credited, so a balance read right away may show zero.

- object
  - `data` Project, required: Fields vary by role: viewer/editor do not receive system_prompt, openai_model, blacklist or notify/crm wiring.
    - `id` string, uuid, required
    - `name` string, required
    - `company_name` string
    - `industry` string
    - `description` string
    - `system_prompt` string: Owner/admin only.
    - `status` 'draft' | 'active' | 'paused' | 'archived', required
    - `channel` string
    - `color` string
    - `openai_model` string: Owner/admin only.
    - `token_balance` integer: Balance in US cents.
    - `tokens_used` integer
    - `total_conversations` integer
    - `total_leads` integer
    - `subscription_active` boolean
    - `subscription_expires_at` string, date-time, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `warning` string
  - `trial_grant_pending` boolean

## Other responses

- `400`: Validation failed.
- `401`: Missing, invalid, expired or revoked key.
- `403`: Not allowed. Distinguish by `code`: `INSUFFICIENT_SCOPE` (read-only key attempted a mutation), `API_KEY_PROJECT_SCOPE` (project-scoped key reached outside its project), `FORBIDDEN` (the user's role on this project is too low), `ACCOUNT_BANNED`.
- `429`: Too many requests. 120/min per key overall, plus a stricter per-endpoint budget. Retry after the number of seconds in Retry-After.

---

[API](https://skmtc.dev/dosai/apis/dos-ai-public-api.md) · [All operations](https://skmtc.dev/dosai/apis/dos-ai-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dosai/apis/dos-ai-public-api/revisions/38ce5f4e8f50?raw)
