curl --request POST \
--url https://cloudlab.scispot.io/labspace/protocol/new \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Protocol",
"location": "My Labspace",
"description": "This is a protocol for the labspace",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-01-02T00:00:00.000Z",
"hrid": "MY_PROTOCOL",
"steps": [
"Step 1",
"Step 2",
"Step 3"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Protocol',
location: 'My Labspace',
description: 'This is a protocol for the labspace',
startDate: '2026-01-01T00:00:00.000Z',
endDate: '2026-01-02T00:00:00.000Z',
hrid: 'MY_PROTOCOL',
steps: ['Step 1', 'Step 2', 'Step 3']
})
};
fetch('https://cloudlab.scispot.io/labspace/protocol/new', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://cloudlab.scispot.io/labspace/protocol/new"
payload = {
"name": "My Protocol",
"location": "My Labspace",
"description": "This is a protocol for the labspace",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-01-02T00:00:00.000Z",
"hrid": "MY_PROTOCOL",
"steps": ["Step 1", "Step 2", "Step 3"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"uuid": "<uuid>",
"name": "My Protocol",
"hrid": "MY_PROTOCOL"
}{
"success": false,
"message": "Invalid Authentication Token"
}{
"success": false,
"message": "Missing Authentication Token"
}{
"success": false,
"message": "Not found"
}{
"success": false,
"message": "Conflict"
}{
"success": false,
"message": "Validation error"
}{
"success": false,
"message": "Operation failed"
}Create Protocol
Create protocol inside a labspace, folder or a subfolder
Note: Labspace, Folder, and Subfolder names should not contain the colon (:) character as colon is used to separate the labspace, folder, and subfolder when assigning the location.
Validation notes: provide at least one of labspace, folder.
curl --request POST \
--url https://cloudlab.scispot.io/labspace/protocol/new \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Protocol",
"location": "My Labspace",
"description": "This is a protocol for the labspace",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-01-02T00:00:00.000Z",
"hrid": "MY_PROTOCOL",
"steps": [
"Step 1",
"Step 2",
"Step 3"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Protocol',
location: 'My Labspace',
description: 'This is a protocol for the labspace',
startDate: '2026-01-01T00:00:00.000Z',
endDate: '2026-01-02T00:00:00.000Z',
hrid: 'MY_PROTOCOL',
steps: ['Step 1', 'Step 2', 'Step 3']
})
};
fetch('https://cloudlab.scispot.io/labspace/protocol/new', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://cloudlab.scispot.io/labspace/protocol/new"
payload = {
"name": "My Protocol",
"location": "My Labspace",
"description": "This is a protocol for the labspace",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-01-02T00:00:00.000Z",
"hrid": "MY_PROTOCOL",
"steps": ["Step 1", "Step 2", "Step 3"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"uuid": "<uuid>",
"name": "My Protocol",
"hrid": "MY_PROTOCOL"
}{
"success": false,
"message": "Invalid Authentication Token"
}{
"success": false,
"message": "Missing Authentication Token"
}{
"success": false,
"message": "Not found"
}{
"success": false,
"message": "Conflict"
}{
"success": false,
"message": "Validation error"
}{
"success": false,
"message": "Operation failed"
}Authorizations
Personal access token from Scispot Account → Personal Tokens
Body
The name of the protocol.
The location of the protocol. In the format of "Labspace:Folder:Subfolder"
Optional. The description of the protocol.
Optional. The ID of the protocol template to use.
Optional. The start date of the protocol.
Optional. The end date of the protocol.
Optional. human-readable ID for the page.
Requred if templateId is not provided. The steps of the protocol.
Each string should be a step of the protocol.
