Create a suite
const url = 'https://beta-api.plune.ai/v1/suites';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"checkout.spec.ts","kind":"suite","description":"Cart and checkout flows of the web shop."}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Must be an existing FOLDER in your project — a suite holds cases, not suites (400 otherwise).
The slot among the siblings; omitted = after the last one. Anything past the end is the end.
Up to 16 384 bytes of UTF-8.
Example
{ "name": "checkout.spec.ts", "kind": "suite", "description": "Cart and checkout flows of the web shop."}Responses
Section titled “ Responses ”Created
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
Absent on a root node. Always a folder.
Order among siblings — dense and 0-based; every write that places a node renumbers them.
Free text, up to 16 384 bytes of UTF-8. Absent when empty.
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.
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
object
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.
object
Example generated
{ "error": "example"}Headers
Section titled “Headers ”Seconds until the window rolls over