---
title: "Create a project from an idea, file, BOM, exact part, or RFQ"
method: POST
path: "/v1/projects"
tags: ["Buyer projects"]
---

# Create a project from an idea, file, BOM, exact part, or RFQ

`POST /v1/projects`

## Request

- Base URL: `https://api.supplyslate.com`
- URL: `https://api.supplyslate.com/v1/projects`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://mcp.supplyslate.com/authorize`, token URL `https://mcp.supplyslate.com/oauth/token`)
  - HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- ProjectWrite
  - `external_id` string
  - `name` string, required
  - `origin_type` 'idea' | 'file' | 'bom' | 'exact_part' | 'rfq', required
  - `project_type` 'industrial_replacement' | 'catalog_build' | 'fabricated_part' | 'mixed_build' | 'kit' | 'assembly', required
  - `demand_lane` 'industrial' | 'builder' | 'research', required
  - `brief` string, required
  - `build_quantity` number
  - `ship_to` object
    - `country_code` string, required
    - `postal_code` string
  - `need_by` string, date
  - `budget` object
    - `amount_minor` integer, required
    - `currency` string, required
  - `substitution_policy` 'exact_only' | 'approval_required' | 'equivalents_allowed'
  - `data_classification` 'public' | 'commercial' | 'confidential' | 'restricted'
  - `confidentiality_policy` object
  - `requirements` ProjectRequirementWrite[]
    - `requirement_type` string, required
    - `name` string, required
    - `value` unknown
    - `verbatim_value` string
    - `unit` string
    - `criticality` 'required' | 'preferred' | 'context'
    - `source_type` 'user_statement' | 'agent_interpretation' | 'artifact' | 'supplier_claim' | 'public_source' | 'operator_decision'
    - `source_reference` string
    - `confirmed` boolean
  - `fixture_kind` 'real' | 'internal_test' | 'demo'

## Response `201`

Created durably

- ProjectResponse
  - `project` Project, required
    - `id` string, required
    - `name` string, required
    - `origin_type` 'idea' | 'file' | 'bom' | 'exact_part' | 'rfq', required
    - `project_type` string
    - `demand_lane` 'industrial' | 'builder' | 'research', required
    - `status` string, required
    - `current_revision` object
  - `request_id` string

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: Scope or tenant boundary denied
- `404`: Resource not found
- `409`: State conflict or idempotency mismatch
- `429`: Rate limited

---

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