Requirements
Headless API aapko HideMyAndroid ko poori tarah ADB ya kisi bhi automation tool se control karne deta hai — app UI ki zaroorat ke bina. Ye ek Premium feature hai.
- Premium account — Headless API sirf Premium users ke liye hai.
- App version 1.2.8 ya usse naya.
- Root + LSPosed — wahi setup jo HideMyAndroid ko pehle se chahiye hota hai. Installation guide dekhein.
- ADB aapke device se connected ho (
adb devicesusse list karta hai). - Device par internet — sirf tab zaroori hai jab aap proxy enable karein (usse live test kiya jaata hai).
⚠️ Headless mode use karne se pehle pakka kar lein ki app ko VPN permission de di gayi hai.
Authentication
App mein Settings → Developer → Headless API kholein aur Enable on karein. Ek key apne aap generate ho jaati hai — Copy par tap karein. Har request is key ko token parameter ke roop mein bhejti hai.
Isse private rakhein — jiske paas key aur ADB access ho, woh aapke profiles control kar sakta hai. Regenerate ek nayi key banata hai (purani band ho jaati hai); log out karne par ye mit jaati hai.
Is poore reference mein, <your_access_token> ki jagah apni key aur <profile_id> ki jagah woh id daalein jo profile.create return karta hai.
Requests banana
Do transports, ye is hisaab se chunne jaate hain ki kisi value mein colon : hai ya nahi
| Transport | Iske liye | Command |
|---|---|---|
content call | Reads, aur bina : waali values (name, gmails, package names) | adb shell content call |
am broadcast | JSON objects (hookFlags, proxy, deviceMock, sim) — inme : hota hai | adb shell am broadcast |
content call har --extra ko colon par split karta hai, isliye woh JSON nahi le ja sakta — isi wajah se JSON values broadcast ke through bheji jaati hain.
Responses. Success ka matlab hai ok=true (content call) ya result=0 (broadcast); failure par error_code aur error_message add ho jaate hain. Error codes dekhein. Har method token bhi leta hai. Niche kisi bhi operation par click karke uske parameters, request, aur response expand karein.
Status
READ status Check karein ki API ready hai content call
Parameters
No parameters.
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method status --extra token:s:<your_access_token> Response ok=true
Bundle[{data={"premium":true,"featureEnabled":true,"freshnessOk":true,"activeProfileId":"a1b2c3d4-...","version":"1.2.8"}, ok=true}] Fields: premium, featureEnabled, freshnessOk (license haal hi mein online confirm hui), activeProfileId (ya null), version.
Profiles
READ profile.list Saare profiles list karein content call
Parameters
No parameters.
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.list --extra token:s:<your_access_token> Response ok=true
Bundle[{data=[{"id":"a1b2...","name":"Demo","isActive":true,"createdAt":1717000000000,"updatedAt":1717000500000}], ok=true}] READ profile.get Ek profile poora padhein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.get --extra token:s:<your_access_token> --extra id:s:<profile_id> Response ok=true
Bundle[{data={"id":"a1b2...","name":"Demo","isActive":false,"hookFlags":{"hook_wifi":true,...},"proxy":{"enabled":false,...},"deviceMock":{"enabled":false,...},"sim":{"enabled":false,"simCards":[]},"gmails":[],"targetApps":["com.whatsapp"]}, ok=true}] CREATE profile.create Profile banayein (uski id return karta hai) content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | required | Profile ke liye ek label. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.create --extra token:s:<your_access_token> --extra name:s:Demo Response ok=true
Bundle[{data={"id":"a1b2c3d4-..."}, ok=true}] Is id ko aage ke calls ke liye <profile_id> ki jagah copy kar lein.
UPDATE profile.update Profile ke settings badlein content call / broadcast
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
name | string | optional | Naya profile label (content call). |
gmails | string[] | optional | Virtual @gmail.com accounts (content call). |
hookFlags | object | optional | Spoofing on/off switches (broadcast). |
proxy | object | optional | Proxy config (broadcast). |
deviceMock | object | optional | Device model spoof (broadcast). |
sim | object | optional | SIM / carrier spoof (broadcast). |
Request
content call — plain values
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.update --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra name:s:"My Profile" broadcast — JSON configs
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e hookFlags '{"hook_wifi":false,"hook_nearby_bluetooth":false}' Response ok=true
Dono tareeke poora updated profile return karte hain. Har JSON field ke liye Configuration dekhein.
⚠️ hookFlags poore set ko replace kar deta hai — aap jo bhi flag chhod denge woh apni default value (ON) par wapas chala jaata hai. Kuch flags badalne aur baaki rakhne ke liye, pehle profile.get chalayein, poora map edit karein, phir sab wapas bhej dein.
DELETE profile.delete Profile hamesha ke liye delete karein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.delete --extra token:s:<your_access_token> --extra id:s:<profile_id> Response ok=true
Bundle[{data={}, ok=true}] Activation
Profile sirf tab spoof karta hai jab woh active ho. Activate karne par target apps force-stop ho jaati hain taaki woh nayi identity ke saath restart hon.
ACTION profile.setActive Profile activate karein — spoofing shuru karein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.setActive --extra token:s:<your_access_token> --extra id:s:<profile_id> Response ok=true
Bundle[{data={"id":"a1b2...","isActive":true}, ok=true}] ACTION profile.deactivate Active profile deactivate karein — spoofing band karein content call
Parameters
No parameters.
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.deactivate --extra token:s:<your_access_token> Response ok=true
Bundle[{data={}, ok=true}] Id ki zaroorat nahi — jo bhi profile active hoga usse deactivate kar deta hai.
Target apps
Target apps woh apps hain jinhe ek profile spoof karta hai.
READ profile.getApps Profile ki target apps list karein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.getApps --extra token:s:<your_access_token> --extra id:s:<profile_id> Response ok=true
Bundle[{data=[{"packageName":"com.whatsapp"}], ok=true}] CREATE profile.addApp Profile mein target app add karein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
packageName | string | required | App ka package name. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.addApp --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra packageName:s:com.whatsapp Response ok=true · updated app list
Bundle[{data=[{"packageName":"com.whatsapp"}], ok=true}] ⚠️ Same package do baar add karne par BAD_REQUEST milta hai.
DELETE profile.removeApp Profile se target app hatayein content call
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Profile id. |
packageName | string | required | Jo app hatani hai. |
Request
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.removeApp --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra packageName:s:com.whatsapp Response ok=true · updated app list
Bundle[{data=[], ok=true}] Configuration
Ye woh values hain jo aap profile.update ke saath bhejte hain. Profile bante waqt ki defaults:
| Setting | Default | Isse use karne ke liye… |
|---|---|---|
| hookFlags (all 20) | ✅ ON | Pehle se on hai. Sirf un flags ke liye false bhejein jinhe band karna hai. |
| proxy | ❌ OFF | "enabled":true shaamil karein |
| deviceMock | ❌ OFF | "enabled":true shaamil karein |
| sim | ❌ OFF | "enabled":true shaamil karein |
| gmails | empty | Addresses bhejein (virtual accounts default se on rehte hain) |
⚠️
enabled:falsewaala config store to hota hai par inert rehta hai — values save ho jaati hain taaki aap baad mein isse on kar sakein, lekinenabled:truehone tak kuch spoof nahi hota. Geo spoofing (hook_geo_*) ke liye ek aisa proxy chahiye joenabled:trueho aur live test paas kare.
hookFlags
Default: sab ON. Ye "flag": true|false ka ek map hai. Update poore map ko replace kar deta hai — aap jo bhi chhod denge woh wapas ON ho jaata hai.
| Flag | Ye kya karta hai |
|---|---|
hook_hide_dev_opts | Developer Options chhupayein |
hook_hide_vpn | VPN chhupayein |
hook_hide_airplane_mode | Airplane mode chhupayein |
hook_hide_proxy | System proxy setting chhupayein |
hook_hide_root | Root chhupayein |
hook_hide_lsposed | LSPosed chhupayein |
hook_spoof_installer | Install source spoof karein |
hook_package_info | Package info / signatures spoof karein |
hook_lan_scan_block | LAN scanning block karein |
hook_identifiers_partly | Android ID spoof karein (basic) |
hook_identifiers_fully | Saare IDs spoof karein (IMEI, serial, AAID, MediaDRM, AppSetID, boot_id…) |
hook_wifi | Wi-Fi name/address spoof karein (SSID/BSSID) |
hook_nearby_wifi | Aaspaas ke Wi-Fi scan results spoof karein |
hook_nearby_bluetooth | Aaspaas ke Bluetooth devices spoof karein |
hook_realistic_sensor | Realistic sensor data use karein |
hook_sensor_accelerometer | Accelerometer spoof karein (hook_realistic_sensor chahiye) |
hook_virtual_accounts | Virtual Google accounts enable karein (gmails ke liye iska ON hona zaroori hai) |
hook_geo_gps | GPS location spoof karein (geo waala proxy chahiye) |
hook_geo_locale | Language/region spoof karein (geo waala proxy chahiye) |
hook_geo_timezone | Timezone spoof karein (geo waala proxy chahiye) |
proxy
Default: OFF. enabled:true ke saath, app sach mein iske through connect karta hai, iski location padhta hai, aur hook_geo_* flags ke liye country/lat/long/timezone bhar deta hai. Live test mein ~8s tak lagte hain; jo proxy fail hota hai woh PROXY_INVALID return karta hai aur save nahi hota.
| Field | Type | Default | Matlab / constraints |
|---|---|---|---|
host | string | "" | Proxy IP / hostname |
port | int | 0 | Port — valid 1–65535 |
protocol | string | HTTP | HTTP, SOCKS4, ya SOCKS5 |
username | string | "" | Auth (optional) |
password | string | "" | Auth (optional) |
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e proxy '{"enabled":true,"host":"10.0.0.1","port":1080,"protocol":"SOCKS5"}' deviceMock
Default: OFF. Device ko ek alag model dikhaata hai. "enabled":true ke saath in fields mein se koi bhi set karein — sab optional strings hain (default khaali), har ek Android ke Build property se map hoti hai:
| Field | Map hota hai | Example |
|---|---|---|
manufacturer | Build.MANUFACTURER | Samsung |
brand | Build.BRAND | samsung |
model | Build.MODEL | SM-S918B |
device | Build.DEVICE (codename) | dm3q |
product | Build.PRODUCT | dm3qxxx |
board | Build.BOARD | kalama |
hardware | Build.HARDWARE | qcom |
buildId | Build.ID | UP1A.231005.007 |
buildIncremental | Build.VERSION.INCREMENTAL | S918BXXU3CWK9 |
buildType | Build.TYPE | user |
buildTags | Build.TAGS | release-keys |
buildFingerprint | Build.FINGERPRINT | samsung/dm3qxxx/dm3q:14/UP1A.231005.007/S918BXXU3CWK9:user/release-keys |
deviceName | Dikhne waala device name | Galaxy S23 Ultra |
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e deviceMock '{"enabled":true,"manufacturer":"Samsung","brand":"samsung","model":"SM-S918B","device":"dm3q","product":"dm3qxxx","board":"kalama","hardware":"qcom","buildId":"UP1A.231005.007","buildIncremental":"S918BXXU3CWK9","buildType":"user","buildTags":"release-keys","buildFingerprint":"samsung/dm3qxxx/dm3q:14/UP1A.231005.007/S918BXXU3CWK9:user/release-keys","deviceName":"Galaxy S23 Ultra"}' sim
Default: OFF. SIM/carrier spoof karta hai. "enabled":true set karein aur simCards mein do tak cards dein. Har card:
| Field | Type | Default | Matlab / constraints |
|---|---|---|---|
slotIndex | int | 0 | SIM slot — sirf 0 ya 1 |
carrierName | string | "" | Carrier ka naam (jaise AT&T) |
countryIso | string | "" | ISO country code (jaise us) — apne aap lowercase ho jaata hai |
mcc | string | "" | Mobile Country Code (jaise 310) |
mnc | string | "" | Mobile Network Code (jaise 410) |
operatorCode | string | "" | Operator code = mcc + mnc (jaise 310410) |
phoneNumber | string | "" | Phone number |
iccid | string | "" | SIM serial number (ICCID) |
imsi | string | "" | IMSI |
networkType | string | "" | Network type — sirf: LTE, NR 5G, WCDMA, GSM |
networkType sirf ye values accept karta hai:
| Value | Network tier |
|---|---|
NR 5G | 5G |
LTE | 4G |
WCDMA | 3G |
GSM | 2G |
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e sim '{"enabled":true,"simCards":[{"slotIndex":0,"carrierName":"AT&T","countryIso":"us","mcc":"310","mnc":"410","operatorCode":"310410","networkType":"LTE"},{"slotIndex":1,"carrierName":"T-Mobile","countryIso":"us","mcc":"310","mnc":"260","operatorCode":"310260","networkType":"NR 5G"}]}' gmails
Default: khaali. Virtual Google accounts ki ek list — sirf @gmail.com addresses accept hote hain. Nayi list purani ko replace kar deti hai; [] usse clear kar deta hai. Andar koi : nahi hota, isliye content call chal jaata hai:
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.update --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra 'gmails:s:["[email protected]","[email protected]"]' Poora example
Shuru se ek poora setup:
# 1. create a profile — copy the returned id into <profile_id> below
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.create --extra token:s:<your_access_token> --extra name:s:Demo
# 2. add a target app
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.addApp --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra packageName:s:com.whatsapp
# 3. add the virtual Gmail accounts
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.update --extra token:s:<your_access_token> --extra id:s:<profile_id> --extra 'gmails:s:["[email protected]","[email protected]"]'
# 4. enable + set the device mock
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e deviceMock '{"enabled":true,"manufacturer":"Samsung","brand":"samsung","model":"SM-S918B","device":"dm3q","product":"dm3qxxx","board":"kalama","hardware":"qcom","buildId":"UP1A.231005.007","buildIncremental":"S918BXXU3CWK9","buildType":"user","buildTags":"release-keys","buildFingerprint":"samsung/dm3qxxx/dm3q:14/UP1A.231005.007/S918BXXU3CWK9:user/release-keys","deviceName":"Galaxy S23 Ultra"}'
# 5. enable + set the SIM mock (two cards, full fields)
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e sim '{"enabled":true,"simCards":[{"slotIndex":0,"carrierName":"AT&T","countryIso":"us","mcc":"310","mnc":"410","operatorCode":"310410","networkType":"LTE","phoneNumber":"+12025550123","iccid":"8901410123456789012","imsi":"310410123456789"},{"slotIndex":1,"carrierName":"T-Mobile","countryIso":"us","mcc":"310","mnc":"260","operatorCode":"310260","networkType":"NR 5G","phoneNumber":"+12025550456","iccid":"8901260987654321098","imsi":"310260987654321"}]}'
# 6. enable + set the proxy (tested live, ~8s)
adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e proxy '{"enabled":true,"host":"10.0.0.1","port":1080,"protocol":"SOCKS5"}'
# 7. activate (restarts the target app)
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.setActive --extra token:s:<your_access_token> --extra id:s:<profile_id>
# 8. verify
adb shell content call --uri content://com.wowsoftware.hidemyandroid.headless --method profile.get --extra token:s:<your_access_token> --extra id:s:<profile_id> Error codes
Fail hone par aapko ok=false ke saath in error_code values mein se ek milta hai (broadcasts result=1 return karte hain):
| Code | Matlab | Fix |
|---|---|---|
UNAUTHORIZED | Token missing ya galat hai | Apni current key use karein; pakka na ho to regenerate karein |
FEATURE_DISABLED | Headless API off hai | Isse Settings → Developer → Headless API mein enable karein |
BAD_REQUEST | Galat parameter ya JSON | Required fields, valid JSON, sirf gmail, aur koi duplicate app na ho — ye check karein |
NOT_FOUND | Woh profile id maujood nahi hai | profile.list se id confirm karein |
PROXY_INVALID | Proxy live test mein fail ho gaya | Host/port/protocol/auth aur device ka internet check karein; ye save nahi hua tha |
LICENSE_EXPIRED | Premium expire ho gaya | Premium renew karein |
LICENSE_STALE | License haal hi mein online check nahi hui | Re-validate karne ke liye app ek baar kholein (lagaatar use ke liye kam se kam har 24h mein) |
INTERNAL | Internal error (I/O ya root) | Dobara try karein; check karein ki root/LSPosed theek se kaam kar rahe hain |
Tips & troubleshooting
- Broadcast kuch nahi kar raha? Pakka karein ki aapne
-p com.wowsoftware.hidemyandroidshaamil kiya hai — iske bina Android broadcasts block kar deta hai. - Koi value
:ke baad kat gayi? Us value mein colon hai, isliyecontent callne usse truncate kar diya. IsseHEADLESS_UPDATEbroadcast ke through bhejein. - JSON broadcast apply nahi ho raha (aksar Windows par)? Desktop shell aur device shell, dono mein
am broadcastJSON (hookFlags,proxy,deviceMock,sim) ke quotes aasaani se hat jaate hain, jisseamvalue ko galat padh leta hai (ho sakta hai wohdat=…data URI ban jaaye) aur kuch nahi badalta. Pakka tareeka ye hai ki JSON ko command line se bahar rakhein — poore workflow ko ek.shfile mein daalein (single quotes har JSON ko intact rakhte hain), phir usse device par push karke chalayein. Script device par chalti hai, isliye woh nayi profile id bhi capture karke dobara use kar sakti hai:bashphir usse device par push karke chalayein:# setup.sh — the full example as one runnable script (runs on the device) URI=content://com.wowsoftware.hidemyandroid.headless PKG=com.wowsoftware.hidemyandroid K=<your_access_token> # 1. create a profile and capture its id ID=$(content call --uri $URI --method profile.create --extra token:s:$K --extra name:s:Demo | grep -o '"id":"[^"]*"' | head -n1 | sed 's/.*"id":"//;s/"//') echo "profile id: $ID" # 2. add a target app content call --uri $URI --method profile.addApp --extra token:s:$K --extra id:s:$ID --extra packageName:s:com.facebook.katana # 3. add the virtual Gmail accounts content call --uri $URI --method profile.update --extra token:s:$K --extra id:s:$ID --extra 'gmails:s:["[email protected]","[email protected]"]' # 4. enable + set the device mock am broadcast -a $PKG.HEADLESS_UPDATE -p $PKG -e token $K -e id $ID -e deviceMock '{"enabled":true,"manufacturer":"Samsung","brand":"samsung","model":"SM-S918B","device":"dm3q","product":"dm3qxxx","board":"kalama","hardware":"qcom","buildId":"UP1A.231005.007","buildIncremental":"S918BXXU3CWK9","buildType":"user","buildTags":"release-keys","buildFingerprint":"samsung/dm3qxxx/dm3q:14/UP1A.231005.007/S918BXXU3CWK9:user/release-keys","deviceName":"Galaxy S23 Ultra"}' # 5. enable + set the SIM mock (two cards) am broadcast -a $PKG.HEADLESS_UPDATE -p $PKG -e token $K -e id $ID -e sim '{"enabled":true,"simCards":[{"slotIndex":0,"carrierName":"AT&T","countryIso":"us","mcc":"310","mnc":"410","operatorCode":"310410","networkType":"LTE","phoneNumber":"+12025550123","iccid":"8901410123456789012","imsi":"310410123456789"},{"slotIndex":1,"carrierName":"T-Mobile","countryIso":"us","mcc":"310","mnc":"260","operatorCode":"310260","networkType":"NR 5G","phoneNumber":"+12025550456","iccid":"8901260987654321098","imsi":"310260987654321"}]}' # 6. enable + set the proxy (tested live, ~8s) am broadcast -a $PKG.HEADLESS_UPDATE -p $PKG -e token $K -e id $ID -e proxy '{"enabled":true,"host":"10.0.0.1","port":1080,"protocol":"SOCKS5"}' # 7. activate (restarts the target app) content call --uri $URI --method profile.setActive --extra token:s:$K --extra id:s:$ID # 8. verify content call --uri $URI --method profile.get --extra token:s:$K --extra id:s:$IDbashPlainadb push setup.sh /data/local/tmp/setup.sh adb shell sh /data/local/tmp/setup.shcontent callcommands (bina JSON ke) bina script ke seedha type kiye ja sakte hain. Git Bash mein,adblines ke aageMSYS_NO_PATHCONV=1lagayein taaki device ka path re-write na ho. - Changes dikhe nahi? Target app ko restart hona zaroori hai — profile activate karne par ye apne aap ho jaata hai.
- Jis proxy par aapko bharosa hai uske liye
PROXY_INVALID? Test ke liye device ko internet chahiye, jo ~8s tak limited hai, isliye slow proxy timeout ho sakta hai.