curl --request POST \
--url 'https://api.flashcat.cloud/sourcemap/stack/enrich?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"near": 3,
"service": "my-web-app",
"stack": "TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)",
"type": "browser",
"version": "1.0.0"
}
'import requests
url = "https://api.flashcat.cloud/sourcemap/stack/enrich?app_key="
payload = {
"near": 3,
"service": "my-web-app",
"stack": "TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)",
"type": "browser",
"version": "1.0.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({
near: 3,
service: 'my-web-app',
stack: 'TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)',
type: 'browser',
version: '1.0.0'
})
};
fetch('https://api.flashcat.cloud/sourcemap/stack/enrich?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/sourcemap/stack/enrich?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([
'near' => 3,
'service' => 'my-web-app',
'stack' => 'TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)',
'type' => 'browser',
'version' => '1.0.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/sourcemap/stack/enrich?app_key="
payload := strings.NewReader("{\n \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.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/sourcemap/stack/enrich?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.0\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/sourcemap/stack/enrich?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 \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.0\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"frames": [
{
"code_snippets": [
{
"code": "const cart = props.cart;",
"line": 41
},
{
"code": "return cart.items.map(renderItem);",
"line": 42
}
],
"column": 17,
"converted": true,
"file": "src/pages/checkout.tsx",
"function": "renderCheckout",
"line": 42,
"original_frame": {
"column": 2345,
"file": "https://cdn.example.com/app.min.js",
"function": "render",
"line": 1
}
}
]
},
"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."
},
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
}Enrich a stack trace
Symbolicate or deobfuscate a browser, Android, iOS, Mini Program, or HarmonyOS stack trace.
curl --request POST \
--url 'https://api.flashcat.cloud/sourcemap/stack/enrich?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"near": 3,
"service": "my-web-app",
"stack": "TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)",
"type": "browser",
"version": "1.0.0"
}
'import requests
url = "https://api.flashcat.cloud/sourcemap/stack/enrich?app_key="
payload = {
"near": 3,
"service": "my-web-app",
"stack": "TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)",
"type": "browser",
"version": "1.0.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({
near: 3,
service: 'my-web-app',
stack: 'TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)',
type: 'browser',
version: '1.0.0'
})
};
fetch('https://api.flashcat.cloud/sourcemap/stack/enrich?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/sourcemap/stack/enrich?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([
'near' => 3,
'service' => 'my-web-app',
'stack' => 'TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)',
'type' => 'browser',
'version' => '1.0.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/sourcemap/stack/enrich?app_key="
payload := strings.NewReader("{\n \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.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/sourcemap/stack/enrich?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.0\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/sourcemap/stack/enrich?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 \"near\": 3,\n \"service\": \"my-web-app\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"type\": \"browser\",\n \"version\": \"1.0.0\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"frames": [
{
"code_snippets": [
{
"code": "const cart = props.cart;",
"line": 41
},
{
"code": "return cart.items.map(renderItem);",
"line": 42
}
],
"column": 17,
"converted": true,
"file": "src/pages/checkout.tsx",
"function": "renderCheckout",
"line": 42,
"original_frame": {
"column": 2345,
"file": "https://cdn.example.com/app.min.js",
"function": "render",
"line": 1
}
}
]
},
"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."
},
"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
typedefaults tobrowserwhen omitted for backward compatibility.- Set
nearfrom 1 to 20 to include source-code snippets around converted frames. - For Android NDK native crashes, provide
archandsource_type: ndkso the backend routes to native symbolication. - For iOS crash stacks, pass
binary_imagesso addresses can be relocated against the uploaded dSYM files. no_cacheis intended for debugging and bypasses cached enrich results.
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
Stack trace enrichment request.
Application or service name used when the sourcemap was uploaded.
Application version used when the sourcemap was uploaded.
Android NDK architecture such as arm, arm64, x86, or x64.
Loaded binary images from an iOS crash report.
Show child attributes
Show child attributes
Android build ID for Gradle plugin 1.13.0 and later.
Number of nearby meaningful source lines to return around converted frames.
1 <= x <= 20Skip cached enrich results. Intended for debugging.
Narrows a react-native enrich to the app's native platform: ios for the iOS native layer, android for the Android native layer (the console derives it from the event's OS). Ignored for other type values.
ios, android Android error source type. Use ndk with arch for native symbolication.
Raw stack trace to parse and enrich.
Source platform whose symbol store is used. Defaults to browser when omitted.
| Value | Symbolication |
|---|---|
browser | JavaScript stacks via sourcemaps |
android | Java/Kotlin stacks via ProGuard/R8 mappings; native stacks via NDK symbols (send source_type=ndk with arch) |
ios | iOS crash stacks via dSYM (send binary_images) |
miniprogram | WeChat mini program stacks via sourcemaps |
harmony | HarmonyOS stacks via ArkTS sourcemaps or native symbols |
flutter | Flutter/Dart stacks via Dart AOT symbols |
electron | Electron JavaScript stacks via sourcemaps; minidump native frames via Breakpad symbols (derived from source_type) |
react-native | React Native JS stacks via sourcemaps; narrow the lookup with platform |
browser, android, ios, miniprogram, harmony, flutter, electron, react-native Android build variant used by older Gradle plugin versions.
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?