curl --request POST \
--url 'https://api.flashcat.cloud/channel/integration/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": 20001,
"p": 1,
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/channel/integration/list?app_key="
payload = {
"channel_id": 20001,
"p": 1,
"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({channel_id: 20001, p: 1, limit: 20})
};
fetch('https://api.flashcat.cloud/channel/integration/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/channel/integration/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([
'channel_id' => 20001,
'p' => 1,
'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/channel/integration/list?app_key="
payload := strings.NewReader("{\n \"channel_id\": 20001,\n \"p\": 1,\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/channel/integration/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": 20001,\n \"p\": 1,\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/channel/integration/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 \"channel_id\": 20001,\n \"p\": 1,\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"p": 1,
"limit": 20,
"total": 1,
"items": [
{
"integration_id": 10001,
"channel_id": 20001,
"integration_key": "0123456789abcdef0123456789abcdef100",
"exclusive_data_source_id": 0,
"plugin_id": 9,
"plugin_type": "standard.alert",
"plugin_type_name": "Standard alert",
"category": "event.alert",
"name": "Payments alerts",
"description": "Alerts for the payments channel",
"status": "enabled",
"created_at": 1767225600,
"updated_at": 1767225600,
"last_time": 0,
"last_source_time": 0,
"settings": {}
}
]
}
}{
"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."
}
}List dedicated integrations
List the dedicated integrations owned by one channel.
curl --request POST \
--url 'https://api.flashcat.cloud/channel/integration/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": 20001,
"p": 1,
"limit": 20
}
'import requests
url = "https://api.flashcat.cloud/channel/integration/list?app_key="
payload = {
"channel_id": 20001,
"p": 1,
"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({channel_id: 20001, p: 1, limit: 20})
};
fetch('https://api.flashcat.cloud/channel/integration/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/channel/integration/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([
'channel_id' => 20001,
'p' => 1,
'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/channel/integration/list?app_key="
payload := strings.NewReader("{\n \"channel_id\": 20001,\n \"p\": 1,\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/channel/integration/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": 20001,\n \"p\": 1,\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/channel/integration/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 \"channel_id\": 20001,\n \"p\": 1,\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"p": 1,
"limit": 20,
"total": 1,
"items": [
{
"integration_id": 10001,
"channel_id": 20001,
"integration_key": "0123456789abcdef0123456789abcdef100",
"exclusive_data_source_id": 0,
"plugin_id": 9,
"plugin_type": "standard.alert",
"plugin_type_name": "Standard alert",
"category": "event.alert",
"name": "Payments alerts",
"description": "Alerts for the payments channel",
"status": "enabled",
"created_at": 1767225600,
"updated_at": 1767225600,
"last_time": 0,
"last_source_time": 0,
"settings": {}
}
]
}
}{
"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 | Channels Read, Channels Manage, or Integrations Read (on-call) |
Usage
- These APIs manage channel-owned dedicated integrations; use
/integration/*for public integrations. - The App Key’s
api_scopesmust allow the operation; permissions follow the user who owns the key. - Private channels also require the account owner, an Admin, the channel creator, or membership in its owning or managing teams; public channels still require the API permission above.
channel_idis required;pdefaults to1andlimitdefaults to100, with a maximum of100.plugin_typeandstatuseach accept one value.- The complete
integration_keyis returned; saved secret values insettingsare returned as******. The integration key authenticates alert ingestion and is separate from the management App Key.
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 and pagination for one channel's dedicated integrations.
Channel ID to list dedicated integrations for.
x >= 120001
Page number, starting at 1.
x >= 1Number of items per page, at most 100.
1 <= x <= 100Filter by integration name.
49Filter by one integration type.
Filter by enabled integrations that accept alerts or disabled integrations that pause ingestion.
enabled, disabled 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?