mobileproxy.app

API

API referencia

Kompletná referencia REST API mobileproxy.app, endpoint po endpointe. Každá cesta, pole a príklad tu zodpovedá živému OpenAPI dokumentu, z ktorého je API postavené. Základná URL https://mobileproxy.app/api/v1.

Autentifikácia a základná URL

Každý endpoint sa nachádza pod https://mobileproxy.app/api/v1 a vyžaduje bearer token. Vytvorte ho v dashboarde v časti Pre vývojárov → API tokeny alebo pomocou POST /tokens, keď ste prihlásení. Tajný kľúč sa zobrazí iba raz — uložte si ho. Posielajte ho pri každej požiadavke:

Authorization: Bearer mpx_live_…

Tokeny začínajúce na mpx_live_ sú vaše účtové tokeny. Endpointy /device/* volá samotná aplikácia Android a autentifikujú sa pomocou device tokenu pre konkrétny telefón (mpxdev_…) vydaného pri párovaní — bežne ich sami nikdy nevoláte.

Vyskúšajte naživo
Interaktívna konzola vám umožní vložiť token a volať každý endpoint priamo z prehliadača, s telami požiadaviek a reálnymi odpoveďami. Surová špecifikácia je na /api/v1/openapi.json.

Chyby sú vo formáte JSON so zrozumiteľnou správou a strojovým kódom:

{ "error": "No such device.", "code": "not_found" }
PoleTypPopis
401unauthorizedToken chýba, je poškodený alebo bol zrušený.
403forbiddenToken je platný, ale nie je povolený.
404not_foundZdroj na tomto účte neexistuje.
502control_plane_unavailableBrána/riadiaca vrstva je krátko nedostupná — skúste znova.

Účet

GET /me — kto som? Vráti účet spolu so živými počtami predplatných a API tokenov.

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

# → { "id": "u_8c31f0", "email": "you@example.com",
#     "created_at": "2026-06-28T14:02:11.000Z",
#     "subscriptions": 3, "api_tokens": 2,
#     "plan": "beta", "balance": "0.00" }

Predplatné

Predplatné (id sub_…) je trvalý slot, ktorý vlastníte: jeho zrozumiteľný name, nastavenia a proxy pretrvávajú, aj keď sa telefón pod ním zmení. Jeho device je telefón, ktorý ho práve poháňa (alebo null, keď je nespárovaný), a je vymeniteľný — výmena zachová každý proxy endpoint.

Zobrazte predplatné — každé so spárovaným zariadením zlúčeným so živým stavom brány (online = proxy tunel je aktívny):

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": "…" } } ] }

Vytvorte predplatné (nespárované), potom spárujte alebo vymeňte telefón. POST /subscriptions/{id}/pair vráti PIN platný ~3 minúty; po zadaní v aplikácii Android naviaže telefón. Na slote, ktorý už zariadenie má, ide o výmenu (mode: "swap") — starý telefón sa vyradí a každé proxy si zachová svoj host:port aj prihlasovacie údaje:

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": "…" }, … }

Získajte, aktualizujte alebo zrušte jedno predplatné. POST mení názov, voľný description (max 200 znakov, null ho vymaže), preferenciu wifi_split (zaradenú do fronty pre spárovaný telefón, uplatnenú pri jeho ďalšom dopytovaní ~25 s) alebo shared_speed_kbps — ako sa rýchlosť zariadenia delí medzi jeho proxy. -1 (odporúčané) ju zdieľa automaticky: riadiaca vrstva meria reálnu rýchlosť zariadenia zo živej priepustnosti (~3 s prevyváženie), proxy zaťažené v rovnakom čase konvergujú k rovnakým podielom a proxy pracujúce osamote dostane plnú rýchlosť. Hodnota > 0 rozdelí tento pevný celok zariadenia rovnakým spôsobom. Hodnoty speed_limit_kbps pre jednotlivé proxy sa uchovávajú, ale pri zapnutej ktorejkoľvek z týchto možností sa nevynucujú; 0 zdieľanie vypne. DELETE zruší jeho zariadenie a proxy, uvoľní porty brány a vymaže históriu slotu — nezvratné:

# 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" }

Proxy

Proxy je jeden endpoint s jedným protokolom (SOCKS5 alebo HTTP) na zariadení, s vlastnou autentifikáciou, whitelistom zdrojových IP, limitom rýchlosti a pravidlami pre domény. Koľko ich zariadenie dokáže obsluhovať naraz, je nárok podľa plánu (10 na Standard, 20 na Pro) — vytvorte jednu pre každého zákazníka alebo nástroj a ktorúkoľvek z nich zrušte bez dotyku ostatných. Vytvorenie nad rámec limitu plánu vráti 409 proxy_limit_reached.

Proxy na zariadení zdieľajú jeho IP
Každé proxy na zariadení vystupuje cez rovnakú IP operátora a rotujú spoločne — vytvorením druhého proxy získate druhý prihlasovací údaj a politiku, nie druhú IP. Pre ďalšiu IP spárujte ďalší telefón.

Vytvorte proxy — vytvorí čerstvé používateľské meno/heslo; heslo sa v čistej podobe vráti iba raz, tu. Vyberte protocol (socks5 alebo http) a voliteľne odovzdajte traffic_limit_bytes, aby ste mu už od začiatku dali pevný limit prenosu:

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": "socks5://u04c770:k7Qp2mXe9wZ4@173.249.36.102:30000",
#     "endpoint_ipv6": "socks5://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": "…" }
Každý proxy port je dual-stack (IPv4 + IPv6)
Pripojte sa cez ktorúkoľvek rodinu — endpoint je IPv4 URI, endpoint_ipv6 je ten istý port cez IPv6 (v6 literál je v hranatých zátvorkách podľa syntaxe URL). Whitelist zdrojových IP prijíma adresy a CIDR vo formáte IPv4 aj IPv6 a cieľové adresy môžu byť tiež IPv6: SOCKS5 CONNECT na IPv6 literál alebo doménu iba s AAAA vystupuje cez IPv6 operátora telefónu, keď ho SIM má.

Upravte politiku proxy — režim autentifikácie, whitelist IP, limit rýchlosti a pravidlá pre domény, uplatnené naživo na bránu (protocol je pevný — namiesto toho ho vymažte a znova vytvorte):

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"] }'

Zobrazte proxy — na jednom zariadení alebo každé proxy naprieč celým účtom:

# 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… }, … ] }

Funkčné proxy s ich exit IP — výpis naprieč celým účtom nesie aktuálnu exit_ip každého proxy, živý stav zariadenia a verdikt working (zariadenie online, žiadna fakturačná ani manuálna blokácia, neprekročený limit prevádzky; not_working_reason hovorí, prečo nie). Filtrujte cez ?working=true a pridajte ?unique_ip=true, aby zostalo jedno proxy na každú odlišnú exit IP — dve SIM za rovnakým NAT operátora sú tiež označené cez duplicate_ip:

# Working proxies only, one per distinct exit IP — a paste-ready pool
curl "https://mobileproxy.app/api/v1/proxies?working=true&unique_ip=true" \
     -H "Authorization: Bearer mpx_live_…"
# → { "proxies": [ {
#       "endpoint": "socks5://user:pass@173.249.36.102:30012",
#       "exit_ip": "77.136.66.44", "device_status": "online",
#       "working": true, "not_working_reason": null,
#       "duplicate_ip": false, … }, … ] }

Zrušte proxy — okamžite zastaví práve tento listener; každé ostatné proxy na zariadení funguje ďalej:

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

Limity spotreby a expirácia jednotlivých proxy

Dajte ktorémukoľvek proxy limit spotreby — ideálne, keď predávate prístup ďalej a meriate každému zákazníkovi objem dát. Nastavte alebo zmeňte ho kedykoľvek (0 ho vymaže), pri vytvorení, cez PATCH alebo pomocou vyhradeného endpointu nižšie. Keď bytes_used dosiahne limit, proxy sa zablokuje: zachová si port a prihlasovacie údaje, ale odmieta každú požiadavku a over_limit sa zmení na true. Zvýšte limit nad použité množstvo — alebo ho vymažte — a proxy sa okamžite obnoví, ten istý endpoint, bez opätovnej konfigurácie. Výpis proxy tiež uvádza pre každé jeho traffic_limit_bytes, živé bytes_used a over_limit.

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 }

Časovo obmedzená expirácia — dajte proxy okamih expires_at (ISO 8601, v budúcnosti) pri vytvorení alebo cez PATCH; null zruší čakajúcu expiráciu. V tom okamihu sa proxy vyradí — natrvalo, na rozdiel od zvratného zablokovania pri limite spotreby. Ak chcete zákazníka predĺžiť, vytvorte nové proxy (nový port a prihlasovacie údaje). Ideálne na predaj denných/týždenných prístupov:

# 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 configs (WireGuard)

Turn a SOCKS5 username/password proxy into a full-device WireGuard tunnel. Each proxy can carry one WireGuard config; creation requires the VPN add-on. Legacy OpenVPN rows remain downloadable and revocable, but new OpenVPN configs cannot be provisioned.

Súbor sa zobrazí iba raz
The create response includes the full WireGuard file and its client private key. Store it securely; the same file can be downloaded later from the file endpoint.
# 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…", … }

# List a proxy's configs (metadata + usage vs the one-config 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 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_…"

Use the file with wg-quick up ./mpx-9f2c1a0b.conf or import it into a WireGuard client. Rotating the proxy also rotates the VPN exit.

Rotácia IP

Rotácia si od operátora vyžiada čerstvú IP. Je na úrovni zariadenia — každé proxy na zariadení dostane novú IP — zaradí sa do fronty pre telefón a uplatní sa v rámci jedného cyklu dopytovania (~25 s).

Podľa najlepšieho úsilia na mobilných sieťach
Či opätovné vytočenie vyprodukuje novú adresu, je na operátorovi — niektorí pri rýchlom opätovnom vytočení priradia rovnakú IP. Overte to z exit_ip na zariadení alebo z /ip-history.

Zrotovať teraz — zaraďte jednorazovú rotáciu do fronty:

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; …" }

Rotácia na unikátnu IP — odovzdajte unique: true, aby sa rotovalo ďalej, kým exit IP nebude taká, ktorá sa nevyskytla v posledných window_min minútach histórie IP tohto predplatného (predvolene 60, max 1440), s opakovaním až max_attempts-krát (predvolene 3, max 5). Každý pokus stojí celý rotačný cyklus (~30–90 s); priebeh sledujte cez variant GET. Operátori môžu legitímne priradiť IP znova, takže exhausted je možný poctivý výsledok:

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", … }

Hromadná rotácia — zrotujte každé spárované zariadenie jedným volaním pomocou all: true, alebo zvolenú množinu cez subscription_ids (jedno alebo druhé je povinné, takže poškodená požiadavka nikdy nedokáže omylom zrotovať celú vašu flotilu). Prijíma rovnaké možnosti unique ako endpoint pre jednotlivé predplatné a každé predplatné hlási vlastný výsledok — jeden blokovaný alebo nespárovaný slot nikdy nezhodí celú dávku. Vyžaduje rolu operátora pre každé predplatné:

# Rotate every paired device at once (explicit opt-in)…
curl -X POST https://mobileproxy.app/api/v1/proxies/rotate \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "all": true }'

# …or a chosen set, with the unique-IP options
curl -X POST https://mobileproxy.app/api/v1/proxies/rotate \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "subscription_ids": ["sub_760c1fc8ddab"], "unique": true }'
# → { "results": [ { "subscription_id": "sub_760c1fc8ddab",
#       "status": "rotating", "command_id": "…", "request_id": "rr_18d2c4" } ],
#     "rotating": 1, "skipped": 0, … }

Rotačné odkazy — tokenizovaná URL, ktorá pri načítaní zrotuje IP tohto zariadenia, bez autentifikačnej hlavičky (tajomstvom je token). Vložte ju do ktoréhokoľvek nástroja, ktorý podporuje „rotačnú URL“. Zobrazte, vytvárajte a rušte ich:

# 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" }

Naplánovaná (časovaná) rotácia — nastavte interval automatickej rotácie v minútach (0 ju vypne; max 1440). Pretrváva ako rotation_interval_min na zariadení a odošle príkaz set_rotation_interval, ktorý telefón uplatní pri ďalšom dopytovaní, takže sám opätovne vytáča v tejto kadencii:

# 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" }

Časový limit režimu Lietadlo — ako dlho telefón drží zapnutý režim Lietadlo počas každej zmeny IP (airplane_seconds, 3–60, predvolene 5). Niektorí operátori uvoľnia starý lease až po dlhšom držaní; zvýšte to, ak rotácie stále vracajú rovnakú IP. Platí rovnako pre naplánované, dashboard aj API rotácie:

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" }

Vlastné DNS — resolvery, ktoré telefón používa na vyhľadávanie proxovaných domén (až 3 IP literály; telefón uplatní prvý a znovu vytočí svoj tunel). Prázdny zoznam obnoví predvolené DNS operátora:

# 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" }

Monitorovanie

História exit IP — nedávne exit IP nahlásené telefónom, deduplikované (nový riadok len vtedy, keď sa IP skutočne zmenila). Spoľahlivý spôsob, ako overiť, že rotácia prebehla:

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": "…" }, … ] }

Voliteľné parametre dopytu: from/to (ISO 8601) ohraničujú okno, limit obmedzuje počet záznamov (predvolene 50, max 500) a group=day namiesto toho vráti počty zmien za deň — odovzdajte tz ako vaše UTC posunutie v minútach, aby sa dni zoskupovali vo vašej časovej zóne. Toto poháňa kalendár histórie IP v dashboarde:

# 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 upozornenia — server sleduje vašu flotilu (~každých 60 s) a otvorí upozornenie, keď niečo vyžaduje pozornosť: stale_ip, keď je zariadenie online, ale jeho exit IP sa nezmenila dlhšie než prahová hodnota predplatného (nastavte stale_ip_alert_minutes na /rotation; 0 = vypnuté, 2–10080), a duplicate_ip, keď dve vaše zariadenia nahlásia rovnakú exit IP (NAT operátora môže dvom SIM prideliť jednu adresu — jednu zrotujte, aby ste ich oddelili). Upozornenia sa vyriešia automaticky, keď stav pominie; zobrazujú sa aj v zvončeku upozornení v dashboarde:

# 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 }

Prenos pre zariadenie — bajty počítané na bráne, rozdelené podľa proxy. Praktické na fakturáciu zákazníkom, ktorým predávate prístup ďalej:

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 } ] }

Denný rozpis prenosu — odoslané/prijaté bajty za deň zo vzoriek s minútovým rozlíšením uchovávaných na webovej vrstve, takže rad prežije výmeny zariadení aj vyradenie proxy. data_since označuje najstaršiu vzorku — dni pred ňou nemajú dáta, čo nie je to isté ako nulový prenos. Odovzdajte tz (vaše UTC posunutie v minútach), aby sa dni zoskupovali vo vašej časovej zóne; okná až do 92 dní:

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 } }

Denný uptime — sekundy hore/dole za deň poskladané zo záznamu heartbeat zariadenia (zjednotené naprieč výmenami zariadení). Meria živosť heartbeatu zariadenia (kadencia ~25 s, prahová medzera ~90 s), nie použiteľnosť tunela od začiatku do konca. current je stav práve teraz; uptime_pct pokrýva pozorovanú časť každého dňa:

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 } ] }

Spotreba za celý účet — súhrn naprieč každým zariadením:

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

Prijaté SMS — prichádzajúce správy na SIM tohto telefónu, najnovšie ako prvé. Užitočné na čítanie jednorazových overovacích kódov (OTP) na telefónoch, ktoré vlastníte. Spolieha sa na voliteľné povolenie aplikácie na príjem SMS; ak bolo na zariadení zamietnuté, zoznam zostane prázdny:

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" }, … ] }

Servery

Lokality brán — lokality, z ktorých sú vaše proxy obsluhované:

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 tokeny

Zobrazte, vytvárajte a rušte API tokeny. Tajný kľúč novovytvoreného tokenu sa zobrazí raz — hneď si ho uložte; už nikdy sa nedá získať späť. Zrušenie sa prejaví okamžite:

# 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" }

Obmedzené a iba na čítanie kľúče

Delegujte prístup bez zdieľania svojho účtu. Odovzdajte subscription_id, aby ste token obmedzili na jedno predplatné, a readonly: true, aby ste ho obmedzili na požiadavky GET. Obmedzený token dosiahne iba vlastné endpointy daného predplatného (plus /me); token iba na čítanie je pri akomkoľvek zápise odmietnutý. Oba sú obmedzenia navrstvené na váš účet — obmedzený kľúč nikdy nedosiahne dáta iného účtu.

# 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)
Tip
Táto referencia zostáva v úplnom súlade s API. Ak chcete prehliadač, cez ktorý sa dá preklikať — s vaším vlastným tokenom a živými odpoveďami — otvorte interaktívnu konzolu alebo si prečítajte surový OpenAPI dokument.