Skip to main content
POST
/
v1
/
status-pages
Create a new status page.
curl --request POST \
  --url https://api.checklyhq.com/v1/status-pages \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "url": "<string>",
  "cards": [
    {
      "name": "<string>",
      "id": "<string>",
      "statusPageId": "<string>",
      "services": [
        {
          "id": "<string>"
        }
      ]
    }
  ],
  "description": "<string>",
  "customDomain": "<string>",
  "themeColors": {
    "light": {
      "bodyBackgroundColor": "<string>",
      "headerBackgroundColor": "<string>",
      "headerFontColor": "<string>",
      "titleFontColor": "<string>",
      "bodyFontColor": "<string>",
      "bodyFontColorMuted": "<string>",
      "navigationFontColor": "<string>",
      "linkFontColor": "<string>",
      "cardBackgroundColor": "<string>",
      "borderColor": "<string>",
      "primaryButtonBackgroundColor": "<string>",
      "primaryButtonFontColor": "<string>"
    },
    "dark": {
      "bodyBackgroundColor": "<string>",
      "headerBackgroundColor": "<string>",
      "headerFontColor": "<string>",
      "titleFontColor": "<string>",
      "bodyFontColor": "<string>",
      "bodyFontColorMuted": "<string>",
      "navigationFontColor": "<string>",
      "linkFontColor": "<string>",
      "cardBackgroundColor": "<string>",
      "borderColor": "<string>",
      "primaryButtonBackgroundColor": "<string>",
      "primaryButtonFontColor": "<string>"
    }
  },
  "logo": "<string>",
  "redirectTo": "<string>",
  "favicon": "<string>",
  "defaultTheme": "AUTO"
}
'
import requests

url = "https://api.checklyhq.com/v1/status-pages"

payload = {
"name": "<string>",
"url": "<string>",
"cards": [
{
"name": "<string>",
"id": "<string>",
"statusPageId": "<string>",
"services": [{ "id": "<string>" }]
}
],
"description": "<string>",
"customDomain": "<string>",
"themeColors": {
"light": {
"bodyBackgroundColor": "<string>",
"headerBackgroundColor": "<string>",
"headerFontColor": "<string>",
"titleFontColor": "<string>",
"bodyFontColor": "<string>",
"bodyFontColorMuted": "<string>",
"navigationFontColor": "<string>",
"linkFontColor": "<string>",
"cardBackgroundColor": "<string>",
"borderColor": "<string>",
"primaryButtonBackgroundColor": "<string>",
"primaryButtonFontColor": "<string>"
},
"dark": {
"bodyBackgroundColor": "<string>",
"headerBackgroundColor": "<string>",
"headerFontColor": "<string>",
"titleFontColor": "<string>",
"bodyFontColor": "<string>",
"bodyFontColorMuted": "<string>",
"navigationFontColor": "<string>",
"linkFontColor": "<string>",
"cardBackgroundColor": "<string>",
"borderColor": "<string>",
"primaryButtonBackgroundColor": "<string>",
"primaryButtonFontColor": "<string>"
}
},
"logo": "<string>",
"redirectTo": "<string>",
"favicon": "<string>",
"defaultTheme": "AUTO"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
url: '<string>',
cards: [
{
name: '<string>',
id: '<string>',
statusPageId: '<string>',
services: [{id: '<string>'}]
}
],
description: '<string>',
customDomain: '<string>',
themeColors: {
light: {
bodyBackgroundColor: '<string>',
headerBackgroundColor: '<string>',
headerFontColor: '<string>',
titleFontColor: '<string>',
bodyFontColor: '<string>',
bodyFontColorMuted: '<string>',
navigationFontColor: '<string>',
linkFontColor: '<string>',
cardBackgroundColor: '<string>',
borderColor: '<string>',
primaryButtonBackgroundColor: '<string>',
primaryButtonFontColor: '<string>'
},
dark: {
bodyBackgroundColor: '<string>',
headerBackgroundColor: '<string>',
headerFontColor: '<string>',
titleFontColor: '<string>',
bodyFontColor: '<string>',
bodyFontColorMuted: '<string>',
navigationFontColor: '<string>',
linkFontColor: '<string>',
cardBackgroundColor: '<string>',
borderColor: '<string>',
primaryButtonBackgroundColor: '<string>',
primaryButtonFontColor: '<string>'
}
},
logo: '<string>',
redirectTo: '<string>',
favicon: '<string>',
defaultTheme: 'AUTO'
})
};

