mobileproxy.app

API

API hivatkozás

Teljes, végpontonkénti hivatkozás a mobileproxy.app REST API-hoz. Minden itt szereplő útvonal, mező és példa az élő OpenAPI-dokumentumot tükrözi, amelyből az API épül. Alap-URL: https://mobileproxy.app/api/v1.

Hitelesítés és alap-URL

Minden végpont a https://mobileproxy.app/api/v1 alatt található, és bearer tokent igényel. Hozzon létre egyet a vezérlőpulton a Fejlesztőknek → API tokenek alatt, vagy a POST /tokens hívással, miközben be van jelentkezve. A titkos kulcs csak egyszer jelenik meg — mentse el. Küldje el minden kérésnél:

Authorization: Bearer mpx_live_…

Az mpx_live_ előtaggal kezdődő tokenek a fiók tokenjei. A /device/* végpontokat maga az Android alkalmazás hívja, és egy telefononkénti eszköztokennel (mpxdev_…) hitelesítenek, amelyet a párosításkor bocsátanak ki — ezeket normál esetben soha nem hívja.

Próbálja ki élőben
Az interaktív konzol lehetővé teszi, hogy beillesszen egy tokent, és a böngészőből meghívjon minden végpontot — kérés-törzsekkel és valós válaszokkal. A nyers specifikáció itt található: /api/v1/openapi.json.

A hibák JSON formátumúak, emberi olvasásra szánt üzenettel és gépi kóddal:

{ "error": "No such device.", "code": "not_found" }
MezőTípusLeírás
401unauthorizedA token hiányzik, hibás formátumú vagy visszavonták.
403forbiddenA token érvényes, de nincs engedélyezve.
404not_foundAz erőforrás nem létezik ezen a fiókon.
502control_plane_unavailableAz átjáró/vezérlősík rövid ideig elérhetetlen — próbálja újra.

Fiók

GET /me — ki vagyok? Visszaadja a fiókot, valamint az előfizetések és API tokenek élő számát.

curl https://mobileproxy.app/api/v1/me \
     -H "Authorization: Bearer mpx_live_…"

# → { "id": "u_8c31f0", "email": "[email protected]",
#     "created_at": "2026-06-28T14:02:11.000Z",
#     "subscriptions": 3, "api_tokens": 2,
#     "plan": "beta", "balance": "0.00" }

Előfizetések

Egy előfizetés (azonosító sub_…) az Ön tulajdonában lévő tartós hely: barátságos name neve, beállításai és proxyi megmaradnak, akkor is, ha az alatta lévő telefon változik. A device az a telefon, amely éppen működteti (vagy null, ha nincs párosítva), és cserélhető — a csere minden proxy-végpontot megtart.

Előfizetések listázása — mindegyik a párosított eszközével, az élő átjáróállapottal összefésülve (online = a proxyalagút fenn van):

curl https://mobileproxy.app/api/v1/subscriptions \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscriptions": [ {
#     "id": "sub_760c1fc8ddab", "name": "Paris SFR",
#     "status": "active", "wifi_split": true, "created_at": "…",
#     "device": { "id": "phone_ac862619408e", "model": "Galaxy S8",
#                 "hardware_id": "352091081234567", "hardware_type": "imei",
#                 "status": "online", "exit_ip": "77.136.66.63",
#                 "carrier": "SFR", "last_seen": "…", "paired_at": "…" } } ] }

Hozzon létre egy előfizetést (párosítatlan), majd párosítsa vagy cserélje a telefont. A POST /subscriptions/{id}/pair egy ~3 percig érvényes PIN-t ad vissza; az Android alkalmazásban megadva összeköti a telefont. Egy olyan helyen, amelynek már van eszköze, ez egy csere (mode: "swap") — a régi telefon kivonásra kerül, és minden proxy megtartja a host:port címét és hitelesítő adatait:

curl -X POST https://mobileproxy.app/api/v1/subscriptions \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" -d '{ "name": "Paris SFR" }'
# → { "id": "sub_760c1fc8ddab", "status": "unpaired", "device": null, … }

# Pair (or swap) a phone into it
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/pair \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "mode": "new",
#     "pairing": { "pin": "483-119-702", "expires_at": "…" }, … }

Egy előfizetés lekérése, frissítése vagy lemondása. A POST módosítja a nevet, egy szabad szöveges description leírást (max. 200 karakter, a null törli), a wifi_split beállítást (a párosított telefonhoz kerül sorba, a következő lekérdezésekor ~25 mp alatt lép érvénybe) vagy a shared_speed_kbps értéket — azt, hogyan oszlik meg az eszköz sebessége a proxyi között. A -1 (ajánlott) automatikusan osztja meg: a vezérlősík a valós átviteli sebességből méri az eszköz tényleges sebességét (~3 mp-es kiegyensúlyozás), az egyszerre foglalt proxyk annak egyenlő arányaihoz konvergálnak, és egy egyedül dolgozó proxy teljes sebességet kap. Egy 0-nál nagyobb érték ehelyett ezt a fix eszközösszeget osztja fel ugyanígy. A proxyonkénti speed_limit_kbps értékek megmaradnak, de nem érvényesülnek, amíg bármelyik be van kapcsolva; a 0 kikapcsolja a megosztást. A DELETE lebontja az eszközét és proxyit, felszabadítja az átjáróportokat, és törli a hely előzményeit — visszafordíthatatlan:

# Fetch one subscription
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…"

# Rename / describe / set Wi-Fi split / share the device's speed equally (auto)
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "Paris SFR", "description": "Client X — farm slot 2", "wifi_split": true, "shared_speed_kbps": -1 }'

# Cancel (irreversible)
curl -X DELETE https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "sub_760c1fc8ddab" }

Proxyk

Egy proxy egyetlen egyprotokollos végpont (SOCKS5 vagy HTTP) egy eszközön, saját hitelesítéssel, forrás-IP-fehérlistával, sebességkorláttal és domainszabályokkal. Hogy egy eszköz egyszerre hányat szolgálhat ki, az csomagjogosultság (Standard csomagon 10, Pro csomagon 20) — készítsen egyet ügyfelenként vagy eszközönként, és bármelyiket visszavonhatja a többi érintése nélkül. A csomag felső korlátján túli létrehozás 409 proxy_limit_reached hibát ad.

Egy eszköz proxyi osztoznak az IP-jén
Egy eszköz minden proxyja ugyanazon a szolgáltatói IP-n lép ki, és együtt rotálódnak — egy második proxy létrehozása egy második hitelesítő adatot és szabályzatot ad, nem egy második IP-t. Egy másik IP-hez párosítson egy másik telefont.

Hozzon létre egy proxyt — friss felhasználónevet/jelszót készít; a jelszó egyszer, itt, nyílt szövegben jelenik meg. Válasszon protocol értéket (socks5 vagy http), és opcionálisan adja át a traffic_limit_bytes értéket, hogy kezdettől kemény forgalmi korlátot adjon neki:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "protocol": "socks5", "traffic_limit_bytes": 5368709120 }'

# → { "id": "acc_5f734b9270e8", "subscription_id": "sub_760c1fc8ddab",
#     "protocol": "socks5",
#     "host": "173.249.36.102", "host_v6": "2a02:c207:2319:6018::1",
#     "port": 30000,
#     "username": "u04c770", "password": "k7Qp2mXe9wZ4",
#     "endpoint": "socks5h://u04c770:[email protected]:30000",
#     "endpoint_ipv6": "socks5h://u04c770:k7Qp2mXe9wZ4@[2a02:c207:2319:6018::1]:30000",
#     "ip_whitelist": [], "speed_limit_kbps": 0,
#     "domain_mode": "none", "domain_rules": [],
#     "status": "active", "traffic_limit_bytes": 5368709120, "bytes_used": 0,
#     "over_limit": false, "created_at": "…" }
Minden proxyport kétveremes (IPv4 + IPv6)
Csatlakozzon bármelyik családon — az endpoint az IPv4 URI, az endpoint_ipv6 ugyanaz a port IPv6-on (a v6 literál szögletes zárójelben, az URL-szintaxis szerint). A forrás-IP-fehérlista elfogad IPv4- és IPv6-címeket és CIDR-eket, és a célok is lehetnek IPv6-osak: egy SOCKS5 CONNECT egy IPv6 literálhoz vagy egy csak AAAA-domainhez a telefon szolgáltatói IPv6-ján lép ki, ha a SIM-nek van ilyen.

Egy proxy szabályzatának szerkesztése — hitelesítési mód, IP-fehérlista, sebességkorlát és domainszabályok, élőben alkalmazva az átjárón (a protocol rögzített — helyette törölje és hozza létre újra):

curl -X PATCH \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "speed_limit_kbps": 2000,
        "domain_mode": "whitelist", "domain_rules": ["api.example.com"] }'

Proxyk listázása — egy eszközön, vagy minden proxy a teljes fiókon:

# One device
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…"

# Account-wide
curl https://mobileproxy.app/api/v1/proxies \
     -H "Authorization: Bearer mpx_live_…"
# → { "proxies": [ { …Proxy… }, … ] }

Egy proxy visszavonása — azonnal leállítja azt az egy figyelőt; az eszközön lévő minden más proxy tovább működik:

curl -X DELETE \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "acc_5f734b9270e8" }

Proxyonkénti felhasználási korlátok és lejárat

Adjon bármely proxynak felhasználási korlátot — ideális, amikor hozzáférést értékesít tovább, és minden ügyfelet egy adatkeretre mér. Állítsa be vagy módosítsa bármikor (a 0 törli), létrehozáskor, PATCH-csel vagy az alábbi dedikált végponttal. Amikor a bytes_used eléri a korlátot, a proxy letiltásra kerül: megtartja a portját és hitelesítő adatait, de minden kérést elutasít, és az over_limit true-ra vált. Emelje a korlátot a felhasznált mennyiség fölé — vagy törölje —, és a proxy azonnal folytatja, ugyanazon a végponton, újrakonfigurálás nélkül. A proxyk listázása mindegyik traffic_limit_bytes értékét, élő bytes_used értékét és over_limit értékét is jelenti.

curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/limit \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "traffic_limit_bytes": 10737418240 }'   # 10 GB — or 0 to remove
# → { "proxy_id": "acc_5f734b9270e8", "subscription_id": "sub_760c1fc8ddab",
#     "traffic_limit_bytes": 10737418240, "over_limit": false }

Idő alapú lejárat — adjon egy proxynak expires_at időpontot (ISO 8601, a jövőben) létrehozáskor vagy PATCH-csel; a null törli a függőben lévő lejáratot. Abban a pillanatban a proxy kivonásra kerül — véglegesen, ellentétben a visszafordítható felhasználási korlát általi letiltással. Egy ügyfél megújításához hozzon létre egy friss proxyt (új port és hitelesítő adatok). Tökéletes napi/heti bérletek értékesítéséhez:

# A proxy that stops serving in 7 days
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "protocol": "socks5", "expires_at": "2026-07-13T09:00:00Z" }'

# Extend or clear it later
curl -X PATCH \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "expires_at": "2026-07-20T09:00:00Z" }'   # or null to remove

VPN-konfigurációk (WireGuard és OpenVPN)

Alakítson bármely proxyt teljes eszközös VPN-né. Minden konfiguráció egy WireGuard (.conf) vagy OpenVPN (.ovpn) fájl, amely egy egész eszközt — telefont, laptopot, routert — az adott proxy mobilszolgáltatói IP-jén keresztül alagutaz. Egy proxynak mindegyikből 1 lehet — egy WireGuard és egy OpenVPN konfiguráció. A konfigurációk SOCKS5 + felhasználónév/jelszó proxyt igényelnek, hogy az átjáró hitelesíteni tudjon felé. Egy konfiguráció létrehozásához a VPN-kiegészítő szükséges az eszköz rendelésén (enélkül 403 vpn_addon_required) — a meglévő konfigurációk listázva, letölthetők és visszavonhatók maradnak.

A fájl egyszer jelenik meg
Egy létrehozásra adott válasz tartalmazza a config_text értéket — a teljes fájlt, amely a kliens privát kulcsát / tanúsítványát tartalmazza. Nem származtatható újra; mentse el, amikor létrehozza. Ugyanazt a fájlt bármikor újra letöltheti a /file végpontról, de egy elveszett fájl csak úgy pótolható, ha visszavonja és új konfigurációt hoz létre.
# Create a WireGuard config on a proxy
curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "kind": "wireguard", "name": "My laptop" }'
# → { "id": "vpn_9f2c1a0b7e", "kind": "wireguard", "client_ip": "10.77.0.2",
#     "config_text": "[Interface]\nPrivateKey = …\n[Peer]\n…", … }

# ...or OpenVPN
curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
  -H "Authorization: Bearer mpx_live_…" -H "Content-Type: application/json" \
  -d '{ "kind": "openvpn" }'

# List a proxy's configs (metadata + per-kind usage vs the 1-per-kind cap)
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
     -H "Authorization: Bearer mpx_live_…"

# Re-download the file straight to disk
curl -OJ \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs/vpn_9f2c1a0b7e/file \
  -H "Authorization: Bearer mpx_live_…"

# Revoke (drops the WireGuard peer / OpenVPN cert and kills any live session)
curl -X DELETE \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs/vpn_9f2c1a0b7e \
  -H "Authorization: Bearer mpx_live_…"

Használja a fájlt a szokásos módon: wg-quick up ./mpx-9f2c1a0b.conf a WireGuardhoz, vagy importálja a .ovpn-t bármely OpenVPN kliensbe. Az eszköz minden forgalma ezután a telefon szolgáltatói IP-jén lép ki, és annak a proxynak az IP-jét rotálva a VPN kilépőpontja is rotálódik.

IP-rotáció

A rotáció friss IP-t kér a szolgáltatótól. Eszközszintű — az eszköz minden proxyja megkapja az új IP-t —, a telefonhoz kerül sorba, és egy lekérdezési cikluson belül (~25 mp) lép érvénybe.

Legjobb szándékú a mobilhálózatokon
Hogy egy újratárcsázás új címet eredményez-e, az a szolgáltatón múlik — egyesek ugyanazt az IP-t osztják ki gyors újratárcsázáskor. Erősítse meg az eszköz exit_ip értékéből vagy az /ip-history-ból.

Rotálás most — egy egyszeri rotáció sorba állítása:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…"

# → { "status": "rotating", "subscription_id": "sub_760c1fc8ddab",
#     "command_id": "cmd_a41b",
#     "note": "IP rotation on mobile networks is best-effort; …" }

Egyedi IP-rotáció — adja át a unique: true értéket, hogy addig rotáljon, amíg a kilépő IP olyan lesz, amely nem szerepelt ennek az előfizetésnek az IP-előzményeiben az utolsó window_min percben (alapértelmezett 60, max. 1440), legfeljebb max_attempts alkalommal próbálkozva (alapértelmezett 3, max. 5). Minden próbálkozás egy teljes rotációs ciklusba kerül (~30–90 mp); a haladáshoz kérdezze le a GET változatot. A szolgáltatók jogszerűen újra kioszthatnak egy IP-t, így az exhausted lehetséges őszinte kimenet:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "unique": true, "window_min": 60, "max_attempts": 3 }'
# → { "status": "rotating", "request_id": "rr_18d2c4", "command_id": "cmd_a41b",
#     "unique": { "window_min": 60, "max_attempts": 3 }, … }

# Poll for the outcome (active | succeeded | exhausted | superseded | expired)
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…"
# → { "request_id": "rr_18d2c4", "status": "succeeded",
#     "attempts_used": 2, "attempts_max": 3, "window_min": 60,
#     "started_ip": "77.136.66.63", "result_ip": "77.136.67.101", … }

Rotációs linkek — egy tokenizált URL, amely lekéréskor rotálja ennek az eszköznek az IP-jét, hitelesítési fejléc nélkül (a titok a token). Illessze be bármely eszközbe, amely támogatja a „rotációs URL”-t. Listázza, hozza létre és vonja vissza őket:

# List rotation links
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation-links \
     -H "Authorization: Bearer mpx_live_…"
# → { "rotation_links": [ { "token": "rk_9f2c81d4e7",
#       "url": "https://mobileproxy.app/rotate/rk_9f2c81d4e7", "created_at": "…" } ] }

# Create one
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation-links \
     -H "Authorization: Bearer mpx_live_…"
# → { "token": "rk_9f2c81d4e7", "url": "https://mobileproxy.app/rotate/rk_9f2c81d4e7" }

# Revoke one
curl -X DELETE https://mobileproxy.app/api/v1/rotation-links/ROTATION_TOKEN \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "token": "rk_9f2c81d4e7" }

Ütemezett (időzített) rotáció — állítson be automatikus rotációs intervallumot percben (a 0 kikapcsolja; max. 1440). Az eszközön rotation_interval_min-ként marad meg, és egy set_rotation_interval parancsot küld, amelyet a telefon a következő lekérdezésekor alkalmaz, így ezzel az ütemmel magától újratárcsáz:

# Read the current settings
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "interval_minutes": 0,
#     "airplane_seconds": 5, "stale_ip_alert_minutes": 0 }

# Rotate automatically every 15 minutes
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "interval_minutes": 15 }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "interval_minutes": 15, "airplane_seconds": 5,
#     "stale_ip_alert_minutes": 0, "command_id": "cmd_a41b" }

Repülőgép-üzemmód időkorlátja — mennyi ideig tartja a telefon BEKAPCSOLVA a repülőgép-üzemmódot minden IP-változás során (airplane_seconds, 3–60, alapértelmezett 5). Egyes szolgáltatók csak hosszabb tartás után adják fel a régi bérletet; emelje ezt, ha a rotációk folyton ugyanazt az IP-t adják vissza. Az ütemezett, a vezérlőpult- és az API-rotációkra egyaránt vonatkozik:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "airplane_seconds": 20 }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "interval_minutes": 15, "airplane_seconds": 20,
#     "stale_ip_alert_minutes": 0, "command_id": "cmd_b52c" }

Egyéni DNS — a feloldók, amelyeket a telefon a proxyzott domainkeresésekhez használ (legfeljebb 3 IP literál; a telefon az elsőt alkalmazza, és újratárcsázza az alagutát). Egy üres lista visszaállítja a szolgáltató alapértelmezett DNS-ét:

# Read
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/dns \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "dns_servers": [] }

# Set (and later send [] to go back to carrier DNS)
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/dns \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "dns_servers": ["1.1.1.1", "8.8.8.8"] }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "dns_servers": ["1.1.1.1", "8.8.8.8"], "command_id": "cmd_c63d" }

Felügyelet

Kilépő IP-előzmények — a telefon által jelentett legutóbbi kilépő IP-k, deduplikálva (új sor csak akkor, amikor az IP ténylegesen változott). A megbízható módja annak, hogy ellenőrizze, egy rotáció megtörtént-e:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "ip_history": [
#     { "ip": "77.136.66.63", "carrier": "SFR", "ts": "…" }, … ] }

Opcionális lekérdezési paraméterek: a from/to (ISO 8601) az ablakot határolja, a limit korlátozza a bejegyzéseket (alapértelmezett 50, max. 500), a group=day pedig ehelyett napi változásszámokat ad vissza — adja át a tz-t az UTC-eltolásaként percben, hogy a napok az Ön időzónája szerint legyenek csoportosítva. Ez hajtja a vezérlőpult IP-előzmény-naptárát:

# Entries for one day
curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history?from=2026-07-04T22:00:00Z&to=2026-07-05T22:00:00Z&limit=500" \
     -H "Authorization: Bearer mpx_live_…"

# Per-day counts for a month (tz = minutes east of UTC, e.g. 120 for CEST)
curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history?group=day&tz=120&from=2026-06-30T22:00:00Z&to=2026-07-31T22:00:00Z" \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "days": [
#     { "day": "2026-07-03", "changes": 9 }, { "day": "2026-07-05", "changes": 2 } ] }

IP-riasztások — a szerver figyeli a flottáját (~60 mp-enként), és riasztást nyit, amikor valami figyelmet igényel: stale_ip, amikor egy eszköz online, de a kilépő IP-je hosszabb ideje nem változott, mint az előfizetés küszöbértéke (állítsa be a stale_ip_alert_minutes-t a /rotation-on; 0 = ki, 2–10080), és duplicate_ip, amikor két eszköze ugyanazt a kilépő IP-t jelenti (a szolgáltatói NAT két SIM-nek adhat egy címet — rotálja az egyiket a szétválasztáshoz). A riasztások automatikusan megszűnnek, amikor a feltétel megszűnik; a vezérlőpult riasztáscsengőjében is megjelennek:

# Turn on stale-IP alerts: warn after 60 min without an IP change
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "stale_ip_alert_minutes": 60 }'

# Poll open alerts (feed this to your own monitoring)
curl https://mobileproxy.app/api/v1/alerts \
     -H "Authorization: Bearer mpx_live_…"
# → { "alerts": [
#     { "id": "42", "sub_id": "sub_760c1fc8ddab", "sub_name": "Galaxy S8",
#       "kind": "stale_ip",
#       "message": "IP unchanged for 75 min (alert threshold 60 min) — still 77.136.66.44",
#       "detail": { "ip": "77.136.66.44", "age_min": 75, "threshold_min": 60 },
#       "created_at": "…", "resolved_at": null, "seen_at": null },
#     { "id": "41", "sub_id": "sub_9d8e7f6a5b4c", "sub_name": "Galaxy A32",
#       "kind": "duplicate_ip",
#       "message": "Exit IP 77.136.67.33 is also used by “Galaxy S8” — rotate one device to separate them",
#       "detail": { "ip": "77.136.67.33",
#                   "shared_with": [ { "sub_id": "sub_760c1fc8ddab", "name": "Galaxy S8" } ] },
#       "created_at": "…", "resolved_at": null, "seen_at": null } ],
#     "unseen": 2 }

# Include resolved history; filter to one subscription
curl "https://mobileproxy.app/api/v1/alerts?status=all&subscription=SUBSCRIPTION_ID" \
     -H "Authorization: Bearer mpx_live_…"

# Reset the dashboard's unseen badge (never resolves anything)
curl -X POST https://mobileproxy.app/api/v1/alerts/seen \
     -H "Authorization: Bearer mpx_live_…"
# → { "status": "ok", "marked": 2 }

Egy eszköz forgalma — az átjárón számolt bájtok, proxyonként bontva. Hasznos a továbbértékesített ügyfelek számlázásához:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/traffic \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab",
#     "bytes_sent": 10485760, "bytes_recv": 262144000, "bytes_total": 272629760,
#     "per_proxy": [ { "proxy_id": "acc_5f734b9270e8",
#                      "bytes_sent": 10485760, "bytes_recv": 262144000 } ] }

Napi forgalmi bontás — napi elküldött/fogadott bájtok, a webes rétegen tartott perc-felbontású mintákból, így a sorozat túléli az eszközcseréket és a proxyk kivonását. A data_since jelöli a legrégebbi mintát — az azt megelőző napoknak nincs adata, ami nem ugyanaz, mint a nulla forgalom. Adja át a tz-t (az UTC-eltolása percben), hogy a napok az Ön időzónája szerint legyenek csoportosítva; legfeljebb 92 napos ablakok:

curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/traffic/by-day?tz=120" \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "tz": 120, "data_since": "…",
#     "days": [ { "day": "2026-07-06", "bytes_sent": 10485760,
#                 "bytes_recv": 262144000, "bytes_total": 272629760 } ],
#     "total": { "bytes_sent": 10485760, "bytes_recv": 262144000,
#                "bytes_total": 272629760 } }

Napi üzemidő — napi fenn/lenn másodpercek az eszköz életjel-nyilvántartásából összehajtva (az eszközcseréken átívelően egységesítve). Az eszköz életjel-elérhetőségét méri (~25 mp-es ütem, ~90 mp-es kihagyási küszöb), nem a végponttól végpontig tartó alagút használhatóságát. A current az éppen aktuális állapot; az uptime_pct az egyes napok megfigyelt részét fedi le:

curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/uptime?tz=120" \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "tz": 120, "current": "up",
#     "data_since": "…",
#     "days": [ { "day": "2026-07-06", "up_seconds": 31547,
#                 "down_seconds": 253, "uptime_pct": 99.2 } ] }

Fiókszintű felhasználás — összesítés minden eszközön:

curl https://mobileproxy.app/api/v1/usage/summary \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscriptions": 3, "proxies": 5,
#     "bytes_sent": 31457280, "bytes_recv": 786432000, "bytes_total": 817889280 }

SMS / OTP

Fogadott SMS — a telefon SIM-jén beérkező üzenetek, legújabb elöl. Hasznos egyszer használatos ellenőrző kódok (OTP-k) olvasásához az Ön tulajdonában lévő telefonokon. Az alkalmazás opcionális SMS-fogadási engedélyére támaszkodik; ha ezt elutasították az eszközön, a lista üresen marad:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/sms \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "messages": [
#     { "id": "1042", "sender": "+15550101",
#       "body": "Your verification code is 314159",
#       "received_at": "2026-07-05T14:12:00.000Z" }, … ] }

Szerverek

Átjáróhelyek — a helyek, ahonnan a proxyit kiszolgáljuk:

curl https://mobileproxy.app/api/v1/servers/locations \
     -H "Authorization: Bearer mpx_live_…"

# → { "locations": [ { "id": "eu-de-1", "host": "173.249.36.102",
#       "region": "EU · Germany (Frankfurt)", "country": "DE",
#       "protocols": ["socks5"], "pool": "mobile" } ] }

API tokenek

API tokenek listázása, létrehozása és visszavonása. Egy újonnan létrehozott token titkos kulcsa egyszer jelenik meg — mentse el azonnal; soha többé nem kérhető le. A visszavonás azonnal érvénybe lép:

# List (metadata only — never the secret)
curl https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…"
# → { "tokens": [ { "id": "tk_51ad", "name": "storefront",
#       "prefix": "mpx_live_9f2c", "created_at": "…", "last_used_at": "…" } ] }

# Create (secret shown once)
curl -X POST https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "storefront" }'
# → { "id": "tk_51ad", "name": "storefront",
#     "token": "mpx_live_9f2c81d4e7…", "prefix": "mpx_live_9f2c",
#     "scope_subscription_id": null, "readonly": false,
#     "note": "Store this token now — it will not be shown again." }

# Revoke
curl -X DELETE https://mobileproxy.app/api/v1/tokens/TOKEN_ID \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "tk_51ad" }

Hatókörös és csak olvasható kulcsok

Delegáljon hozzáférést a fiókja megosztása nélkül. Adja át a subscription_id-t, hogy egy tokent egyetlen előfizetésre korlátozzon, és a readonly: true-t, hogy GET kérésekre korlátozza. Egy hatókörös token csak az adott előfizetés saját végpontjait érheti el (plusz a /me-t); egy csak olvasható tokent bármely íráson elutasítunk. Mindkettő a fiókjára rétegzett korlátozás — egy hatókörös kulcs soha nem érheti el másik fiók adatait.

# A read-only key for ONE subscription — safe to hand a teammate or a monitor
curl -X POST https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "customer-42",
           "subscription_id": "sub_760c1fc8ddab",
           "readonly": true }'
# → { …, "scope_subscription_id": "sub_760c1fc8ddab", "readonly": true }

# With that key: a GET on its own subscription works…
curl https://mobileproxy.app/api/v1/subscriptions/sub_760c1fc8ddab/traffic \
     -H "Authorization: Bearer mpx_live_scoped…"     # 200

# …but another subscription, the account-wide list, or any write is refused.
curl -X POST https://mobileproxy.app/api/v1/subscriptions/sub_760c1fc8ddab/change-ip \
     -H "Authorization: Bearer mpx_live_scoped…"     # 401 (read-only)
Tipp
Ez a hivatkozás lépést tart az API-val. Egy böngészőhöz, amelyen átkattinthat — a saját tokenjével és élő válaszokkal —, nyissa meg az interaktív konzolt, vagy olvassa a nyers OpenAPI-dokumentumot.