HideMyAndroid Headless API

HideMyAndroid ko poori tarah ADB ya kisi bhi automation tool se control karein — app khole bina profiles create, configure aur activate karein. Premium, app 1.2.8+.

Aakhri baar update kiya: June 2026

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 devices usse 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 haiadb 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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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:false waala config store to hota hai par inert rehta hai — values save ho jaati hain taaki aap baad mein isse on kar sakein, lekin enabled:true hone tak kuch spoof nahi hota. Geo spoofing (hook_geo_*) ke liye ek aisa proxy chahiye jo enabled:true ho 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 165535
protocol string HTTP HTTP, SOCKS4, ya SOCKS5
username string "" Auth (optional)
password string "" Auth (optional)
bash
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
bash
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
bash
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:

bash
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:

bash
# 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.hidemyandroid shaamil kiya hai — iske bina Android broadcasts block kar deta hai.
  • Koi value : ke baad kat gayi? Us value mein colon hai, isliye content call ne usse truncate kar diya. Isse HEADLESS_UPDATE broadcast ke through bhejein.
  • JSON broadcast apply nahi ho raha (aksar Windows par)? Desktop shell aur device shell, dono mein am broadcast JSON (hookFlags, proxy, deviceMock, sim) ke quotes aasaani se hat jaate hain, jisse am value ko galat padh leta hai (ho sakta hai woh dat=… data URI ban jaaye) aur kuch nahi badalta. Pakka tareeka ye hai ki JSON ko command line se bahar rakhein — poore workflow ko ek .sh file 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:
    bash
    # 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:$ID
    phir usse device par push karke chalayein:
    bash
    adb push setup.sh /data/local/tmp/setup.sh
    adb shell sh /data/local/tmp/setup.sh
    Plain content call commands (bina JSON ke) bina script ke seedha type kiye ja sakte hain. Git Bash mein, adb lines ke aage MSYS_NO_PATHCONV=1 lagayein 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.
Download