Skip to main content
GET
/
schedules
/
{schedule_id}
Get a schedule
curl --request GET \
  --url https://api.shiftkeeper.io/schedules/{schedule_id} \
  --header 'x-api-key: <api-key>'
import requests

url = "https://api.shiftkeeper.io/schedules/{schedule_id}"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://api.shiftkeeper.io/schedules/{schedule_id}', 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.shiftkeeper.io/schedules/{schedule_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);

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

curl_close($curl);

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

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

func main() {

url := "https://api.shiftkeeper.io/schedules/{schedule_id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

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

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

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.shiftkeeper.io/schedules/{schedule_id}")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.shiftkeeper.io/schedules/{schedule_id}")

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

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "schedule": {
    "name": "<string>",
    "time_zone": "<string>",
    "layers": [
      {
        "name": "<string>",
        "rotation_start": "2023-11-07T05:31:56Z",
        "concurrent_oncall_users": 2,
        "users": [
          {
            "id": "<string>",
            "name": "<string>",
            "email": "jsmith@example.com",
            "time_zone": "<string>",
            "slack_id": "<string>"
          }
        ],
        "shift_length": {
          "amount": 2
        },
        "restriction_intervals": [
          {
            "from": "<string>",
            "to": "<string>"
          }
        ]
      }
    ],
    "teams": [
      {
        "id": "<string>",
        "name": "<string>",
        "description": "<string>"
      }
    ],
    "current_revision": 1,
    "current_revision_valid_from": "2023-11-07T05:31:56Z",
    "users": [
      {
        "id": "<string>",
        "name": "<string>",
        "email": "jsmith@example.com",
        "time_zone": "<string>",
        "slack_id": "<string>"
      }
    ],
    "description": "<string>",
    "current_oncall_shift": {
      "users": [
        {
          "id": "<string>",
          "name": "<string>",
          "email": "jsmith@example.com",
          "time_zone": "<string>",
          "slack_id": "<string>"
        }
      ],
      "start": "2023-11-07T05:31:56Z",
      "end": "2023-11-07T05:31:56Z"
    },
    "next_oncall_shift": {
      "users": [
        {
          "id": "<string>",
          "name": "<string>",
          "email": "jsmith@example.com",
          "time_zone": "<string>",
          "slack_id": "<string>"
        }
      ],
      "start": "2023-11-07T05:31:56Z",
      "end": "2023-11-07T05:31:56Z"
    }
  }
}
{
"error": {
"code": "not_found",
"status": 404,
"message": "The requested resource was not found"
}
}

Authorizations

x-api-key
string
header
required

Enter your API key which starts with 'keeper_'

Path Parameters

schedule_id
string
required

The ID of the schedule.

Response

Default Response

schedule
object
required
Example:
{
"name": "Incident responders",
"description": "Incident responders",
"time_zone": "Europe/Berlin",
"layers": [
{
"name": "Main",
"rotation_start": "2024-01-01T00:00:00Z",
"concurrent_oncall_users": 1,
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"shift_length": { "amount": 1, "unit": "weeks" },
"restriction_intervals": []
}
],
"current_revision": 1,
"current_revision_valid_from": "2024-12-01T00:00:00Z",
"current_oncall_shift": {
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
}
],
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-01T01:00:00Z"
},
"next_oncall_shift": {
"users": [
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
}
],
"start": "2024-01-01T01:00:00Z",
"end": "2024-01-01T02:00:00Z"
},
"users": [
{
"id": "usr_bq7CmsOKLmkMeZkUUu1hy",
"name": "Rick",
"email": "rick@example.org",
"time_zone": "Europe/Paris",
"role": "owner",
"seat": "member",
"slack_id": "U082KENSEQ3"
},
{
"id": "usr_C0GwCFdk0I4pBMRny4qYV",
"name": "Dena",
"email": "dena@example.org",
"role": "standard",
"seat": "member",
"slack_id": "U082GMAFR1T"
},
{
"id": "usr_YlxrjoB1JqUsollScfFYT",
"name": "Lily",
"email": "lily@example.org",
"time_zone": "America/New_York",
"role": "standard",
"seat": "viewer",
"slack_id": "U0529FWNCG2"
}
],
"teams": [
{
"id": "tea_VJ4sYEOOXVvJBXqFjRzpm",
"name": "Payments",
"description": "All about payments and billing"
}
]
}