---
title: "Create a project from captured commercial facts. Pricing, economics and geography fields (customer_price, economics, factory_cost, margin, currency, region, state, country) are rejected with 400 — this surface captures facts only. Returns the full RPC result including the project id."
method: POST
path: "/projects"
---

# Create a project from captured commercial facts. Pricing, economics and geography fields (customer_price, economics, factory_cost, margin, currency, region, state, country) are rejected with 400 — this surface captures facts only. Returns the full RPC result including the project id.

`POST /projects`

## Request

- Base URL: `https://forbiz.io/api/public/agent`
- URL: `https://forbiz.io/api/public/agent/projects`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `name` string
  - `location` string
  - `primaryOrganizationId` string
  - `primaryPersonId` string
  - `commercialStageName` string
  - `lifecycleStatus` string
  - `notes` string
  - `source` string
  - `purpose` 'real' | 'test' | 'fictional' | 'demo': Why this project exists. Default real. A project created to practice should be created with purpose 'test' so it never competes with real commitments. Anything other than real is excluded from /next, /state queues and counts, the nudges and the digest, while staying in /search, /export and every direct read.

## Response `201`

Created

- object

## Other responses

- `208`: Idempotent replay of a previous request with the same Idempotency-Key. Nothing was applied again.
- `400`: Validation error, an invalid purpose (400 invalid_purpose) or a rejected pricing/geography field
- `409`: This credential is not bound to a workspace

---

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