API
API priročnik
Popoln priročnik po posameznih končnih točkah za REST API mobileproxy.app. Vsaka pot, polje in primer tukaj zrcali živi dokument OpenAPI, na katerem temelji API. Osnovni naslov URL je https://mobileproxy.app/api/v1.
Preverjanje pristnosti in osnovni URL
Vsaka končna točka je pod https://mobileproxy.app/api/v1 in zahteva žeton nosilca. Ustvarite ga v nadzorni plošči pod Za razvijalce → API žetoni ali z POST /tokens, ko ste prijavljeni. Skrivnost je prikazana enkrat — shranite jo. Pošljite jo ob vsakem zahtevku:
Authorization: Bearer mpx_live_…Žetoni, ki se začnejo z mpx_live_, so vaši računski žetoni. Končne točke /device/* kliče sama aplikacija Android in se overi z žetonom naprave za posamezni telefon (mpxdev_…), izdanim ob seznanjanju — običajno jih nikoli ne kličete sami.
Napake so v obliki JSON s človeku razumljivim sporočilom in strojno kodo:
{ "error": "No such device.", "code": "not_found" }| Polje | Tip | Opis |
|---|---|---|
| 401 | unauthorized | Žeton manjka, je napačno oblikovan ali preklican. |
| 403 | forbidden | Žeton je veljaven, a nima dovoljenja. |
| 404 | not_found | Vir na tem računu ne obstaja. |
| 502 | control_plane_unavailable | Prehod/nadzorna ravnina je za trenutek nedosegljiv — poskusite znova. |
Račun
GET /me — kdo sem? Vrne račun ter žive števce naročnin in API žetonov.
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" }Naročnine
Naročnina (id sub_…) je trajno mesto, ki ga imate v lasti: njeno prijazno ime name, nastavitve in proxyji ostanejo, tudi ko se telefon pod njo spremeni. Njena device je telefon, ki jo trenutno poganja (ali null, kadar ni seznanjena), in je zamenljiv — zamenjava ohrani vsako proxy končno točko.
Naštejte naročnine — vsaka s svojo seznanjeno napravo, združeno z živim stanjem prehoda (online = proxy tunel deluje):
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": "…" } } ] }Ustvarite naročnino (neseznanjena), nato seznanite ali zamenjajte telefon. POST /subscriptions/{id}/pair vrne PIN, veljaven ~3 minute; vnesen v aplikaciji Android poveže telefon. Na mestu, ki že ima napravo, je to zamenjava (mode: "swap") — stari telefon se upokoji, vsak proxy pa ohrani svoj host:port in poverilnice:
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": "…" }, … }Pridobite, posodobite ali prekličite eno naročnino. POST spremeni ime, prosto oblikovan opis description (največ 200 znakov, null ga počisti), nastavitev wifi_split (uvrščena v čakalno vrsto za seznanjeni telefon, uveljavljena ob njegovi naslednji poizvedbi ~25 s) ali shared_speed_kbps — kako se napravina hitrost razdeli med njenimi proxyji. -1 (priporočeno) jo deli samodejno: nadzorna ravnina izmeri resnično hitrost naprave iz živega prometa (~3 s uravnoteženje), proxyji, ki so hkrati zasedeni, se približajo enakim deležem, proxy, ki dela sam, pa dobi polno hitrost. Vrednost > 0 na enak način razdeli ta fiksni skupni znesek naprave. Vrednosti speed_limit_kbps za posamezne proxyje se ohranijo, a se med delovanjem katerega koli od obeh ne uveljavljajo; 0 izklopi deljenje. DELETE podre napravo in proxyje, sprosti vrata prehoda in izbriše zgodovino mesta — nepovratno:
# 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" }Proxyji
Proxy je ena končna točka enega protokola (SOCKS5 ali HTTP) na napravi, z lastno avtentikacijo, belim seznamom izvornih IP, omejitvijo hitrosti in pravili za domene. Koliko jih naprava lahko streže hkrati, je pravica plana (10 na Standard, 20 na Pro) — ustvarite enega na stranko ali orodje in prekličite katerega koli, ne da bi se dotaknili ostalih. Ustvarjanje čez zgornjo mejo plana vrne 409 proxy_limit_reached.
Ustvarite proxy — skuje svežega uporabnika/geslo; geslo je tukaj vrnjeno v čistopisu enkrat. Izberite protocol (socks5 ali http) in po želji podajte traffic_limit_bytes, da mu takoj od začetka določite trdo omejitev prometa:
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": "…" }endpoint je URI IPv4, endpoint_ipv6 pa ista vrata prek IPv6 (literal v6 je v oglatih oklepajih, skladno s sintakso URL). Beli seznam izvornih IP sprejema naslove in CIDR-je IPv4 in IPv6, cilji pa so lahko prav tako IPv6: SOCKS5 CONNECT na literal IPv6 ali domeno samo z zapisom AAAA izstopi prek operaterjevega IPv6 telefona, kadar ga SIM ima.Uredite politiko proxyja — način avtentikacije, beli seznam IP, omejitev hitrosti in pravila za domene, uveljavljena v živo na prehodu (protocol je fiksen — namesto tega izbrišite in znova ustvarite):
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"] }'Naštejte proxyje — na eni napravi ali vsak proxy na celotnem računu:
# 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… }, … ] }Prekličite proxy — takoj ustavi tega enega poslušalca; vsak drug proxy na napravi deluje naprej:
curl -X DELETE \
https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
-H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "acc_5f734b9270e8" }Omejitve porabe in potek za posamezni proxy
Kateremu koli proxyju dodelite omejitev porabe — idealno, kadar preprodajate dostop in vsaki stranki merite podatkovno kvoto. Nastavite ali spremenite jo kadar koli (0 jo počisti), ob ustvarjanju, prek PATCH ali z namensko končno točko spodaj. Ko bytes_used doseže mejo, je proxy blokiran: obdrži svoja vrata in poverilnice, a zavrne vsak zahtevek, over_limit pa postane true. Zvišajte omejitev nad porabljeno količino — ali jo počistite — in proxy se takoj nadaljuje, ista končna točka, brez ponovne nastavitve. Naštevanje proxyjev prav tako poroča o traffic_limit_bytes, živem bytes_used in over_limit za vsakega.
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 }Časovno omejen potek — proxyju dodelite trenutek expires_at (ISO 8601, v prihodnosti) ob ustvarjanju ali prek PATCH; null počisti čakajoči potek. V tistem trenutku je proxy upokojen — trajno, drugače kot povratna blokada zaradi omejitve porabe. Za obnovo stranke ustvarite svež proxy (nova vrata in poverilnice). Popolno za prodajo dnevnih/tedenskih vozovnic:
# 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 removeKonfiguracije VPN (WireGuard in OpenVPN)
Kateri koli proxy spremenite v VPN za celotno napravo. Vsaka konfiguracija je datoteka WireGuard (.conf) ali OpenVPN (.ovpn), ki celotno napravo — telefon, prenosnik, usmerjevalnik — tunelira skozi operaterjev mobilni naslov IP tega proxyja. Proxy ima lahko po 1 od vsake vrste — eno konfiguracijo WireGuard in eno OpenVPN. Konfiguracije zahtevajo proxy SOCKS5 + uporabnik/geslo, da se prehod lahko overi pri njem. Ustvarjanje konfiguracije zahteva dodatek VPN na naročilu naprave (403 vpn_addon_required brez njega) — obstoječe konfiguracije ostanejo naštete, prenosljive in preklicljive.
config_text — celotno datoteko, ki vsebuje odjemalčev zasebni ključ / potrdilo. Ni jo mogoče ponovno izpeljati; shranite jo ob ustvarjanju. Popolnoma isto datoteko lahko kadar koli znova prenesete s končne točke /file, izgubljeno datoteko pa je mogoče nadomestiti le tako, da jo prekličete in ustvarite novo konfiguracijo.# 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_…"Datoteko uporabite kot običajno: wg-quick up ./mpx-9f2c1a0b.conf za WireGuard ali uvozite .ovpn v kateri koli odjemalec OpenVPN. Ves promet naprave nato izstopi skozi operaterjev naslov IP telefona, rotacija naslova IP tega proxyja pa zavrti tudi izhod VPN.
Rotacija IP
Rotacija operaterja prosi za svež naslov IP. Deluje za posamezno napravo — vsak proxy na napravi dobi nov naslov IP — uvrščena je v čakalno vrsto za telefon in uveljavljena v enem ciklu poizvedbe (~25 s).
exit_ip na napravi ali iz /ip-history.Zavrti zdaj — uvrsti enkratno rotacijo v čakalno vrsto:
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; …" }Rotacija do edinstvenega IP — podajte unique: true, da se vrti, dokler izhodni naslov IP ni tak, ki ni bil viden v zadnjih window_min minutah zgodovine IP te naročnine (privzeto 60, največ 1440), pri čemer poskusi do max_attempts-krat (privzeto 3, največ 5). Vsak poskus stane celoten cikel rotacije (~30–90 s); za napredek poizvedujte različico GET. Operaterji lahko upravičeno znova izdajo naslov IP, zato je exhausted možen pošten izid:
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", … }Povezave za rotacijo — URL z žetonom, ki ob pridobitvi zavrti napravin naslov IP, brez glave za avtentikacijo (skrivnost je žeton). Prilepite jo v katero koli orodje, ki podpira »rotacijski URL«. Naštejte, ustvarite in prekličite jih:
# 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" }Načrtovana (časovna) rotacija — nastavite interval samodejne rotacije v minutah (0 jo izklopi; največ 1440). Ostane kot rotation_interval_min na napravi in potisne ukaz set_rotation_interval, ki ga telefon uveljavi ob naslednji poizvedbi, tako da sam znova kliče v tem ritmu:
# 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" }Časovna omejitev letalskega načina — kako dolgo telefon drži letalski način VKLOPLJEN ob vsaki spremembi naslova IP (airplane_seconds, 3–60, privzeto 5). Nekateri operaterji sprostijo star zakup šele po daljšem držanju; zvišajte to, če rotacije vračajo isti naslov IP. Velja za načrtovane rotacije, rotacije z nadzorne plošče in prek API-ja enako:
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" }Poljuben DNS — razreševalniki, ki jih telefon uporablja za proxy poizvedbe domen (do 3 literali IP; telefon uporabi prvega in znova vzpostavi svoj tunel). Prazen seznam obnovi privzeti DNS operaterja:
# 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" }Spremljanje
Zgodovina izhodnih IP — nedavni izhodni naslovi IP, ki jih poroča telefon, brez podvojitev (nova vrstica le, ko se naslov IP dejansko spremeni). Zanesljiv način za preverjanje, ali je rotacija uspela:
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": "…" }, … ] }Neobvezni parametri poizvedbe: from/to (ISO 8601) omejita okno, limit omeji vnose (privzeto 50, največ 500), group=day pa namesto tega vrne število sprememb na dan — podajte tz kot vaš odmik od UTC v minutah, da so dnevi razvrščeni v vašem časovnem pasu. To poganja koledar zgodovine IP na nadzorni plošči:
# 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 } ] }Opozorila IP — strežnik nadzira vašo floto (~vsakih 60 s) in odpre opozorilo, ko je nekaj potrebno pozornosti: stale_ip, ko je naprava povezana, a se njen izhodni naslov IP ni spremenil dlje od praga naročnine (nastavite stale_ip_alert_minutes na /rotation; 0 = izklop, 2–10080), in duplicate_ip, ko dve vaši napravi poročata isti izhodni naslov IP (operaterjev NAT lahko dodeli dvema SIM-oma en naslov — zavrtite enega, da ju ločite). Opozorila se samodejno razrešijo, ko pogoj mine; prikažejo se tudi v zvončku za opozorila na nadzorni plošči:
# 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 }Promet za napravo — bajti, prešteti na prehodu, razdeljeni po posameznih proxyjih. Priročno za obračun strankam, ki jim preprodajate:
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 } ] }Dnevna razčlenitev prometa — poslani/prejeti bajti na dan, iz vzorcev z minutno ločljivostjo, hranjenih na spletni ravni, tako da niz preživi zamenjave naprav in upokojitev proxyjev. data_since označuje najstarejši vzorec — dnevi pred njim nimajo podatkov, kar ni isto kot nič prometa. Podajte tz (vaš odmik od UTC v minutah), da so dnevi razvrščeni v vašem časovnem pasu; okna do 92 dni:
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 } }Dnevni čas delovanja — sekunde delovanja/nedelovanja na dan, zložene iz zapisa srčnega utripa naprave (poenoteno prek zamenjav naprav). Meri živost srčnega utripa naprave (ritem ~25 s, prag vrzeli ~90 s), ne uporabnosti tunela od konca do konca. current je stanje prav zdaj; uptime_pct zajema opazovani del vsakega dne:
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 } ] }Poraba za celoten račun — povzetek prek vseh naprav:
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
Prejeti SMS — dohodna sporočila na SIM-u tega telefona, najnovejša najprej. Uporabno za branje enkratnih potrditvenih kod (OTP) na telefonih, ki jih imate v lasti. Zanaša se na neobvezno dovoljenje aplikacije za prejemanje SMS; če je bilo to na napravi zavrnjeno, seznam ostane prazen:
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" }, … ] }Strežniki
Lokacije prehodov — lokacije, s katerih so postrežani vaši proxyji:
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 žetoni
Naštejte, ustvarite in prekličite API žetone. Skrivnost novo ustvarjenega žetona je prikazana enkrat — shranite jo takoj; nikoli je ni več mogoče pridobiti. Preklic začne veljati takoj:
# 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" }Ključi z obsegom in samo za branje
Prenesite dostop, ne da bi delili svoj račun. Podajte subscription_id, da žeton omejite na eno samo naročnino, in readonly: true, da ga omejite na zahtevke GET. Žeton z obsegom lahko doseže le lastne končne točke te naročnine (in /me); žeton samo za branje je zavrnjen ob vsakem pisanju. Oboje sta omejitvi, naloženi na vaš račun — ključ z obsegom nikoli ne more doseči podatkov drugega računa.
# 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)