Mobile Akamai
Mobile Akamai Sensor Data API
Generate the x-acf-sensor-data header required by Akamai-protected mobile APIs.
Note: Currently only Android devices are supported for sensor data generation. iOS is not supported at this time.
Authentication
All requests require an X-API-Key header.
X-API-Key: your-api-key
Generate Sensor Data
POST/akamai-sensor-data
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
app |
string | Yes | Lowercase app name |
proxy |
string | No | Your proxy URL (protocol://[user:pass@]host:port). Required only for apps that have SDK or SBSD challenge solving enabled — the proxy is used to fetch challenge scripts from the target domain and submit solutions. If the app doesn't use these challenges, sensor data is generated locally and no proxy is needed. |
Response Body
| Field | Description |
|---|---|
status | "succeeded" or "failed" |
sensor_data | Encrypted string to use as the x-acf-sensor-data header |
app_version | App version string matching the target's Akamai SDK config |
android_id | 16-char hex device ID (Settings.Secure.ANDROID_ID) |
ro_build_version_release | Android OS version |
ro_build_id | Android build ID |
ro_product_manufacturer | Device manufacturer |
ro_product_model | Device model |
Success Response (200)
json{
"status": "succeeded",
"sensor_data": "6,a,...<encrypted sensor data>",
"app_version": "14.81.0 448100",
"android_id": "a3f8c91b2e4d7f06",
"ro_build_version_release": "16",
"ro_product_manufacturer": "SAMSUNG",
"ro_product_model": "SM-S936B",
"ro_build_id": "AP3A.250405.038"
}
Error Responses
| Status | Meaning |
|---|---|
| 400 | Invalid request body or unsupported app name |
| 401 | Missing or invalid API key |
| 402 | Insufficient token balance |
| 500 | Sensor data generation failed (retry) |
Examples
Node.js
javascriptconst response = await fetch("https://mobile.botpulse.io/akamai-sensor-data", {
method: "POST",
headers: {
"X-API-Key": "your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
app: "footlocker",
proxy: "http://user:pass@proxy.example.com:8080",
}),
});
const data = await response.json();
// data.sensor_data — use as x-acf-sensor-data header
// data.ro_product_model — e.g. "SM-S936B"
// data.ro_build_version_release — e.g. "16"
Go
gopackage main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]string{
"app": "footlocker",
"proxy": "http://user:pass@proxy.example.com:8080",
})
req, _ := http.NewRequest("POST", "https://mobile.botpulse.io/akamai-sensor-data", bytes.NewReader(body))
req.Header.Set("X-API-Key", "your-api-key")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result struct {
Status string `json:"status"`
SensorData string `json:"sensor_data"`
AppVersion string `json:"app_version"`
AndroidId string `json:"android_id"`
RoBuildVersionRelease string `json:"ro_build_version_release"`
RoProductManufacturer string `json:"ro_product_manufacturer"`
RoProductModel string `json:"ro_product_model"`
RoBuildId string `json:"ro_build_id"`
}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println("Sensor data:", result.SensorData[:50]+"...")
// Use result.SensorData as the x-acf-sensor-data header
}
Notes
- Proxy is only required for apps with SDK/SBSD challenges enabled. When needed, the proxy fetches challenge scripts from the target domain and submits solutions. To get best results please don't use datacenter proxies.
- Proxy ports. Our infrastructure has firewall rules for standard proxy provider ports (Bright Data, etc.). If you use a proxy with a non-standard port, please let us know in advance so we can whitelist it.
- TLS service fees. SDK and SBSD challenge solving routes requests through our TLS proxy service to match real mobile TLS fingerprints. This incurs additional per-request fees for the TLS service on top of the sensor data generation cost.
- Single-use. Each call generates a fresh sensor data string with a new random device profile. Generate a new one for each request to the target API.
- Device consistency. Use the
ro_*fields from the response to build all necessary headers (User-Agent, device model, etc.) so they match the generated sensor data. If you need additional device properties included in the response, please contact us.
Fastly
Fastly Solver API
Bypass Fastly Signal Sciences and Next-Gen WAF challenges.
Note: Documentation under construction. Will be available shortly.
注意:文档正在建设中,即将发布。
Web Akamai
Web Akamai Solver API
Generate sensor data for Akamai-protected web applications.
Note: Documentation under construction. Will be available shortly.
注意:文档正在建设中,即将发布。