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_dataEncrypted string to use as the x-acf-sensor-data header
app_versionApp version string matching the target's Akamai SDK config
android_id16-char hex device ID (Settings.Secure.ANDROID_ID)
ro_build_version_releaseAndroid OS version
ro_build_idAndroid build ID
ro_product_manufacturerDevice manufacturer
ro_product_modelDevice 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
400Invalid request body or unsupported app name
401Missing or invalid API key
402Insufficient token balance
500Sensor 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.

注意:文档正在建设中,即将发布。