MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can generate an API token in your dashboard under API Tokens. Pass it as Authorization: Bearer YOUR_TOKEN and set the X-Tenant-Id header to scope requests to a workspace.

Endpoints

Get the current statuspage details.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/statuspage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/statuspage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update the statuspage settings.

requires authentication

Example request:
curl --request PATCH \
    "https://statuswerk.eu/api/v1/statuspage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"timezone\": \"Asia\\/Ulaanbaatar\",
    \"language\": \"gzmiyv\",
    \"is_public\": false,
    \"allow_subscriptions\": true,
    \"show_uptime\": false,
    \"uptime_days_to_show\": 1,
    \"allow_email_subscribers\": false,
    \"allow_sms_subscribers\": false,
    \"allow_webhook_subscribers\": true,
    \"allow_rss_subscribers\": true,
    \"meta_title\": \"l\",
    \"meta_description\": \"j\"
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "timezone": "Asia\/Ulaanbaatar",
    "language": "gzmiyv",
    "is_public": false,
    "allow_subscriptions": true,
    "show_uptime": false,
    "uptime_days_to_show": 1,
    "allow_email_subscribers": false,
    "allow_sms_subscribers": false,
    "allow_webhook_subscribers": true,
    "allow_rss_subscribers": true,
    "meta_title": "l",
    "meta_description": "j"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/v1/statuspage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

timezone   string  optional    

Must be a valid time zone, such as Africa/Accra. Example: Asia/Ulaanbaatar

language   string  optional    

value darf nicht mehr als 10 Zeichen haben. Example: gzmiyv

is_public   boolean  optional    

Example: false

allow_subscriptions   boolean  optional    

Example: true

show_uptime   boolean  optional    

Example: false

uptime_days_to_show   integer  optional    

value muss mindestens 1 sein. value darf nicht grâßer als 365 sein. Example: 1

allow_email_subscribers   boolean  optional    

Example: false

allow_sms_subscribers   boolean  optional    

Example: false

allow_webhook_subscribers   boolean  optional    

Example: true

allow_rss_subscribers   boolean  optional    

Example: true

meta_title   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: l

meta_description   string  optional    

value darf nicht mehr als 500 Zeichen haben. Example: j

Get overall status summary (useful for CI/CD checks).

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/statuspage/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspage/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/statuspage/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

List all components.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/components" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/components"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/components

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new component.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/components" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"group_id\": \"5707ca55-f609-3528-be8b-1baeaee1567e\",
    \"status\": \"partial_outage\",
    \"position\": 9,
    \"show_uptime\": false,
    \"uptime_start_date\": \"2026-09-10T11:02:16\",
    \"visible\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/components"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "group_id": "5707ca55-f609-3528-be8b-1baeaee1567e",
    "status": "partial_outage",
    "position": 9,
    "show_uptime": false,
    "uptime_start_date": "2026-09-10T11:02:16",
    "visible": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/components

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

description   string  optional    

value darf nicht mehr als 1000 Zeichen haben. Example: Et animi quos velit et fugiat.

group_id   string  optional    

value muss eine gΓΌltige UUID sein. Example: 5707ca55-f609-3528-be8b-1baeaee1567e

status   string  optional    

Example: partial_outage

Must be one of:
  • operational
  • degraded_performance
  • partial_outage
  • major_outage
  • maintenance
position   integer  optional    

value muss mindestens 0 sein. Example: 9

show_uptime   boolean  optional    

Example: false

uptime_start_date   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

visible   boolean  optional    

Example: true

Get a specific component.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/components/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/components/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/components/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component. Example: architecto

Update a component.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/components/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"group_id\": \"5707ca55-f609-3528-be8b-1baeaee1567e\",
    \"status\": \"partial_outage\",
    \"position\": 9,
    \"show_uptime\": false,
    \"uptime_start_date\": \"2026-09-10T11:02:16\",
    \"visible\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/components/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "group_id": "5707ca55-f609-3528-be8b-1baeaee1567e",
    "status": "partial_outage",
    "position": 9,
    "show_uptime": false,
    "uptime_start_date": "2026-09-10T11:02:16",
    "visible": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/components/{id}

PATCH api/v1/components/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component. Example: architecto

Body Parameters

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

description   string  optional    

value darf nicht mehr als 1000 Zeichen haben. Example: Et animi quos velit et fugiat.

group_id   string  optional    

value muss eine gΓΌltige UUID sein. Example: 5707ca55-f609-3528-be8b-1baeaee1567e

