curl --request POST \
--url 'https://api.flashcat.cloud/incident/sdp/request/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"start_time": 1779513600,
"end_time": 1779600000,
"status": "success",
"channel_ids": [
12345
],
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/incident/sdp/request/list?app_key="
payload = {
"start_time": 1779513600,
"end_time": 1779600000,
"status": "success",
"channel_ids": [12345],
"limit": 20
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
start_time: 1779513600,
end_time: 1779600000,
status: 'success',
channel_ids: [12345],
limit: 20
})
};
fetch('https://api.flashcat.cloud/incident/sdp/request/list?app_key=', 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.flashcat.cloud/incident/sdp/request/list?app_key=",
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([
'start_time' => 1779513600,
'end_time' => 1779600000,
'status' => 'success',
'channel_ids' => [
12345
],
'limit' => 20
]),
CURLOPT_HTTPHEADER => [
"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.flashcat.cloud/incident/sdp/request/list?app_key="
payload := strings.NewReader("{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}")
req, _ := http.NewRequest("POST", url, payload)
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.flashcat.cloud/incident/sdp/request/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/incident/sdp/request/list?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"items": [
{
"created_at": 1779514631,
"status": "success",
"request_id": "100000000001",
"request_link": "https://servicedesk.example.com/app/itdesk/ui/requests/100000000001/details",
"integration_id": 98765,
"incident_id": "685d7f4e51b9a9a6d4d0c123",
"incident_title": "Checkout API 5xx rate increased",
"channel_id": 12345,
"channel_name": "Payments"
}
],
"total": 1,
"has_next_page": false,
"search_after_ctx": ""
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Get ServiceDeskPlus linked incidents
List synchronization mappings between ServiceDeskPlus requests and Flashduty incidents.
curl --request POST \
--url 'https://api.flashcat.cloud/incident/sdp/request/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"start_time": 1779513600,
"end_time": 1779600000,
"status": "success",
"channel_ids": [
12345
],
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/incident/sdp/request/list?app_key="
payload = {
"start_time": 1779513600,
"end_time": 1779600000,
"status": "success",
"channel_ids": [12345],
"limit": 20
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
start_time: 1779513600,
end_time: 1779600000,
status: 'success',
channel_ids: [12345],
limit: 20
})
};
fetch('https://api.flashcat.cloud/incident/sdp/request/list?app_key=', 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.flashcat.cloud/incident/sdp/request/list?app_key=",
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([
'start_time' => 1779513600,
'end_time' => 1779600000,
'status' => 'success',
'channel_ids' => [
12345
],
'limit' => 20
]),
CURLOPT_HTTPHEADER => [
"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.flashcat.cloud/incident/sdp/request/list?app_key="
payload := strings.NewReader("{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}")
req, _ := http.NewRequest("POST", url, payload)
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.flashcat.cloud/incident/sdp/request/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/incident/sdp/request/list?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"start_time\": 1779513600,\n \"end_time\": 1779600000,\n \"status\": \"success\",\n \"channel_ids\": [\n 12345\n ],\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"items": [
{
"created_at": 1779514631,
"status": "success",
"request_id": "100000000001",
"request_link": "https://servicedesk.example.com/app/itdesk/ui/requests/100000000001/details",
"integration_id": 98765,
"incident_id": "685d7f4e51b9a9a6d4d0c123",
"incident_title": "Checkout API 5xx rate increased",
"channel_id": 12345,
"channel_name": "Payments"
}
],
"total": 1,
"has_next_page": false,
"search_after_ctx": ""
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 1,000 requests/minute; 50 requests/second per account |
| Permissions | Incidents Read or Incidents Manage or Channels Read or Channels Manage (on-call) |
Usage
- Use this endpoint to inspect synchronization mappings between ServiceDeskPlus requests and Flashduty incidents, including the external request link and sync status.
- When
incident_idis not provided,start_timeandend_timeare required Unix-second timestamps; the time window cannot exceed 30 days. statusaccepts onlysuccessandfailed, representing successful and failed synchronization records.- Results are sorted by the internal record ID. Set
asctotruefor ascending order; otherwise records are returned descending. - Pagination uses only
search_after_ctx: pass the value returned by the previous response;pis ignored.
Authorizations
APP Key created in the Flashduty console under My → APP Key. Send it as the app_key query parameter or in the Fd-App-Key request header. Its effective access is the intersection of the key's permission scope and the creator's current role permissions. Keep it secret.
Body
Filters for listing ServiceDeskPlus request synchronization records. A time window is optional when querying by incident ID; otherwise provide a Unix-second window no longer than 30 days.
Window start, Unix seconds. Optional when incident_id is provided.
x >= 0Window end, Unix seconds. Must be greater than or equal to start_time. Optional when incident_id is provided.
x >= 0Filter by sync status: success or failed.
success, failed Channel IDs to filter by.
ServiceDeskPlus integration ID.
x >= 0Flashduty incident ID. When set, the time window can be omitted.
64ServiceDeskPlus request ID.
64When true, sort by internal record ID ascending; otherwise descending.
Not supported; pagination uses only search_after_ctx, so this value is ignored.
x >= 0Page size. Defaults to 20; maximum 100. With page-number paging, p × limit may not exceed 10,000.
0 <= x <= 100Pagination cursor: leave empty for the first page, then pass the search_after_ctx returned by the previous response.
Response
Success
Success response envelope. On every 2xx response, request_id identifies the call (also mirrored in the Flashcat-Request-Id header) and data holds the endpoint-specific payload. Failure responses use a different shape — see ErrorResponse.
Was this page helpful?