curl --request POST \
--url https://api.poelis.com/v1/public/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"workspace_id": "<string>",
"name": "<string>",
"readable_id": "<string>"
}
'import requests
url = "https://api.poelis.com/v1/public/products"
payload = {
"workspace_id": "<string>",
"name": "<string>",
"readable_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({workspace_id: '<string>', name: '<string>', readable_id: '<string>'})
};
fetch('https://api.poelis.com/v1/public/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"archived": false,
"baseline_version_number": 5,
"createdBy": {
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
},
"excludedStatusIds": [],
"id": "660e8400-e29b-41d4-a716-446655440000",
"name": "Jet Engine Specifications",
"owner": {
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
},
"part_number": "JE-1000-A",
"readable_id": "jet-engine-specs",
"status": {
"color": "#3b82f6",
"groupKey": "started",
"id": "770e8400-e29b-41d4-a716-446655440999",
"name": "In Progress"
},
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": "unauthorized",
"message": "Invalid or missing API key"
}{
"error": "forbidden",
"message": "Access denied"
}{
"error": "not_found",
"message": "Not found"
}{
"error": "validation_error",
"message": "Invalid data format",
"details": {
"errors": [
{
"loc": [
"body",
"field_name"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}
}{
"error": "rate_limit_exceeded",
"message": "Too many requests"
}Create product
Create a new product in a workspace.
The product will be created with the provided name and readable_id.
Optional part_number assigns a part number on create.
Part numbers
- 409: duplicate or retired
part_numberwithin the organization. - 422: value does not match the product’s configured format (when set in the app).
curl --request POST \
--url https://api.poelis.com/v1/public/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"workspace_id": "<string>",
"name": "<string>",
"readable_id": "<string>"
}
'import requests
url = "https://api.poelis.com/v1/public/products"
payload = {
"workspace_id": "<string>",
"name": "<string>",
"readable_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({workspace_id: '<string>', name: '<string>', readable_id: '<string>'})
};
fetch('https://api.poelis.com/v1/public/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"archived": false,
"baseline_version_number": 5,
"createdBy": {
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
},
"excludedStatusIds": [],
"id": "660e8400-e29b-41d4-a716-446655440000",
"name": "Jet Engine Specifications",
"owner": {
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
},
"part_number": "JE-1000-A",
"readable_id": "jet-engine-specs",
"status": {
"color": "#3b82f6",
"groupKey": "started",
"id": "770e8400-e29b-41d4-a716-446655440999",
"name": "In Progress"
},
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": "unauthorized",
"message": "Invalid or missing API key"
}{
"error": "forbidden",
"message": "Access denied"
}{
"error": "not_found",
"message": "Not found"
}{
"error": "validation_error",
"message": "Invalid data format",
"details": {
"errors": [
{
"loc": [
"body",
"field_name"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}
}{
"error": "rate_limit_exceeded",
"message": "Too many requests"
}Authorizations
Enter your API key. Example: Bearer poelis_api_...
Body
Request to create a new product.
Workspace ID to create the product in
Product name
1Human-readable product ID (must be unique within workspace). Only lowercase letters, numbers and underscores are allowed.
1^[a-z0-9_]+$Product description
Optional part number to assign on create. Must be unique within the organization.
Response
Created product
Public representation of a product.
Human-readable product ID
Workspace this product belongs to
Product name
Product description
Active product part number, when assigned. Uniqueness is enforced organization-wide; format is validated when the product has rule configuration in the app.
User-selected baseline product version number.
Whether the product is archived or not.
Current workflow status for this product. Null when no status is set.
Show child attributes
Show child attributes
Workspace-level status IDs that are hidden for this product.
Product owner. Null when not set.
Show child attributes
Show child attributes
{
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
}
User who created the product.
Show child attributes
Show child attributes
{
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
}
ISO 8601 creation timestamp
ISO 8601 last-update timestamp
User who last updated the product
Show child attributes
Show child attributes
{
"id": "auth0|550e8400-e29b-41d4-a716-446655440000",
"imageUrl": "https://example.com/avatar.png",
"userName": "Jane Doe"
}