/project/projectsprojectCreate a project (seeds default statuses + a project.created activity)
Create a record in projects.
Auth: bearerAuth — calls run as the authenticated user.
- workspacequery · optionalstring
Scope to this WORKSPACE’s owning principal (the caller’s own customer slug, or an organization the caller belongs to): the list pins to rows the principal OWNS, and a create stamps it as the owner. Omitted: the caller’s reach (owned / org / participating). Unknown/foreign slug: 404.
application/json · optional
- namestring
- descriptionoptionalstring
- coloroptionalstring
- ecosystemIdoptionalstring
the owning ecosystem; defaulted to the caller ecosystem when omitted. A non-admin passing a foreign owner is rejected by RLS.
{
"name": "string",
"description": "string",
"color": "string",
"ecosystemId": "string"
}Created project
- idstring
- namestring
- descriptionstring
- statusstring
lifecycle status (DB default 'active')
- colorstring
hex board accent (DB default #007AFF)
- createdAtstring
- updatedAtstring
- isDeletedboolean
- syncVersioninteger
- customerIdstring
the customer (user) who created the project
- deletedAtoptionalstring?
- ecosystemIdstring
the owning ecosystem (tenant scope)
- archivedAtoptionalstring?
ISO timestamp when archived; null = not archived
- ownerKind"customer" | "organization"
the kind of principal that OWNS the project
- ownerIdstring
the owning principal (customer or organization id); server-stamped from the verified ?workspace= scope, else the creator
{
"id": "string",
"name": "string",
"description": "string",
"status": "string",
"color": "string",
"createdAt": "string",
"updatedAt": "string",
"isDeleted": true,
"syncVersion": 0,
"customerId": "string",
"deletedAt": "string",
"ecosystemId": "string",
"archivedAt": "string",
"ownerKind": "customer",
"ownerId": "string"
}Error
- erroroptionalobject
{
"error": {
"message": "string",
"code": "string"
}
}Error
- erroroptionalobject
{
"error": {
"message": "string",
"code": "string"
}
}Error
- erroroptionalobject
{
"error": {
"message": "string",
"code": "string"
}
}curl -X POST "https://api.agenticdeveloperhub.com/project/projects" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"description": "string",
"color": "string",
"ecosystemId": "string"
}'const res = await fetch("https://api.agenticdeveloperhub.com/project/projects", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"color\": \"string\",\n \"ecosystemId\": \"string\"\n}",
});
const data = await res.json();