curl --request POST \
--url 'https://api.flashcat.cloud/rum/application/remote-config/history/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"asc": false,
"limit": 20,
"orderby": "updated_at",
"p": 0
}
'import requests
url = "https://api.flashcat.cloud/rum/application/remote-config/history/list?app_key="
payload = {
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"asc": False,
"limit": 20,
"orderby": "updated_at",
"p": 0
}
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({
application_id: 'WoyQQ3BohkdtPivubEvE8o',
asc: false,
limit: 20,
orderby: 'updated_at',
p: 0
})
};
fetch('https://api.flashcat.cloud/rum/application/remote-config/history/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/rum/application/remote-config/history/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([
'application_id' => 'WoyQQ3BohkdtPivubEvE8o',
'asc' => false,
'limit' => 20,
'orderby' => 'updated_at',
'p' => 0
]),
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/rum/application/remote-config/history/list?app_key="
payload := strings.NewReader("{\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\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/rum/application/remote-config/history/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/rum/application/remote-config/history/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 \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\n}"
response = http.request(request)
puts response.read_body{
"data": {
"has_next_page": false,
"items": [
{
"config": {
"activation": "next_session",
"custom": {
"feature_flags": {
"checkout_v2": true
}
},
"default": {
"defaultPrivacyLevel": "mask-user-input",
"sessionReplaySampleRate": 20,
"sessionSampleRate": 100,
"traceSampleRate": 100
},
"enabled": true,
"refresh_on_foreground": false,
"rules": [
{
"match": {
"env": "production"
},
"set": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
}
]
},
"content_hash": "9f86d081884c7d65",
"reason": "Re-apply the v7 sampling after the test",
"updated_at": 1773398630657,
"updated_by": 4441703362131,
"updated_by_name": "Alice Zhang",
"version": 8,
"equivalent_to": 7
},
{
"config": {
"activation": "next_session",
"custom": {
"feature_flags": {
"checkout_v2": true
}
},
"default": {
"defaultPrivacyLevel": "mask-user-input",
"sessionReplaySampleRate": 20,
"sessionSampleRate": 100,
"traceSampleRate": 100
},
"enabled": true,
"refresh_on_foreground": false,
"rules": [
{
"match": {
"env": "production"
},
"set": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
}
]
},
"content_hash": "9f86d081884c7d65",
"reason": "",
"updated_at": 1772398630657,
"updated_by": 4441703362131,
"updated_by_name": "Alice Zhang",
"version": 7
}
],
"total": 3
},
"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."
},
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
}List remote config history
List published remote configuration versions of a RUM application.
curl --request POST \
--url 'https://api.flashcat.cloud/rum/application/remote-config/history/list?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"asc": false,
"limit": 20,
"orderby": "updated_at",
"p": 0
}
'import requests
url = "https://api.flashcat.cloud/rum/application/remote-config/history/list?app_key="
payload = {
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"asc": False,
"limit": 20,
"orderby": "updated_at",
"p": 0
}
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({
application_id: 'WoyQQ3BohkdtPivubEvE8o',
asc: false,
limit: 20,
orderby: 'updated_at',
p: 0
})
};
fetch('https://api.flashcat.cloud/rum/application/remote-config/history/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/rum/application/remote-config/history/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([
'application_id' => 'WoyQQ3BohkdtPivubEvE8o',
'asc' => false,
'limit' => 20,
'orderby' => 'updated_at',
'p' => 0
]),
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/rum/application/remote-config/history/list?app_key="
payload := strings.NewReader("{\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\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/rum/application/remote-config/history/list?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/rum/application/remote-config/history/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 \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"asc\": false,\n \"limit\": 20,\n \"orderby\": \"updated_at\",\n \"p\": 0\n}"
response = http.request(request)
puts response.read_body{
"data": {
"has_next_page": false,
"items": [
{
"config": {
"activation": "next_session",
"custom": {
"feature_flags": {
"checkout_v2": true
}
},
"default": {
"defaultPrivacyLevel": "mask-user-input",
"sessionReplaySampleRate": 20,
"sessionSampleRate": 100,
"traceSampleRate": 100
},
"enabled": true,
"refresh_on_foreground": false,
"rules": [
{
"match": {
"env": "production"
},
"set": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
}
]
},
"content_hash": "9f86d081884c7d65",
"reason": "Re-apply the v7 sampling after the test",
"updated_at": 1773398630657,
"updated_by": 4441703362131,
"updated_by_name": "Alice Zhang",
"version": 8,
"equivalent_to": 7
},
{
"config": {
"activation": "next_session",
"custom": {
"feature_flags": {
"checkout_v2": true
}
},
"default": {
"defaultPrivacyLevel": "mask-user-input",
"sessionReplaySampleRate": 20,
"sessionSampleRate": 100,
"traceSampleRate": 100
},
"enabled": true,
"refresh_on_foreground": false,
"rules": [
{
"match": {
"env": "production"
},
"set": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
}
]
},
"content_hash": "9f86d081884c7d65",
"reason": "",
"updated_at": 1772398630657,
"updated_by": 4441703362131,
"updated_by_name": "Alice Zhang",
"version": 7
}
],
"total": 3
},
"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."
},
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 1,000 requests/minute; 50 requests/second per account |
| Permissions | None — any valid app_key can call this operation |
Usage
- Only the 50 most recent versions are kept; older versions are deleted when a new one is published and can no longer be listed or reverted to.
- Newest first by default (
orderby=updated_at,asc=false). An unrecognizedorderbyfalls back toupdated_at; ties are broken byversion. content_hashandequivalent_toidentify versions with identical content, e.g. a revert that restored an earlier version.
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
Remote configuration history request. Newest first by default.
RUM application ID. Get application IDs via POST /rum/application/list.
Ascending order. Default: false (descending).
Page size. 0 or a negative value means 20; values above 100 are treated as 100.
Sort field:
updated_at: publish time (default).version: version number.
Any other value falls back to updated_at.
updated_at, version Zero-based page index; offset is p multiplied by limit.
0 <= x <= 100000Response
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?