fetch('https://api.checklyhq.com/v1/status-pages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.checklyhq.com/v1/status-pages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'url' => '<string>',
'cards' => [
[
'name' => '<string>',
'id' => '<string>',
'statusPageId' => '<string>',
'services' => [
[
'id' => '<string>'
]
]
]
],
'description' => '<string>',
'customDomain' => '<string>',
'themeColors' => [
'light' => [
'bodyBackgroundColor' => '<string>',
'headerBackgroundColor' => '<string>',
'headerFontColor' => '<string>',
'titleFontColor' => '<string>',
'bodyFontColor' => '<string>',
'bodyFontColorMuted' => '<string>',
'navigationFontColor' => '<string>',
'linkFontColor' => '<string>',
'cardBackgroundColor' => '<string>',
'borderColor' => '<string>',
'primaryButtonBackgroundColor' => '<string>',
'primaryButtonFontColor' => '<string>'
],
'dark' => [
'bodyBackgroundColor' => '<string>',
'headerBackgroundColor' => '<string>',
'headerFontColor' => '<string>',
'titleFontColor' => '<string>',
'bodyFontColor' => '<string>',
'bodyFontColorMuted' => '<string>',
'navigationFontColor' => '<string>',
'linkFontColor' => '<string>',
'cardBackgroundColor' => '<string>',
'borderColor' => '<string>',
'primaryButtonBackgroundColor' => '<string>',
'primaryButtonFontColor' => '<string>'
]
],
'logo' => '<string>',
'redirectTo' => '<string>',
'favicon' => '<string>',
'defaultTheme' => 'AUTO'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.checklyhq.com/v1/status-pages"

payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"cards\": [\n {\n \"name\": \"<string>\",\n \"id\": \"<string>\",\n \"statusPageId\": \"<string>\",\n \"services\": [\n {\n \"id\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"customDomain\": \"<string>\",\n \"themeColors\": {\n \"light\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n },\n \"dark\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n }\n },\n \"logo\": \"<string>\",\n \"redirectTo\": \"<string>\",\n \"favicon\": \"<string>\",\n \"defaultTheme\": \"AUTO\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.checklyhq.com/v1/status-pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"cards\": [\n {\n \"name\": \"<string>\",\n \"id\": \"<string>\",\n \"statusPageId\": \"<string>\",\n \"services\": [\n {\n \"id\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"customDomain\": \"<string>\",\n \"themeColors\": {\n \"light\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n },\n \"dark\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n }\n },\n \"logo\": \"<string>\",\n \"redirectTo\": \"<string>\",\n \"favicon\": \"<string>\",\n \"defaultTheme\": \"AUTO\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.checklyhq.com/v1/status-pages")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"cards\": [\n {\n \"name\": \"<string>\",\n \"id\": \"<string>\",\n \"statusPageId\": \"<string>\",\n \"services\": [\n {\n \"id\": \"<string>\"\n }\n ]\n }\n ],\n \"description\": \"<string>\",\n \"customDomain\": \"<string>\",\n \"themeColors\": {\n \"light\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n },\n \"dark\": {\n \"bodyBackgroundColor\": \"<string>\",\n \"headerBackgroundColor\": \"<string>\",\n \"headerFontColor\": \"<string>\",\n \"titleFontColor\": \"<string>\",\n \"bodyFontColor\": \"<string>\",\n \"bodyFontColorMuted\": \"<string>\",\n \"navigationFontColor\": \"<string>\",\n \"linkFontColor\": \"<string>\",\n \"cardBackgroundColor\": \"<string>\",\n \"borderColor\": \"<string>\",\n \"primaryButtonBackgroundColor\": \"<string>\",\n \"primaryButtonFontColor\": \"<string>\"\n }\n },\n \"logo\": \"<string>\",\n \"redirectTo\": \"<string>\",\n \"favicon\": \"<string>\",\n \"defaultTheme\": \"AUTO\"\n}"

