mobileproxy.app

API

API atsauce

Pilnīga, galapunktu pēc galapunkta atsauce mobileproxy.app REST API. Katrs ceļš, lauks un piemērs šeit atspoguļo tiešraides OpenAPI dokumentu, no kura ir veidots API. Bāzes URL https://mobileproxy.app/api/v1.

Autentifikācija un bāzes URL

Katrs galapunkts atrodas zem https://mobileproxy.app/api/v1 un pieprasa bearer marķieri. Izveidojiet to vadības panelī sadaļā Izstrādātājiem → API marķieri vai ar POST /tokens, kad esat pierakstījies. Noslēpums tiek parādīts tikai vienreiz — saglabājiet to. Nosūtiet to katrā pieprasījumā:

Authorization: Bearer mpx_live_…

Marķieri, kas sākas ar mpx_live_, ir jūsu konta marķieri. /device/* galapunktus izsauc pati Android lietotne, un tie autentificējas ar katras ierīces marķieri (mpxdev_…), kas izsniegts savienošanas laikā — parasti jūs tos nekad neizsaucat.

Izmēģiniet tiešraidē
Interaktīvā konsole ļauj ielīmēt marķieri un izsaukt katru galapunktu no pārlūkprogrammas ar pieprasījumu ķermeņiem un reāliem atbildēm. Neapstrādātā specifikācija ir pieejama /api/v1/openapi.json.

Kļūdas ir JSON ar cilvēkam saprotamu ziņojumu un mašīnas kodu:

{ "error": "No such device.", "code": "not_found" }
LauksTipsApraksts
401unauthorizedMarķieris trūkst, ir bojāts vai atsaukts.
403forbiddenMarķieris ir derīgs, bet nav atļauts.
404not_foundResurss šajā kontā neeksistē.
502control_plane_unavailableVārteja/vadības slānis īslaicīgi nesasniedzams — mēģiniet vēlreiz.

Konts

GET /me — kas es esmu? Atgriež kontu, kā arī tiešraides abonementu un API marķieru skaitus.

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

Abonementi

Abonements (id sub_…) ir noturīgais slots, kas jums pieder: tā draudzīgais name, iestatījumi un proxy saglabājas pat tad, kad mainās tam pakārtotais tālrunis. Tā device ir tālrunis, kas to pašlaik nodrošina (vai null, kad nav savienots), un ir maināms — maiņa saglabā katru proxy galapunktu.

Uzskaitiet abonementus — katru ar savienoto ierīci, kas apvienota ar tiešraides vārtejas statusu (online = proxy tunelis darbojas):

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

Izveidojiet abonementu (nesavienotu), pēc tam savienojiet vai nomainiet tālruni. POST /subscriptions/{id}/pair atgriež PIN, kas derīgs ~3 minūtes; ievadīts Android lietotnē, tas piesaista tālruni. Slotā, kuram jau ir ierīce, šī ir maiņa (mode: "swap") — vecais tālrunis tiek izņemts no ekspluatācijas, un katrs proxy saglabā savu host:port un akreditācijas datus:

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

Iegūstiet, atjauniniet vai atceliet vienu abonementu. POST maina nosaukumu, brīvas formas description (maks. 200 rakstzīmes, null to nodzēš), wifi_split preferenci (ievietota rindā savienotajam tālrunim, piemērota tā nākamajā aptaujas reizē ~25 s) vai shared_speed_kbps — kā ierīces ātrums tiek sadalīts starp tās proxy. -1 (ieteicams) to sadala automātiski: vadības slānis mēra ierīces reālo ātrumu no tiešraides caurlaidspējas (~3 s pārsadale), proxy, kas ir aizņemti vienlaikus, konverģē uz vienlīdzīgām tā daļām, un proxy, kas strādā viens pats, iegūst pilnu ātrumu. Vērtība > 0 tā vietā sadala šo fiksēto ierīces kopsummu tādā pašā veidā. Katra proxy speed_limit_kbps vērtības tiek saglabātas, bet netiek piemērotas, kamēr kāds no tiem ir ieslēgts; 0 izslēdz koplietošanu. DELETE nojauc tās ierīci un proxy, atbrīvo vārtejas portus un dzēš slota vēsturi — neatgriezeniski:

# 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 ir viens viena protokola galapunkts (SOCKS5 vai HTTP) ierīcē ar savu autentifikāciju, avota IP baltsarakstu, ātruma ierobežojumu un domēna noteikumiem. Cik daudz ierīce var apkalpot vienlaikus, ir plāna tiesības (10 Standard, 20 Pro) — izveidojiet vienu katram klientam vai rīkam un atsauciet jebkuru no tiem, neaiztiekot pārējos. Izveide, kas pārsniedz jūsu plāna ierobežojumu, atgriež 409 proxy_limit_reached.

Proxy ierīcē koplieto tās IP
Katrs proxy ierīcē izbeidzas caur to pašu operatora IP un rotē kopā — izveidojot otru proxy, jūs iegūstat otru akreditācijas datu un politiku, nevis otru IP. Citam IP savienojiet citu tālruni.

Izveidojiet proxy — izveido jaunu lietotājvārdu/paroli; parole tiek atgriezta atklātā tekstā vienu reizi, šeit. Izvēlieties protocol (socks5 vai http) un pēc izvēles nododiet traffic_limit_bytes, lai jau no sākuma piešķirtu tam stingru datplūsmas ierobežojumu:

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": "…" }
Katrs proxy ports ir dubultsteka (IPv4 + IPv6)
Savienojieties caur jebkuru saimi — endpoint ir IPv4 URI, endpoint_ipv6 tas pats ports caur IPv6 (v6 literālis ir iekavās, atbilstoši URL sintaksei). Avota IP baltsaraksts pieņem IPv4 un IPv6 adreses un CIDR, un galamērķi var būt arī IPv6: SOCKS5 CONNECT uz IPv6 literāli vai tikai AAAA domēnu izbeidzas caur tālruņa operatora IPv6, kad SIM tāds ir.

Rediģējiet proxy politiku — autentifikācijas režīmu, IP baltsarakstu, ātruma ierobežojumu un domēna noteikumus, kas tiek piemēroti vārtejai tiešraidē (protocol ir fiksēts — tā vietā dzēsiet un izveidojiet no jauna):

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

Uzskaitiet proxy — vienā ierīcē vai katru proxy visā kontā:

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

Atsauciet proxy — nekavējoties aptur šo vienu klausītāju; katrs cits proxy ierīcē turpina darboties:

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

Katra proxy lietojuma ierobežojumi un derīguma termiņš

Piešķiriet jebkuram proxy lietojuma ierobežojumu — ideāli, ja jūs pārdodat piekļuvi un mērat katram klientam datu apjomu. Iestatiet vai mainiet to jebkurā laikā (0 to nodzēš), izveides laikā, ar PATCH vai ar tālāk norādīto galapunktu. Kad bytes_used sasniedz ierobežojumu, proxy tiek bloķēts: tas saglabā savu portu un akreditācijas datus, bet atsaka katru pieprasījumu, un over_limit kļūst true. Paceliet ierobežojumu virs izmantotā apjoma — vai nodzēsiet to — un proxy nekavējoties atsāk darbu, tas pats galapunkts, bez pārkonfigurēšanas. Uzskaitot proxy, tiek ziņots arī par katra traffic_limit_bytes, tiešraides bytes_used un 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 }

Uz laiku balstīts derīguma termiņš — piešķiriet proxy expires_at brīdi (ISO 8601, nākotnē) izveides laikā vai ar PATCH; null nodzēš gaidošu derīguma termiņu. Tajā brīdī proxy tiek izņemts no ekspluatācijas — pastāvīgi, atšķirībā no atgriezeniskā lietojuma ierobežojuma bloka. Lai atjaunotu klientu, izveidojiet jaunu proxy (jauns ports un akreditācijas dati). Ideāli piemērots dienas/nedēļas caurlaižu pārdošanai:

# 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ācijas (WireGuard un OpenVPN)

Pārvērtiet jebkuru proxy par pilnas ierīces VPN. Katra konfigurācija ir WireGuard (.conf) vai OpenVPN (.ovpn) fails, kas caur šī proxy mobilā operatora IP tunelē visu ierīci — tālruni, klēpjdatoru, maršrutētāju. Proxy var būt 1 no katra veida — viena WireGuard un viena OpenVPN konfigurācija. Konfigurācijām nepieciešams SOCKS5 + lietotājvārds/parole proxy, lai vārteja varētu tam autentificēties. Konfigurācijas izveidei nepieciešams VPN papildinājums ierīces pasūtījumā (bez tā 403 vpn_addon_required) — esošās konfigurācijas paliek sarakstā, lejupielādējamas un atsaucamas.

Fails tiek parādīts vienu reizi
Atbilde uz izveidi ietver config_text — pilnu failu, kas satur klienta privāto atslēgu / sertifikātu. Tas nav atkārtoti atvasināms; saglabājiet to, kad to izveidojat. Jūs varat atkārtoti lejupielādēt tieši to pašu failu jebkurā laikā no /file galapunkta, bet zaudētu failu var aizstāt tikai atsaucot un izveidojot jaunu konfigurāciju.
# 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_…"

Izmantojiet failu kā parasti: wg-quick up ./mpx-9f2c1a0b.conf WireGuard gadījumā vai importējiet .ovpn jebkurā OpenVPN klientā. Tad visa ierīces datplūsma izbeidzas caur tālruņa operatora IP, un šī proxy IP rotēšana rotē arī VPN izeju.

IP rotācija

Rotācija pieprasa operatoram jaunu IP. Tā ir katras ierīces mēroga — katrs proxy ierīcē iegūst jauno IP — ievietota rindā tālrunim un piemērota viena aptaujas cikla laikā (~25 s).

Pēc iespējas labāk mobilajos tīklos
Vai atkārtota izsaukšana rada jaunu adresi, izlemj operators — daži atkārtotās izsaukšanās piešķir to pašu IP. Apstipriniet no exit_ip ierīcē vai no /ip-history.

Rotēt tagad — ievietojiet rindā vienreizēju rotāciju:

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

Unikāla IP rotācija — nododiet unique: true, lai turpinātu rotēt, līdz izejas IP ir tāds, kāds nav redzēts pēdējās window_min minūtēs šī abonementa IP vēsturē (noklusējums 60, maks. 1440), atkārtojot līdz max_attempts reizēm (noklusējums 3, maks. 5). Katrs mēģinājums maksā pilnu rotācijas ciklu (~30–90 s); aptaujājiet GET variantu, lai sekotu progresam. Operatori var likumīgi atkārtoti izsniegt IP, tāpēc exhausted ir iespējams godīgs iznākums:

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ācijas saites — marķierēts URL, kas rotē šīs ierīces IP, kad tiek ielādēts, bez autentifikācijas galvenes (noslēpums ir marķieris). Ielīmējiet to jebkurā rīkā, kas atbalsta "rotācijas URL". Uzskaitiet, izveidojiet un atsauciet tos:

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

Ieplānota (laika) rotācija — iestatiet automātiskās rotācijas intervālu minūtēs (0 to izslēdz; maks. 1440). Tas saglabājas kā rotation_interval_min ierīcē un nosūta set_rotation_interval komandu, ko tālrunis piemēro savā nākamajā aptaujā, tāpēc tas atkārtoti izsaucas ar šo ritmu pats no sevis:

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

Lidmašīnas režīma noildze — cik ilgi tālrunis tur lidmašīnas režīmu IESLĒGTU katras IP maiņas laikā (airplane_seconds, 3–60, noklusējums 5). Daži operatori atbrīvo veco nomu tikai pēc ilgākas turēšanas; paceliet to, ja rotācijas turpina atgriezt to pašu IP. Attiecas gan uz ieplānotām, gan vadības paneļa, gan API rotācijām:

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

Pielāgots DNS — atrisinātāji, ko tālrunis izmanto proxy domēnu uzmeklēšanai (līdz 3 IP literāļiem; tālrunis piemēro pirmo un atkārtoti izsauc savu tuneli). Tukšs saraksts atjauno operatora noklusējuma DNS:

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

Uzraudzība

Izejas IP vēsture — nesenie izejas IP, par kuriem ziņojis tālrunis, dedublēti (jauna rinda tikai tad, kad IP faktiski mainījās). Uzticamais veids, kā pārbaudīt, vai rotācija ir notikusi:

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

Neobligāti vaicājuma parametri: from/to (ISO 8601) ierobežo logu, limit ierobežo ierakstus (noklusējums 50, maks. 500), un group=day tā vietā atgriež izmaiņu skaitu par katru dienu — nododiet tz kā savu UTC nobīdi minūtēs, lai dienas tiktu grupētas jūsu laika joslā. Tas ir tas, kas darbina vadības paneļa IP vēstures kalendāru:

# 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 brīdinājumi — serveris uzrauga jūsu floti (~katras 60 s) un atver brīdinājumu, kad kaut kas prasa uzmanību: stale_ip, kad ierīce ir tiešsaistē, bet tās izejas IP nav mainījies ilgāk par abonementa slieksni (iestatiet stale_ip_alert_minutes sadaļā /rotation; 0 = izslēgts, 2–10080), un duplicate_ip, kad divas jūsu ierīces ziņo par to pašu izejas IP (operatora NAT var piešķirt divām SIM vienu adresi — rotējiet vienu, lai tās atdalītu). Brīdinājumi tiek atrisināti automātiski, kad nosacījums izzūd; tie parādās arī vadības paneļa brīdinājumu zvanā:

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

Ierīces datplūsma — baiti, kas saskaitīti vārtejā, sadalīti pa proxy. Ērti klientu, kuriem jūs pārdodat, norēķiniem:

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

Dienas datplūsmas sadalījums — nosūtītie/saņemtie baiti par katru dienu, no minūtes izšķirtspējas paraugiem, kas glabāti tīmekļa slānī, tāpēc rinda pārdzīvo ierīču maiņu un proxy izņemšanu no ekspluatācijas. data_since atzīmē vecāko paraugu — dienām pirms tā nav datu, kas nav tas pats, kas nulle datplūsmas. Nododiet tz (jūsu UTC nobīdi minūtēs), lai dienas tiktu grupētas jūsu laika joslā; logi līdz 92 dienām:

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

Dienas darbspējas laiks — augšup/lejup sekundes par katru dienu, salocītas no ierīces sirdspukstu ieraksta (vienotas visās ierīču maiņās). Tas mēra ierīces sirdspukstu dzīvīgumu (~25 s ritms, ~90 s pārtraukuma slieksnis), nevis pilnas tuneļa lietojamību. current ir stāvoklis tieši tagad; uptime_pct aptver katras dienas novēroto daļu:

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

Konta mēroga lietojums — apkopojums pa visām ierīcē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

Saņemtie SMS — ienākošie ziņojumi šī tālruņa SIM, jaunākie vispirms. Noderīgi vienreizējo verifikācijas kodu (OTP) lasīšanai tālruņos, kas jums pieder. Tas balstās uz lietotnes neobligāto SMS saņemšanas atļauju; ja tā ierīcē tika noraidīta, saraksts paliek tukšs:

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

Serveri

Vārtejas atrašanās vietas — atrašanās vietas, no kurām tiek apkalpoti jūsu proxy:

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 marķieri

Uzskaitiet, izveidojiet un atsauciet API marķierus. Tikko izveidota marķiera noslēpums tiek parādīts vienu reizi — saglabājiet to nekavējoties; to nekad vairs nevar iegūt. Atsaukšana stājas spēkā nekavējoties:

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

Ierobežotas un tikai lasāmas atslēgas

Deleģējiet piekļuvi, nedaloties ar savu kontu. Nododiet subscription_id, lai ierobežotu marķieri līdz vienam abonementam, un readonly: true, lai ierobežotu to līdz GET pieprasījumiem. Ierobežots marķieris var sasniegt tikai šī abonementa paša galapunktus (kā arī /me); tikai lasāms marķieris tiek atteikts jebkurā rakstīšanas darbībā. Abi ir ierobežojumi, kas uzlikti virs jūsu konta — ierobežota atslēga nekad nevar sasniegt cita konta datus.

# 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)
Padoms
Šī atsauce paliek soli solī ar API. Pārlūkprogrammai, kurā varat noklikšķināt cauri — ar savu marķieri un tiešraides atbildēm — atveriet interaktīvo konsoli vai lasiet neapstrādāto OpenAPI dokumentu.