Skip to content

Create a suite

POST
/v1/suites
curl --request POST \
--url https://beta-api.plune.ai/v1/suites \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "checkout.spec.ts", "kind": "suite", "description": "Cart and checkout flows of the web shop." }'

“New suite” on the Suites screen (api.ts → createSuite). The tree is a filesystem: a folder holds folders and suites, a suite holds cases, so parentId must name a folder. Nodes a person makes have no file; the nodes filing derives from an automated case’s specRef do, and an import finds a suite by that file before it looks at names.

Media type application/json
object
name
required
string
parentId

Must be an existing FOLDER in your project — a suite holds cases, not suites (400 otherwise).

string
kind
string
default: suite
Allowed values: folder suite
position

The slot among the siblings; omitted = after the last one. Anything past the end is the end.

integer
description

Up to 16 384 bytes of UTF-8.

string
Example
{
"name": "checkout.spec.ts",
"kind": "suite",
"description": "Cart and checkout flows of the web shop."
}

Created

Media type application/json

A node of the tree as stored: the authoring core plus server-owned scoping metadata. The tree is a filesystem (B-7): a folder holds folders and suites, a suite holds test cases.

object
schemaVersion
required
integer
Allowed values: 1
id
required
string format: uuid
name
required
string
parentId

Absent on a root node. Always a folder.

string
projectId
required
string
kind
required
string
Allowed values: folder suite
position
required

Order among siblings — dense and 0-based; every write that places a node renumbers them.

integer
description

Free text, up to 16 384 bytes of UTF-8. Absent when empty.

string
file

The spec path this suite was filed from (an automated case’s specRef, normalised). Set by filing alone and never by hand; absent on nodes a person made.

string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"schemaVersion": 1,
"id": "6f1c2b3a-0000-4000-8000-0000000000a1",
"name": "checkout.spec.ts",
"projectId": "u-shop::default",
"kind": "suite",
"position": 0,
"description": "Cart and checkout flows of the web shop.",
"createdAt": "2026-09-16T09:12:04.151Z",
"updatedAt": "2026-09-16T09:12:04.151Z"
}

Invalid body, or a parent that is missing / not yours / a suite rather than a folder

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

No / invalid token or session

Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over