curl --request PUT \
--url https://statusstack.com/api/v1/stacks/{stack_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"password": "<string>",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"custom_logo_url": "<string>",
"theme": "auto",
"layout": "grid",
"refresh_interval": 30,
"metadata": {},
"settings": {
"contact_url": "<string>",
"contact_email": "jsmith@example.com",
"contact_phone": "<string>"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
slug: '<string>',
description: '<string>',
password: '<string>',
parent_stack_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
custom_logo_url: '<string>',
theme: 'auto',
layout: 'grid',
refresh_interval: 30,
metadata: {},
settings: {
contact_url: '<string>',
contact_email: 'jsmith@example.com',
contact_phone: '<string>'
}
})
};
fetch('https://statusstack.com/api/v1/stacks/{stack_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://statusstack.com/api/v1/stacks/{stack_id}"
payload = {
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"password": "<string>",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"custom_logo_url": "<string>",
"theme": "auto",
"layout": "grid",
"refresh_interval": 30,
"metadata": {},
"settings": {
"contact_url": "<string>",
"contact_email": "jsmith@example.com",
"contact_phone": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"stack_type": "application",
"visibility": "public",
"public_url": "<string>",
"theme": "auto",
"layout": "grid",
"custom_logo_url": "<string>",
"refresh_interval": 30,
"show_timestamps": true,
"show_component_names": true,
"show_incident_history": true,
"incident_history_days": 123,
"metadata": {},
"settings": {},
"view_count": 123,
"subscriber_count": 123,
"health_percentage": 123,
"sources_count": 123,
"components_count": 123,
"active_subscribers_count": 123,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"team": {},
"parent_stack": "<unknown>",
"child_stacks": "<array>",
"sources": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"type": "salesforce",
"url": "<string>",
"components": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latest_status": "operational",
"description": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"components": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latest_status": "operational",
"description": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"links": {
"self": "<string>",
"public": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"errors": {}
}Update a stack
curl --request PUT \
--url https://statusstack.com/api/v1/stacks/{stack_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"password": "<string>",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"custom_logo_url": "<string>",
"theme": "auto",
"layout": "grid",
"refresh_interval": 30,
"metadata": {},
"settings": {
"contact_url": "<string>",
"contact_email": "jsmith@example.com",
"contact_phone": "<string>"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
slug: '<string>',
description: '<string>',
password: '<string>',
parent_stack_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
custom_logo_url: '<string>',
theme: 'auto',
layout: 'grid',
refresh_interval: 30,
metadata: {},
settings: {
contact_url: '<string>',
contact_email: 'jsmith@example.com',
contact_phone: '<string>'
}
})
};
fetch('https://statusstack.com/api/v1/stacks/{stack_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://statusstack.com/api/v1/stacks/{stack_id}"
payload = {
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"password": "<string>",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"custom_logo_url": "<string>",
"theme": "auto",
"layout": "grid",
"refresh_interval": 30,
"metadata": {},
"settings": {
"contact_url": "<string>",
"contact_email": "jsmith@example.com",
"contact_phone": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"stack_type": "application",
"visibility": "public",
"public_url": "<string>",
"theme": "auto",
"layout": "grid",
"custom_logo_url": "<string>",
"refresh_interval": 30,
"show_timestamps": true,
"show_component_names": true,
"show_incident_history": true,
"incident_history_days": 123,
"metadata": {},
"settings": {},
"view_count": 123,
"subscriber_count": 123,
"health_percentage": 123,
"sources_count": 123,
"components_count": 123,
"active_subscribers_count": 123,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_stack_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"team": {},
"parent_stack": "<unknown>",
"child_stacks": "<array>",
"sources": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"type": "salesforce",
"url": "<string>",
"components": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latest_status": "operational",
"description": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"components": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latest_status": "operational",
"description": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"links": {
"self": "<string>",
"public": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"errors": {}
}Authorizations
StatusStack authenticates requests with API keys, created via the dashboard with granular permissions (read, write, delete, admin, *).
API keys support version compatibility:
- v1 keys: Can only access v1 endpoints
- v2 keys: Can access both v1 and v2 endpoints
Available permissions:
read: View resources (GET requests)write: Create and update resources (POST, PUT requests)delete: Delete resources (DELETE requests)admin: Administrative access to all resources*: Wildcard permission (all actions allowed)
Path Parameters
Body
Every field is optional, and omitting one leaves it unchanged. The fields that are
absent from this schema but present on create (sources, components) are not
accepted here — attach and detach through the subresource endpoints instead.
255Not nullable on update; omit the key to leave the slug unchanged.
2551000status_page is accepted only when it is already this stack's type. Every other
value must be one of StackTypeSelectable.
application, tech, business, custom, status_page Who may view the stack's public page. password requires a password on the
create/update request.
public, private, password, unlisted Access password for a password-visibility stack.
8 - 255Must belong to the same team, and may not be the stack itself.
500Not nullable on update. Omit the key to leave it unchanged.
auto, light, dark Not nullable on update. Omit the key to leave it unchanged.
grid, list, compact Not nullable on update. Omit the key to leave it unchanged.
10 <= x <= 300Free-form stack settings. The public status page contact methods are validated keys; anything else is passed through.
Show child attributes
Show child attributes
Response
Stack updated
What the stack groups together, as stored. status_page is legacy: it is never
selectable on create, and on update it is accepted only when it is already the
stack's current type.
application, tech, business, custom, status_page Who may view the stack's public page. password requires a password on the
create/update request.
public, private, password, unlisted Colour scheme of the public page. auto follows the viewer's system preference.
auto, light, dark How components are arranged on the public page.
grid, list, compact How often the public page auto-refreshes, in seconds.
10 <= x <= 300Only present on responses that computed it, such as /v1/stacks/{stack_id}/health.
Present on list responses and on create/update, which load counts rather than full relationships.
The owning team. Included only for a viewer who may update the stack, so an unauthorised viewer never sees it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?

