curl --request POST \
--url 'https://api.flashcat.cloud/enrichment/mapping/api/create?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"api_name": "CMDB API",
"description": "Query CMDB for host metadata",
"url": "https://cmdb.example.com/api/lookup",
"headers": {
"X-Token": "mytoken"
},
"timeout": 2,
"retry_count": 1,
"insecure_skip_verify": false
}
'import requests
url = "https://api.flashcat.cloud/enrichment/mapping/api/create?app_key="
payload = {
"api_name": "CMDB API",
"description": "Query CMDB for host metadata",
"url": "https://cmdb.example.com/api/lookup",
"headers": { "X-Token": "mytoken" },
"timeout": 2,
"retry_count": 1,
"insecure_skip_verify": False
}
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({
api_name: 'CMDB API',
description: 'Query CMDB for host metadata',
url: 'https://cmdb.example.com/api/lookup',
headers: {'X-Token': 'mytoken'},
timeout: 2,
retry_count: 1,
insecure_skip_verify: false
})
};
fetch('https://api.flashcat.cloud/enrichment/mapping/api/create?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/enrichment/mapping/api/create?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([
'api_name' => 'CMDB API',
'description' => 'Query CMDB for host metadata',
'url' => 'https://cmdb.example.com/api/lookup',
'headers' => [
'X-Token' => 'mytoken'
],
'timeout' => 2,
'retry_count' => 1,
'insecure_skip_verify' => false
]),
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/enrichment/mapping/api/create?app_key="
payload := strings.NewReader("{\n \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\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/enrichment/mapping/api/create?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/enrichment/mapping/api/create?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 \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"api_id": "665f1a2b3c4d5e6f7a8b9c02",
"api_name": "CMDB API"
}
}{
"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": "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."
}
}Create mapping API
Create a new external HTTP API endpoint used to enrich alerts via HTTP lookup.
curl --request POST \
--url 'https://api.flashcat.cloud/enrichment/mapping/api/create?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"api_name": "CMDB API",
"description": "Query CMDB for host metadata",
"url": "https://cmdb.example.com/api/lookup",
"headers": {
"X-Token": "mytoken"
},
"timeout": 2,
"retry_count": 1,
"insecure_skip_verify": false
}
'import requests
url = "https://api.flashcat.cloud/enrichment/mapping/api/create?app_key="
payload = {
"api_name": "CMDB API",
"description": "Query CMDB for host metadata",
"url": "https://cmdb.example.com/api/lookup",
"headers": { "X-Token": "mytoken" },
"timeout": 2,
"retry_count": 1,
"insecure_skip_verify": False
}
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({
api_name: 'CMDB API',
description: 'Query CMDB for host metadata',
url: 'https://cmdb.example.com/api/lookup',
headers: {'X-Token': 'mytoken'},
timeout: 2,
retry_count: 1,
insecure_skip_verify: false
})
};
fetch('https://api.flashcat.cloud/enrichment/mapping/api/create?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/enrichment/mapping/api/create?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([
'api_name' => 'CMDB API',
'description' => 'Query CMDB for host metadata',
'url' => 'https://cmdb.example.com/api/lookup',
'headers' => [
'X-Token' => 'mytoken'
],
'timeout' => 2,
'retry_count' => 1,
'insecure_skip_verify' => false
]),
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/enrichment/mapping/api/create?app_key="
payload := strings.NewReader("{\n \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\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/enrichment/mapping/api/create?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/enrichment/mapping/api/create?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 \"api_name\": \"CMDB API\",\n \"description\": \"Query CMDB for host metadata\",\n \"url\": \"https://cmdb.example.com/api/lookup\",\n \"headers\": {\n \"X-Token\": \"mytoken\"\n },\n \"timeout\": 2,\n \"retry_count\": 1,\n \"insecure_skip_verify\": false\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"api_id": "665f1a2b3c4d5e6f7a8b9c02",
"api_name": "CMDB API"
}
}{
"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": "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 | Mappings Manage (on-call) |
Usage
urlmust start withhttp://orhttps://and cannot resolve to an internal IP (in SaaS mode).timeoutis the HTTP read timeout in seconds (1–3, default 2).retry_countis the number of retries on failure (0–1, default 0).- Headers with security-sensitive names (e.g.
authorization,cookie) are rejected in SaaS mode. - An account can have at most 50 mapping APIs.
- Every call is recorded in the account audit log. Don’t put secrets in request fields.
Authorizations
App key issued from the Flashduty console under Account → APP Keys. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Unique API name (max 199 chars).
199HTTP/HTTPS endpoint URL (max 500 chars).
500Optional description.
Skip TLS certificate verification. Default false.
Custom HTTP request headers.
Show child attributes
Show child attributes
Request timeout in seconds (1–3). Default 2.
Number of retries on failure (0–1). Default 0.
Owning team ID.
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?