---
title: "Create Product"
method: POST
path: "/v1/products"
tags: ["products"]
---

# Create Product

`POST /v1/products`

## Request

- Base URL: `https://api.evidenso.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.evidenso.com/v1/products`
- Auth: HTTP bearer

Create a new product with its features.

Example request:
```json
{
  "name": "Project Management Tool",
  "description": "A tool that helps teams organize and track their work",
  "targetAudience": "Product managers and agile teams",
  "features": [
    {"name": "Task Boards", "description": "Kanban-style boards"},
    {"name": "Sprint Planning", "description": "Tools for planning sprints"}
  ]
}
```

## Request body

- ProductCreate: Product creation model. Only ``name`` is required. Description and target audience are produced by the product-context build (which researches them anyway) and written back onto the product — asking the user for them up front duplicated that work and let the two copies drift. They remain accepted so an API caller that already knows them can seed the record — but a value supplied at CREATION is only a seed, and the build will still refine it. Ownership is taken by editing an existing product, not by creating one with a description; otherwise an agent-created product could never be improved by its own graph.
  - `name` string, required: Product name
  - `description` string, nullable: Optional; the product-context build fills this
  - `targetAudience` string, nullable: Optional; derived from the product context graph
  - `productWebsite` string, nullable: Product or company website
  - `features` FeatureCreate[]: List of features
    - `name` string, required: Feature name
    - `description` string, nullable: Feature description

## Response `200`

Successful Response

- ProductResponse: Product response model
  - `id` string, required
  - `name` string, required
  - `description` string, required
  - `target_audience` string, required
  - `product_website` string, nullable
  - `features` FeatureResponse[]
    - `id` string, required
    - `name` string, required
    - `description` string, nullable
    - `created_at` unknown, required
  - `created_at` unknown, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/evidenso/apis/persona-rag-api.md) - [All operations](https://skmtc.dev/evidenso/apis/persona-rag-api/llms.txt) - [OpenAPI document](https://skmtc.dev/evidenso/apis/persona-rag-api/revisions/86408c178d4f?raw)
