curl --request POST \
--url 'https://api.flashcat.cloud/rum/application/remote-config/preview?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"app_version": "2.14.3",
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"env": "production",
"sdk": "web@2.4.1"
}
'import requests
url = "https://api.flashcat.cloud/rum/application/remote-config/preview?app_key="
payload = {
"app_version": "2.14.3",
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"env": "production",
"sdk": "web@2.4.1"
}
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({
app_version: '2.14.3',
application_id: 'WoyQQ3BohkdtPivubEvE8o',
env: 'production',
sdk: 'web@2.4.1'
})
};
fetch('https://api.flashcat.cloud/rum/application/remote-config/preview?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/preview?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([
'app_version' => '2.14.3',
'application_id' => 'WoyQQ3BohkdtPivubEvE8o',
'env' => 'production',
'sdk' => 'web@2.4.1'
]),
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/preview?app_key="
payload := strings.NewReader("{\n \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\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/preview?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/rum/application/remote-config/preview?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 \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"hit_rule_index": 0,
"values": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
},
"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"
}Preview remote config
Evaluate a draft remote configuration against a client context without publishing it.
curl --request POST \
--url 'https://api.flashcat.cloud/rum/application/remote-config/preview?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"app_version": "2.14.3",
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"env": "production",
"sdk": "web@2.4.1"
}
'import requests
url = "https://api.flashcat.cloud/rum/application/remote-config/preview?app_key="
payload = {
"app_version": "2.14.3",
"application_id": "WoyQQ3BohkdtPivubEvE8o",
"env": "production",
"sdk": "web@2.4.1"
}
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({
app_version: '2.14.3',
application_id: 'WoyQQ3BohkdtPivubEvE8o',
env: 'production',
sdk: 'web@2.4.1'
})
};
fetch('https://api.flashcat.cloud/rum/application/remote-config/preview?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/preview?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([
'app_version' => '2.14.3',
'application_id' => 'WoyQQ3BohkdtPivubEvE8o',
'env' => 'production',
'sdk' => 'web@2.4.1'
]),
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/preview?app_key="
payload := strings.NewReader("{\n \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\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/preview?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/rum/application/remote-config/preview?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 \"app_version\": \"2.14.3\",\n \"application_id\": \"WoyQQ3BohkdtPivubEvE8o\",\n \"env\": \"production\",\n \"sdk\": \"web@2.4.1\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"hit_rule_index": 0,
"values": {
"defaultPrivacyLevel": "mask",
"sessionReplaySampleRate": 0,
"sessionSampleRate": 5
}
},
"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
- Runs the same rule matcher the SDK config endpoint uses and publishes nothing.
- Omit
configto preview the live configuration; a suppliedconfigis validated like an update and invalid drafts returnInvalidParameter. - Rule conditions compare exact strings; a rule that tests
env,app_versionorsdknever matches when that field is omitted from the request. - If the configuration is disabled (
enabled: false) or has never been published,valuesis empty andhit_rule_indexis-1.
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
Preview request. Omit config to preview the currently live configuration.
RUM application ID. Get application IDs via POST /rum/application/list.
App version the simulated client reports, compared exactly with rules' match.app_version (no range or prefix matching). Omitted = not reported.
Draft configuration to evaluate, validated like POST /rum/application/remote-config/update. Omit to evaluate the live configuration.
Show child attributes
Show child attributes
Environment the simulated client reports, compared exactly with rules' match.env. Omitted = not reported, so rules that test env cannot match.
SDK identifier the simulated client reports, e.g. web@2.4.1, compared exactly with rules' match.sdk. Omitted = not reported.
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?