status   string  optional    

Example: partial_outage

Must be one of:
  • operational
  • degraded_performance
  • partial_outage
  • major_outage
  • maintenance
position   integer  optional    

value muss mindestens 0 sein. Example: 9

show_uptime   boolean  optional    

Example: false

uptime_start_date   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

visible   boolean  optional    

Example: true

Delete a component.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/components/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/components/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/components/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component. Example: architecto

Update component status (CI/CD-friendly endpoint).

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/components/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"major_outage\"
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/components/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "major_outage"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/components/{component}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

component   string     

The component. Example: architecto

Body Parameters

status   string     

Example: major_outage

Must be one of:
  • operational
  • degraded_performance
  • partial_outage
  • major_outage
  • maintenance

Reorder components.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/components/reorder" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"components\": [
        {
            \"id\": \"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",
            \"position\": 84
        }
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/components/reorder"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "components": [
        {
            "id": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
            "position": 84
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/components/reorder

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

components   object[]     
id   string     

value muss eine gΓΌltige UUID sein. Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

position   integer     

value muss mindestens 0 sein. Example: 84

List all component groups.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/component-groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/component-groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/component-groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new component group.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/component-groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"position\": 42,
    \"collapsed_by_default\": true,
    \"visible\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/component-groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "position": 42,
    "collapsed_by_default": true,
    "visible": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/component-groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

description   string  optional    

value darf nicht mehr als 1000 Zeichen haben. Example: Et animi quos velit et fugiat.

position   integer  optional    

value muss mindestens 0 sein. Example: 42

collapsed_by_default   boolean  optional    

Example: true

visible   boolean  optional    

Example: true

Get a specific component group.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/component-groups/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/component-groups/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/component-groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component group. Example: architecto

Update a component group.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/component-groups/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"position\": 42,
    \"collapsed_by_default\": false,
    \"visible\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/component-groups/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "position": 42,
    "collapsed_by_default": false,
    "visible": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/component-groups/{id}

PATCH api/v1/component-groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component group. Example: architecto

Body Parameters

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

description   string  optional    

value darf nicht mehr als 1000 Zeichen haben. Example: Et animi quos velit et fugiat.

position   integer  optional    

value muss mindestens 0 sein. Example: 42

collapsed_by_default   boolean  optional    

Example: false

visible   boolean  optional    

Example: true

Delete a component group.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/component-groups/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/component-groups/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/component-groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the component group. Example: architecto

List all incidents.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/incidents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/incidents

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new incident.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/incidents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"message\": \"n\",
    \"status\": \"resolved\",
    \"severity\": \"major\",
    \"impact\": \"g\",
    \"visible\": true,
    \"stickied\": true,
    \"notify_subscribers\": false,
    \"occurred_at\": \"2026-09-10T11:02:16\",
    \"components\": [
        {
            \"id\": \"c90237e9-ced5-3af6-88ea-84aeaa148878\",
            \"status\": \"degraded_performance\"
        }
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "message": "n",
    "status": "resolved",
    "severity": "major",
    "impact": "g",
    "visible": true,
    "stickied": true,
    "notify_subscribers": false,
    "occurred_at": "2026-09-10T11:02:16",
    "components": [
        {
            "id": "c90237e9-ced5-3af6-88ea-84aeaa148878",
            "status": "degraded_performance"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/incidents

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

message   string     

value darf nicht mehr als 10000 Zeichen haben. Example: n

status   string  optional    

Example: resolved

Must be one of:
  • investigating
  • identified
  • monitoring
  • resolved
severity   string  optional    

Example: major

Must be one of:
  • minor
  • major
  • critical
impact   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: g

visible   boolean  optional    

Example: true

stickied   boolean  optional    

Example: true

notify_subscribers   boolean  optional    

Example: false

occurred_at   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

components   object[]  optional    
id   string     

value muss eine gΓΌltige UUID sein. Example: c90237e9-ced5-3af6-88ea-84aeaa148878

status   string  optional    

Example: degraded_performance

Must be one of:
  • operational
  • degraded_performance
  • partial_outage
  • major_outage
  • maintenance

Get a specific incident.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/incidents/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/incidents/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident. Example: architecto

Update an incident.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/incidents/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"message\": \"n\",
    \"status\": \"investigating\",
    \"severity\": \"major\",
    \"impact\": \"g\",
    \"visible\": true,
    \"stickied\": false,
    \"notify_subscribers\": true,
    \"components\": [
        {
            \"id\": \"c90237e9-ced5-3af6-88ea-84aeaa148878\",
            \"status\": \"operational\"
        }
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "message": "n",
    "status": "investigating",
    "severity": "major",
    "impact": "g",
    "visible": true,
    "stickied": false,
    "notify_subscribers": true,
    "components": [
        {
            "id": "c90237e9-ced5-3af6-88ea-84aeaa148878",
            "status": "operational"
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/incidents/{id}

PATCH api/v1/incidents/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident. Example: architecto

Body Parameters

title   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

message   string  optional    

value darf nicht mehr als 10000 Zeichen haben. Example: n

status   string  optional    

Example: investigating

Must be one of:
  • investigating
  • identified
  • monitoring
  • resolved
severity   string  optional    

Example: major

Must be one of:
  • minor
  • major
  • critical
impact   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: g

visible   boolean  optional    

Example: true

stickied   boolean  optional    

Example: false

notify_subscribers   boolean  optional    

Example: true

components   object[]  optional    
id   string     

value muss eine gΓΌltige UUID sein. Example: c90237e9-ced5-3af6-88ea-84aeaa148878

status   string  optional    

Example: operational

Must be one of:
  • operational
  • degraded_performance
  • partial_outage
  • major_outage
  • maintenance

Delete an incident.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/incidents/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/incidents/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident. Example: architecto

List all updates for an incident.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/incidents/architecto/updates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto/updates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/incidents/{incident_id}/updates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

incident_id   string     

The ID of the incident. Example: architecto

Create a new incident update.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/incidents/architecto/updates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"identified\",
    \"message\": \"b\",
    \"notify_subscribers\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto/updates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "identified",
    "message": "b",
    "notify_subscribers": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/incidents/{incident_id}/updates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

incident_id   string     

The ID of the incident. Example: architecto

Body Parameters

status   string     

Example: identified

Must be one of:
  • investigating
  • identified
  • monitoring
  • resolved
message   string     

value darf nicht mehr als 10000 Zeichen haben. Example: b

notify_subscribers   boolean  optional    

Example: true

Resolve an incident (CI/CD-friendly endpoint).

requires authentication

Example request:
curl --request PATCH \
    "https://statuswerk.eu/api/v1/incidents/architecto/resolve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message\": \"b\",
    \"notify_subscribers\": false
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incidents/architecto/resolve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message": "b",
    "notify_subscribers": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/v1/incidents/{incident}/resolve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

incident   string     

The incident. Example: architecto

Body Parameters

message   string  optional    

value darf nicht mehr als 10000 Zeichen haben. Example: b

notify_subscribers   boolean  optional    

Example: false

List all incident templates.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/incident-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/incident-templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new incident template.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/incident-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"title_template\": \"n\",
    \"message_template\": \"g\",
    \"default_status\": \"monitoring\",
    \"default_severity\": \"minor\",
    \"visible\": false,
    \"stickied\": false,
    \"notify_subscribers\": false,
    \"default_component_ids\": [
        \"c90237e9-ced5-3af6-88ea-84aeaa148878\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "title_template": "n",
    "message_template": "g",
    "default_status": "monitoring",
    "default_severity": "minor",
    "visible": false,
    "stickied": false,
    "notify_subscribers": false,
    "default_component_ids": [
        "c90237e9-ced5-3af6-88ea-84aeaa148878"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/incident-templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

title_template   string     

value darf nicht mehr als 255 Zeichen haben. Example: n

message_template   string     

value darf nicht mehr als 10000 Zeichen haben. Example: g

default_status   string  optional    

Example: monitoring

Must be one of:
  • investigating
  • identified
  • monitoring
  • resolved
default_severity   string  optional    

Example: minor

Must be one of:
  • minor
  • major
  • critical
visible   boolean  optional    

Example: false

stickied   boolean  optional    

Example: false

notify_subscribers   boolean  optional    

Example: false

default_component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Get a specific incident template.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/incident-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/incident-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident template. Example: architecto

Update an incident template.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/incident-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"title_template\": \"n\",
    \"message_template\": \"g\",
    \"default_status\": \"identified\",
    \"default_severity\": \"minor\",
    \"visible\": false,
    \"stickied\": true,
    \"notify_subscribers\": true,
    \"default_component_ids\": [
        \"c90237e9-ced5-3af6-88ea-84aeaa148878\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "title_template": "n",
    "message_template": "g",
    "default_status": "identified",
    "default_severity": "minor",
    "visible": false,
    "stickied": true,
    "notify_subscribers": true,
    "default_component_ids": [
        "c90237e9-ced5-3af6-88ea-84aeaa148878"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/incident-templates/{id}

PATCH api/v1/incident-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident template. Example: architecto

Body Parameters

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

title_template   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: n

message_template   string  optional    

value darf nicht mehr als 10000 Zeichen haben. Example: g

default_status   string  optional    

Example: identified

Must be one of:
  • investigating
  • identified
  • monitoring
  • resolved
default_severity   string  optional    

Example: minor

Must be one of:
  • minor
  • major
  • critical
visible   boolean  optional    

Example: false

stickied   boolean  optional    

Example: true

notify_subscribers   boolean  optional    

Example: true

default_component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Delete an incident template.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/incident-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/incident-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the incident template. Example: architecto

Open an incident from this template.

requires authentication

The endpoint CI/CD and alerting hooks use: name the template, optionally pass variables for the placeholders, and every other field comes from the template.

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/incident-templates/architecto/apply" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"occurred_at\": \"2026-09-10T11:02:16\",
    \"variables\": [
        \"b\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/incident-templates/architecto/apply"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "occurred_at": "2026-09-10T11:02:16",
    "variables": [
        "b"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/incident-templates/{incident_template}/apply

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

incident_template   string     

Example: architecto

Body Parameters

occurred_at   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

variables   string[]  optional    

value darf nicht mehr als 255 Zeichen haben.

List all scheduled maintenances.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/maintenances" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/maintenances

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new scheduled maintenance.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/maintenances" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"message\": \"n\",
    \"scheduled_start_at\": \"2052-10-03\",
    \"scheduled_end_at\": \"2052-10-03\",
    \"auto_start\": true,
    \"auto_complete\": true,
    \"notify_subscribers\": true,
    \"notify_at_scheduled\": false,
    \"send_reminder_1h\": false,
    \"notify_at_start\": true,
    \"notify_at_end\": false,
    \"update_component_status\": false,
    \"component_ids\": [
        \"a4855dc5-0acb-33c3-b921-f4291f719ca0\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "message": "n",
    "scheduled_start_at": "2052-10-03",
    "scheduled_end_at": "2052-10-03",
    "auto_start": true,
    "auto_complete": true,
    "notify_subscribers": true,
    "notify_at_scheduled": false,
    "send_reminder_1h": false,
    "notify_at_start": true,
    "notify_at_end": false,
    "update_component_status": false,
    "component_ids": [
        "a4855dc5-0acb-33c3-b921-f4291f719ca0"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/maintenances

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

message   string     

value darf nicht mehr als 10000 Zeichen haben. Example: n

scheduled_start_at   string     

value muss ein gΓΌltiges Datum sein. value muss ein Datum nach now sein. Example: 2052-10-03

scheduled_end_at   string     

value muss ein gΓΌltiges Datum sein. value muss ein Datum nach scheduled_start_at sein. Example: 2052-10-03

auto_start   boolean  optional    

Example: true

auto_complete   boolean  optional    

Example: true

notify_subscribers   boolean  optional    

Example: true

notify_at_scheduled   boolean  optional    

Example: false

send_reminder_1h   boolean  optional    

Example: false

notify_at_start   boolean  optional    

Example: true

notify_at_end   boolean  optional    

Example: false

update_component_status   boolean  optional    

Example: false

component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Get a specific maintenance.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/maintenances/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/maintenances/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance. Example: architecto

Update a maintenance.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/maintenances/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"message\": \"n\",
    \"scheduled_start_at\": \"2026-09-10T11:02:16\",
    \"scheduled_end_at\": \"2052-10-03\",
    \"auto_start\": true,
    \"auto_complete\": true,
    \"notify_subscribers\": false,
    \"notify_at_scheduled\": false,
    \"send_reminder_1h\": false,
    \"notify_at_start\": false,
    \"notify_at_end\": false,
    \"update_component_status\": false,
    \"component_ids\": [
        \"a4855dc5-0acb-33c3-b921-f4291f719ca0\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "message": "n",
    "scheduled_start_at": "2026-09-10T11:02:16",
    "scheduled_end_at": "2052-10-03",
    "auto_start": true,
    "auto_complete": true,
    "notify_subscribers": false,
    "notify_at_scheduled": false,
    "send_reminder_1h": false,
    "notify_at_start": false,
    "notify_at_end": false,
    "update_component_status": false,
    "component_ids": [
        "a4855dc5-0acb-33c3-b921-f4291f719ca0"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/maintenances/{id}

PATCH api/v1/maintenances/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance. Example: architecto

Body Parameters

title   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

message   string  optional    

value darf nicht mehr als 10000 Zeichen haben. Example: n

scheduled_start_at   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

scheduled_end_at   string  optional    

value muss ein gΓΌltiges Datum sein. value muss ein Datum nach scheduled_start_at sein. Example: 2052-10-03

auto_start   boolean  optional    

Example: true

auto_complete   boolean  optional    

Example: true

notify_subscribers   boolean  optional    

Example: false

notify_at_scheduled   boolean  optional    

Example: false

send_reminder_1h   boolean  optional    

Example: false

notify_at_start   boolean  optional    

Example: false

notify_at_end   boolean  optional    

Example: false

update_component_status   boolean  optional    

Example: false

component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Delete a maintenance.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/maintenances/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/maintenances/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance. Example: architecto

Start a maintenance (CI/CD-friendly endpoint).

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/maintenances/architecto/start" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances/architecto/start"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/maintenances/{maintenance}/start

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

maintenance   string     

The maintenance. Example: architecto

Complete a maintenance (CI/CD-friendly endpoint).

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/maintenances/architecto/complete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenances/architecto/complete"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/maintenances/{maintenance}/complete

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

maintenance   string     

The maintenance. Example: architecto

List all maintenance templates.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/maintenance-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/maintenance-templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new maintenance template.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/maintenance-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"title_template\": \"n\",
    \"message_template\": \"g\",
    \"default_duration_minutes\": 16,
    \"notify_subscribers\": true,
    \"send_reminder_1h\": true,
    \"auto_start\": false,
    \"notify_at_start\": false,
    \"auto_complete\": false,
    \"notify_at_end\": false,
    \"update_component_status\": false,
    \"default_component_ids\": [
        \"977e5426-8d13-3824-86aa-b092f8ae52c5\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "title_template": "n",
    "message_template": "g",
    "default_duration_minutes": 16,
    "notify_subscribers": true,
    "send_reminder_1h": true,
    "auto_start": false,
    "notify_at_start": false,
    "auto_complete": false,
    "notify_at_end": false,
    "update_component_status": false,
    "default_component_ids": [
        "977e5426-8d13-3824-86aa-b092f8ae52c5"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/maintenance-templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

title_template   string     

value darf nicht mehr als 255 Zeichen haben. Example: n

message_template   string     

value darf nicht mehr als 10000 Zeichen haben. Example: g

default_duration_minutes   integer  optional    

value muss mindestens 1 sein. value darf nicht grâßer als 43200 sein. Example: 16

notify_subscribers   boolean  optional    

Example: true

send_reminder_1h   boolean  optional    

Example: true

auto_start   boolean  optional    

Example: false

notify_at_start   boolean  optional    

Example: false

auto_complete   boolean  optional    

Example: false

notify_at_end   boolean  optional    

Example: false

update_component_status   boolean  optional    

Example: false

default_component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Get a specific maintenance template.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/maintenance-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/maintenance-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance template. Example: architecto

Update a maintenance template.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"title_template\": \"n\",
    \"message_template\": \"g\",
    \"default_duration_minutes\": 16,
    \"notify_subscribers\": false,
    \"send_reminder_1h\": false,
    \"auto_start\": true,
    \"notify_at_start\": false,
    \"auto_complete\": true,
    \"notify_at_end\": true,
    \"update_component_status\": true,
    \"default_component_ids\": [
        \"977e5426-8d13-3824-86aa-b092f8ae52c5\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "title_template": "n",
    "message_template": "g",
    "default_duration_minutes": 16,
    "notify_subscribers": false,
    "send_reminder_1h": false,
    "auto_start": true,
    "notify_at_start": false,
    "auto_complete": true,
    "notify_at_end": true,
    "update_component_status": true,
    "default_component_ids": [
        "977e5426-8d13-3824-86aa-b092f8ae52c5"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/maintenance-templates/{id}

PATCH api/v1/maintenance-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance template. Example: architecto

Body Parameters

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

title_template   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: n

message_template   string  optional    

value darf nicht mehr als 10000 Zeichen haben. Example: g

default_duration_minutes   integer  optional    

value muss mindestens 1 sein. value darf nicht grâßer als 43200 sein. Example: 16

notify_subscribers   boolean  optional    

Example: false

send_reminder_1h   boolean  optional    

Example: false

auto_start   boolean  optional    

Example: true

notify_at_start   boolean  optional    

Example: false

auto_complete   boolean  optional    

Example: true

notify_at_end   boolean  optional    

Example: true

update_component_status   boolean  optional    

Example: true

default_component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

Delete a maintenance template.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/maintenance-templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the maintenance template. Example: architecto

Create a scheduled maintenance from this template.

requires authentication

This is the endpoint CI/CD and schedulers use: pick the template, give it a start time, and every other field comes from the template.

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto/apply" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"scheduled_start_at\": \"2026-09-10T11:02:16\",
    \"scheduled_end_at\": \"2052-10-03\",
    \"variables\": [
        \"n\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/maintenance-templates/architecto/apply"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "scheduled_start_at": "2026-09-10T11:02:16",
    "scheduled_end_at": "2052-10-03",
    "variables": [
        "n"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/maintenance-templates/{maintenance_template}/apply

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

maintenance_template   string     

Example: architecto

Body Parameters

scheduled_start_at   string     

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

scheduled_end_at   string  optional    

value muss ein gΓΌltiges Datum sein. value muss ein Datum nach scheduled_start_at sein. Example: 2052-10-03

variables   string[]  optional    

value darf nicht mehr als 255 Zeichen haben.

GET api/v1/metrics

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/metrics

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"key\": \"b\",
    \"name\": \"n\",
    \"suffix\": \"gzmiyvdljnikhway\",
    \"decimals\": 1,
    \"aggregation\": \"avg\",
    \"description\": \"Omnis nostrum aut adipisci quidem nostrum qui commodi.\",
    \"visible\": false,
    \"position\": 3,
    \"y_axis_min\": 4326.41688,
    \"y_axis_max\": 4326.41688
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "key": "b",
    "name": "n",
    "suffix": "gzmiyvdljnikhway",
    "decimals": 1,
    "aggregation": "avg",
    "description": "Omnis nostrum aut adipisci quidem nostrum qui commodi.",
    "visible": false,
    "position": 3,
    "y_axis_min": 4326.41688,
    "y_axis_max": 4326.41688
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

key   string     

Must match the regex /^[a-z0-9][a-z0-9_.-]*$/. value darf nicht mehr als 64 Zeichen haben. Example: b

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: n

suffix   string  optional    

value darf nicht mehr als 16 Zeichen haben. Example: gzmiyvdljnikhway

decimals   integer  optional    

value muss mindestens 0 sein. value darf nicht grâßer als 6 sein. Example: 1

aggregation   string  optional    

Example: avg

Must be one of:
  • avg
  • sum
  • min
  • max
  • last
description   string  optional    

value darf nicht mehr als 2000 Zeichen haben. Example: Omnis nostrum aut adipisci quidem nostrum qui commodi.

visible   boolean  optional    

Example: false

position   integer  optional    

value muss mindestens 0 sein. Example: 3

y_axis_min   number  optional    

Example: 4326.41688

y_axis_max   number  optional    

Example: 4326.41688

GET api/v1/metrics/{metricKey}

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/metrics/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/metrics/{metricKey}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

metricKey   string     

Example: architecto

PUT api/v1/metrics/{metricKey}

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/metrics/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"key\": \"b\",
    \"name\": \"n\",
    \"suffix\": \"gzmiyvdljnikhway\",
    \"decimals\": 1,
    \"aggregation\": \"min\",
    \"description\": \"Omnis nostrum aut adipisci quidem nostrum qui commodi.\",
    \"visible\": false,
    \"position\": 3,
    \"y_axis_min\": 4326.41688,
    \"y_axis_max\": 4326.41688
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "key": "b",
    "name": "n",
    "suffix": "gzmiyvdljnikhway",
    "decimals": 1,
    "aggregation": "min",
    "description": "Omnis nostrum aut adipisci quidem nostrum qui commodi.",
    "visible": false,
    "position": 3,
    "y_axis_min": 4326.41688,
    "y_axis_max": 4326.41688
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/metrics/{metricKey}

PATCH api/v1/metrics/{metricKey}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

metricKey   string     

Example: architecto

Body Parameters

key   string  optional    

Must match the regex /^[a-z0-9][a-z0-9_.-]*$/. value darf nicht mehr als 64 Zeichen haben. Example: b

name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: n

suffix   string  optional    

value darf nicht mehr als 16 Zeichen haben. Example: gzmiyvdljnikhway

decimals   integer  optional    

value muss mindestens 0 sein. value darf nicht grâßer als 6 sein. Example: 1

aggregation   string  optional    

Example: min

Must be one of:
  • avg
  • sum
  • min
  • max
  • last
description   string  optional    

value darf nicht mehr als 2000 Zeichen haben. Example: Omnis nostrum aut adipisci quidem nostrum qui commodi.

visible   boolean  optional    

Example: false

position   integer  optional    

value muss mindestens 0 sein. Example: 3

y_axis_min   number  optional    

Example: 4326.41688

y_axis_max   number  optional    

Example: 4326.41688

DELETE api/v1/metrics/{metricKey}

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/metrics/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/metrics/{metricKey}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

metricKey   string     

Example: architecto

Push one point or a batch.

requires authentication

Idempotent: points are bucketed on write, so a client retrying a failed request overwrites rather than duplicates.

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/metrics/architecto/points" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"points\": [
        {
            \"value\": 4326.41688,
            \"timestamp\": \"2026-09-10T11:02:16\"
        }
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics/architecto/points"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "points": [
        {
            "value": 4326.41688,
            "timestamp": "2026-09-10T11:02:16"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/metrics/{metricKey}/points

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

metricKey   string     

Example: architecto

Body Parameters

points   object[]     

value muss mindestens 1 Elemente haben. value darf nicht mehr als 5000 Elemente haben.

value   number     

Example: 4326.41688

timestamp   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

Read points back, for the customer's own dashboards or to verify an import.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/metrics/architecto/points" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from\": \"2026-09-10T11:02:16\",
    \"to\": \"2026-09-10T11:02:16\",
    \"resolution\": 16
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/metrics/architecto/points"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "from": "2026-09-10T11:02:16",
    "to": "2026-09-10T11:02:16",
    "resolution": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/metrics/{metricKey}/points

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

metricKey   string     

Example: architecto

Body Parameters

from   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

to   string  optional    

value muss ein gΓΌltiges Datum sein. Example: 2026-09-10T11:02:16

resolution   integer  optional    

Example: 16

List all subscribers.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/subscribers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/subscribers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/subscribers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new subscriber.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/subscribers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"phone\": \"m\",
    \"webhook_url\": \"https:\\/\\/www.gulgowski.com\\/nihil-accusantium-harum-mollitia-modi-deserunt\",
    \"webhook_type\": \"generic\",
    \"webhook_secret\": \"w\",
    \"channels\": [
        \"sms\"
    ],
    \"component_ids\": [
        \"3c85cf54-98c1-36ed-b65a-abaafdecdfa9\"
    ],
    \"locale\": \"es_MX\",
    \"skip_verification\": true
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/subscribers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "phone": "m",
    "webhook_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
    "webhook_type": "generic",
    "webhook_secret": "w",
    "channels": [
        "sms"
    ],
    "component_ids": [
        "3c85cf54-98c1-36ed-b65a-abaafdecdfa9"
    ],
    "locale": "es_MX",
    "skip_verification": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/subscribers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string  optional    

This field is required when none of phone and webhook_url are present. value muss eine gΓΌltige E-Mail-Adresse sein. value darf nicht mehr als 255 Zeichen haben. Example: gbailey@example.net

phone   string  optional    

This field is required when none of email and webhook_url are present. value darf nicht mehr als 50 Zeichen haben. Example: m

webhook_url   string  optional    

This field is required when none of email and phone are present. Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

webhook_type   string  optional    

This field is required when webhook_url is present. Example: generic

Must be one of:
  • generic
  • slack
  • microsoft_teams
  • discord
  • google_chat
webhook_secret   string  optional    

value darf nicht mehr als 64 Zeichen haben. Example: w

channels   string[]  optional    
Must be one of:
  • email
  • sms
  • webhook
component_ids   string[]  optional    

value muss eine gΓΌltige UUID sein.

locale   string  optional    

value darf nicht mehr als 10 Zeichen haben. Example: es_MX

skip_verification   boolean  optional    

Example: true

Get a specific subscriber.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/subscribers/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/subscribers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/subscribers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the subscriber. Example: architecto

Delete a subscriber.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/subscribers/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/subscribers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/subscribers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the subscriber. Example: architecto

Resend verification email.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/subscribers/architecto/resend-verification" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/subscribers/architecto/resend-verification"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/subscribers/{subscriber}/resend-verification

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

subscriber   string     

The subscriber. Example: architecto

List all integrations for the current statuspage.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/integrations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/integrations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new integration.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/integrations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"discord\",
    \"name\": \"b\",
    \"url\": \"http:\\/\\/bailey.com\\/\",
    \"is_enabled\": true,
    \"events\": [
        \"incident.resolved\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "discord",
    "name": "b",
    "url": "http:\/\/bailey.com\/",
    "is_enabled": true,
    "events": [
        "incident.resolved"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/integrations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string     

Example: discord

Must be one of:
  • generic
  • slack
  • microsoft_teams
  • discord
  • google_chat
name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

url   string     

Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben. Example: http://bailey.com/

is_enabled   boolean  optional    

Example: true

events   string[]  optional    
Must be one of:
  • incident.created
  • incident.updated
  • incident.resolved
  • maintenance.scheduled
  • maintenance.started
  • maintenance.completed

Get a specific integration.

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/integrations/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the integration. Example: architecto

Update an integration.

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/integrations/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"slack\",
    \"name\": \"b\",
    \"url\": \"http:\\/\\/bailey.com\\/\",
    \"is_enabled\": true,
    \"events\": [
        \"incident.created\"
    ]
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "slack",
    "name": "b",
    "url": "http:\/\/bailey.com\/",
    "is_enabled": true,
    "events": [
        "incident.created"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/integrations/{id}

PATCH api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the integration. Example: architecto

Body Parameters

type   string  optional    

Example: slack

Must be one of:
  • generic
  • slack
  • microsoft_teams
  • discord
  • google_chat
name   string  optional    

value darf nicht mehr als 255 Zeichen haben. Example: b

url   string  optional    

Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben. Example: http://bailey.com/

is_enabled   boolean  optional    

Example: true

events   string[]  optional    
Must be one of:
  • incident.created
  • incident.updated
  • incident.resolved
  • maintenance.scheduled
  • maintenance.started
  • maintenance.completed

Delete an integration.

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/integrations/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the integration. Example: architecto

Send a test webhook to an integration.

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/integrations/architecto/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/integrations/architecto/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/integrations/{integration}/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

integration   string     

The integration. Example: architecto

GET api/v1/statuspages

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/statuspages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/statuspages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/statuspages

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/statuspages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"subdomain\": \"n\",
    \"timezone\": \"Antarctica\\/Rothera\",
    \"language\": \"zmiyvd\"
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "subdomain": "n",
    "timezone": "Antarctica\/Rothera",
    "language": "zmiyvd"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/statuspages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

value darf nicht mehr als 255 Zeichen haben. Example: b

subdomain   string  optional    

Must match the regex /^a-z0-9?$/. value darf nicht mehr als 63 Zeichen haben. Example: n

timezone   string  optional    

Must be a valid time zone, such as Africa/Accra. Example: Antarctica/Rothera

language   string  optional    

value darf nicht mehr als 10 Zeichen haben. Example: zmiyvd

GET api/v1/statuspages/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/statuspages/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/statuspages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the statuspage. Example: architecto

DELETE api/v1/statuspages/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/statuspages/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/statuspages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the statuspage. Example: architecto

GET api/v1/statuspages/{statuspage_id}/custom-domain

requires authentication

Example request:
curl --request GET \
    --get "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/statuspages/{statuspage_id}/custom-domain

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

statuspage_id   string     

The ID of the statuspage. Example: architecto

PUT api/v1/statuspages/{statuspage_id}/custom-domain

requires authentication

Example request:
curl --request PUT \
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain\": \"b\"
}"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "domain": "b"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/statuspages/{statuspage_id}/custom-domain

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

statuspage_id   string     

The ID of the statuspage. Example: architecto

Body Parameters

domain   string     

Must match the regex /^(?!-)[A-Za-z0-9-]{1,63}(?:.[A-Za-z0-9-]{1,63})+$/. value darf nicht mehr als 255 Zeichen haben. Example: b

POST api/v1/statuspages/{statuspage}/custom-domain/verify

requires authentication

Example request:
curl --request POST \
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/statuspages/{statuspage}/custom-domain/verify

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

statuspage   string     

The statuspage. Example: architecto

DELETE api/v1/statuspages/{statuspage_id}/custom-domain

requires authentication

Example request:
curl --request DELETE \
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://statuswerk.eu/api/v1/statuspages/architecto/custom-domain"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/statuspages/{statuspage_id}/custom-domain

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

statuspage_id   string     

The ID of the statuspage. Example: architecto