AperioFlow Start free

Docs API reference

API: status pages and incidents

These endpoints exist only while status pages are switched on for AperioFlow. Admins and owners manage status pages and write incidents; what an incident says is public, so it must not hold personal data.

GET /api/incident-templates

Members. Starting texts for incident updates, the stages, the limits and the hint shown beside the editor.

Responses:

StatusMeaning
200The templates

POST /api/incidents

Admins. Write an incident for the status page of the components it affects. Public, so no personal data. Only when MONITORS=on.

Request body (application/json, required).

FieldTypeRequiredDescription
titlestringYesUp to 150 characters.
monitor_idsarray of integerYesUp to 50 items.
stagestringNoOne of: investigating, identified, monitoring, resolved. Default "investigating".
bodystringYesUp to 1000 characters.

Responses:

StatusMeaning
201{id}
400A limit is passed
403Not an admin

POST /api/incidents/{id}/updates

Admins. Add an update to an incident written by hand. "resolved" closes it; a later update reopens it.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Request body (application/json, required).

FieldTypeRequiredDescription
stagestringYesOne of: investigating, identified, monitoring, resolved.
bodystringYesUp to 1000 characters.

Responses:

StatusMeaning
201{id}
404Not found

DELETE /api/incidents/{id}/updates/{updateId}

Admins. Delete one update for good (it leaves the status page at once). The last update takes the incident with it.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes
updateIdpathintegerYes

Responses:

StatusMeaning
204Deleted
404Not found

DELETE /api/incidents/{id}

Admins. Delete an incident written by hand, with its updates, for good.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Responses:

StatusMeaning
204Deleted
404Not found

GET /api/status-pages

Members. The organisation's status pages, the plan's limit and the domain pages sit under. Only when STATUS_PAGES=on.

Responses:

StatusMeaning
200The pages

POST /api/status-pages

Admins. Make a status page (unpublished). The slug must pass the reserved-name and look-alike rules; it needs an owner with a verified email.

Request body (application/json, required).

FieldTypeRequiredDescription
slugstringYes3 to 40 lowercase letters, digits and single hyphens.
titlestringYesUp to 100 characters.
descriptionstring or nullNoUp to 500 characters.
project_idinteger or nullNoOne of the organisation's own projects, or null. Only groups the page in the app: the project is never shown on the public page.
componentsarray of objectNoUp to 50 items.

Responses:

StatusMeaning
201Created
400The slug is reserved
402The plan's page limit is reached
409No owner has a verified email address

GET /api/status-pages/check

Admins. Says whether a slug can be used (problem is null) or why not.

Parameters:

NameInTypeRequiredDescription
slugquerystringYes

Responses:

StatusMeaning
200{problem}

GET /api/status-pages/{id}/domain

Admins. The organisation custom domain for a status page (hostname, status pending/active/failed, the DNS records to add) and whether the plan allows one. Only when CUSTOM_DOMAINS=on.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Responses:

StatusMeaning
200The domain or null

PUT /api/status-pages/{id}/domain

Owners, Solo and Team. Add a custom domain; a Custom Hostname is made at Cloudflare and the DNS records to add are returned. One for each organisation.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Request body (application/json, required).

FieldTypeRequiredDescription
hostnamestringYesA sub-domain you control, for example status.example.com.

Responses:

StatusMeaning
200The domain with its records
400Not an acceptable name
402Not on the Free plan
409This organisation already has a custom domain

DELETE /api/status-pages/{id}/domain

Owners. Remove the custom domain; it stops being served at once and the Custom Hostname at Cloudflare is deleted (retried if that fails).

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Responses:

StatusMeaning
200The page without a domain
404No custom domain

GET /api/status-pages/{id}/subscribers

Admins. Counts by status and a page of masked addresses (50 at a time, offset). Needs email subscribers switched on for the server.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes
offsetqueryintegerNo

Responses:

StatusMeaning
200Counts and masked subscribers

Owners. Whether an exact address is subscribed (matched through a keyed hash).

Parameters:

NameInTypeRequiredDescription
idpathintegerYes
emailquerystringYes

Responses:

StatusMeaning
200{found, status, subscribed_at, confirmed_at}

GET /api/status-pages/{id}/subscribers/export

Owners. All subscriber addresses with status and times. Each export is logged with a count, never addresses.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Responses:

StatusMeaning
200The subscribers

DELETE /api/status-pages/{id}/subscribers/{subscriberId}

Admins. Delete one subscriber and their address.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes
subscriberIdpathintegerYes

Responses:

StatusMeaning
204Deleted
404Not found

PATCH /api/status-pages/{id}

Admins. Change the title, description, published flag, project link, slug (at most twice; the old one is held 90 days) or components. A component without a name uses the monitor's own name as its public name (a Coolify monitor must always be given one); each component in the answer says whether its public name is the same as the monitor's (uses_monitor_name).

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Request body (application/json, required).

FieldTypeRequiredDescription
titlestringNo
descriptionstring or nullNo
publishedbooleanNo
subscribers_enabledbooleanNoLet visitors subscribe by email.
search_listingbooleanNoLet search engines list the page. Off by default.
project_idinteger or nullNoOne of the organisation's own projects, or null. Only groups the page in the app: the project is never shown on the public page.
slugstringNo
componentsarray of valuesNo

Responses:

StatusMeaning
200Updated
404Not found

DELETE /api/status-pages/{id}

Admins. Delete a status page; its address stays reserved for 90 days.

Parameters:

NameInTypeRequiredDescription
idpathintegerYes

Responses:

StatusMeaning
204Deleted
404Not found

Start free All the docs Video guides

Built for the people who write the code and answer the phone when it breaks.

Run from the UK. Hosted in France.

UK time --:--

Already in?Open the app Start free today
View our policies