response = http.request(request)
puts response.read_body
{
  "name": "<string>",
  "url": "<string>",
  "id": "<string>",
  "description": "<string>",
  "customDomain": "<string>",
  "themeColors": {
    "light": {
      "bodyBackgroundColor": "<string>",
      "headerBackgroundColor": "<string>",
      "headerFontColor": "<string>",
      "titleFontColor": "<string>",
      "bodyFontColor": "<string>",
      "bodyFontColorMuted": "<string>",
      "navigationFontColor": "<string>",
      "linkFontColor": "<string>",
      "cardBackgroundColor": "<string>",
      "borderColor": "<string>",
      "primaryButtonBackgroundColor": "<string>",
      "primaryButtonFontColor": "<string>"
    },
    "dark": {
      "bodyBackgroundColor": "<string>",
      "headerBackgroundColor": "<string>",
      "headerFontColor": "<string>",
      "titleFontColor": "<string>",
      "bodyFontColor": "<string>",
      "bodyFontColorMuted": "<string>",
      "navigationFontColor": "<string>",
      "linkFontColor": "<string>",
      "cardBackgroundColor": "<string>",
      "borderColor": "<string>",
      "primaryButtonBackgroundColor": "<string>",
      "primaryButtonFontColor": "<string>"
    }
  },
  "logo": "<string>",
  "redirectTo": "<string>",
  "favicon": "<string>",
  "defaultTheme": "AUTO",
  "cards": [
    {
      "id": "<string>",
      "name": "<string>",
      "created_at": "2023-12-25",
      "services": [
        {
          "name": "<string>",
          "id": "<string>",
          "accountId": "<string>",
          "created_at": "2023-12-25",
          "updated_at": "2023-12-25"
        }
      ],
      "updated_at": "2023-12-25"
    }
  ],
  "whiteLabel": true,
  "isPrivate": false
}
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Bad Token",
"attributes": {}
}
{
"statusCode": 403,
"error": "Forbidden",
"message": "Forbidden"
}
{
"statusCode": 404,
"error": "Not Found",
"message": "Not Found"
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Too Many Requests",
"attributes": {}
}

Authorizations

Authorization
string
header
required

The Checkly Public API uses API keys to authenticate requests. You can get the API Key here. Your API key is like a password: keep it secure! Authentication to the API is performed using the Bearer auth method in the Authorization header and using the account ID. For example, set Authorization header while using cURL: curl -H "Authorization: Bearer [apiKey]" "X-Checkly-Account: [accountId]"

Headers

x-checkly-account
string

Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general

Body

application/json
name
string
required
url
string
required
cards
object[]
required
description
string | null
Maximum string length: 500
customDomain
string | null

A custom user domain, e.g. "status.example.com". See the docs on updating your DNS and SSL usage.

themeColors
object | null
logo
string | null
redirectTo
string | null
favicon
string | null
defaultTheme
enum<string>
default:AUTO
Available options:
LIGHT,
DARK,
AUTO

Response

Created

name
string
required
url
string
required
id
string
required
description
string | null
Maximum string length: 500
customDomain
string | null

A custom user domain, e.g. "status.example.com". See the docs on updating your DNS and SSL usage.

themeColors
object | null
logo
string | null
redirectTo
string | null
favicon
string | null
defaultTheme
enum<string>
default:AUTO
Available options:
LIGHT,
DARK,
AUTO
cards
object[]
whiteLabel
boolean
isPrivate
boolean
default:false