curl --request POST \
--url 'https://api.flashcat.cloud/sourcemap/stack/enrich?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"type": "browser",
"service": "my-web-app",
"version": "1.0.0",
"stack": "TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)",
"near": 3
}
'import requests
url = "https://api.flashcat.cloud/sourcemap/stack/enrich?app_key="
payload = {
"type": "browser",
"service": "my-web-app",
"version": "1.0.0",
"stack": "TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)",
"near": 3
}
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({
type: 'browser',
service: 'my-web-app',
version: '1.0.0',
stack: 'TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)',
near: 3
})
};
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([
'type' => 'browser',
'service' => 'my-web-app',
'version' => '1.0.0',
'stack' => 'TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)',
'near' => 3
]),
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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"frames": [
{
"function": "renderCheckout",
"file": "src/pages/checkout.tsx",
"line": 42,
"column": 17,
"converted": true,
"code_snippets": [
{
"line": 41,
"code": "const cart = props.cart;"
},
{
"line": 42,
"code": "return cart.items.map(renderItem);"
}
],
"original_frame": {
"function": "render",
"file": "https://cdn.example.com/app.min.js",
"line": 1,
"column": 2345
}
}
]
}
}{
"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."
}
}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 '
{
"type": "browser",
"service": "my-web-app",
"version": "1.0.0",
"stack": "TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)",
"near": 3
}
'import requests
url = "https://api.flashcat.cloud/sourcemap/stack/enrich?app_key="
payload = {
"type": "browser",
"service": "my-web-app",
"version": "1.0.0",
"stack": "TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)",
"near": 3
}
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({
type: 'browser',
service: 'my-web-app',
version: '1.0.0',
stack: 'TypeError: Cannot read properties of undefined\n at render (https://cdn.example.com/app.min.js:1:2345)',
near: 3
})
};
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([
'type' => 'browser',
'service' => 'my-web-app',
'version' => '1.0.0',
'stack' => 'TypeError: Cannot read properties of undefined
at render (https://cdn.example.com/app.min.js:1:2345)',
'near' => 3
]),
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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\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 \"type\": \"browser\",\n \"service\": \"my-web-app\",\n \"version\": \"1.0.0\",\n \"stack\": \"TypeError: Cannot read properties of undefined\\n at render (https://cdn.example.com/app.min.js:1:2345)\",\n \"near\": 3\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"frames": [
{
"function": "renderCheckout",
"file": "src/pages/checkout.tsx",
"line": 42,
"column": 17,
"converted": true,
"code_snippets": [
{
"line": 41,
"code": "const cart = props.cart;"
},
{
"line": 42,
"code": "return cart.items.map(renderItem);"
}
],
"original_frame": {
"function": "render",
"file": "https://cdn.example.com/app.min.js",
"line": 1,
"column": 2345
}
}
]
}
}{
"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 | 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.
Source platform. Defaults to browser when omitted.
browser, android, ios, miniprogram, harmony Raw stack trace to parse and enrich.
Number of nearby meaningful source lines to return around converted frames.
1 <= x <= 20Skip cached enrich results. Intended for debugging.
Android build ID for Gradle plugin 1.13.0 and later.
Android build variant used by older Gradle plugin versions.
Android NDK architecture such as arm, arm64, x86, or x64.
Android error source type. Use ndk with arch for native symbolication.
Loaded binary images from an iOS crash report.
Show child attributes
Show child attributes
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?