mobileproxy.app

Using your proxy

SMS / verification codes

A phone you've paired can forward the SMS its SIM receives — one-time verification codes (OTPs), most usefully — to your account. Read them in the dashboard or over the API, per device.

What this is for

Signing into an account from a mobile IP often triggers an SMS verification code sent to that phone's number. If the phone is one you own and have paired, the app can capture those inbound messages and surface them to you — so you can read the code without physically holding the device. That's the intended use: OTPs on phones you own.

Optional, and off unless you allow it
SMS capture rides an optional permission (RECEIVE_SMS). The proxy works fully without it. If you decline the prompt on the phone, nothing is captured and the list stays empty — everything else keeps running.

How it works

When an SMS lands on the phone, the app reads it (concatenating the parts of a multipart message into one), queues it on the device, and forwards the queued batch to your account over the same cellular-bound link the phone already uses to talk to the control plane. Forwarding happens on the phone's regular poll cycle (~25 s), so a code shows up within a few seconds of arriving. If the phone is briefly offline, messages buffer on the device and send once it's back. Each stored message keeps the sender, the body, and the received-at time.

Sideload-only
Google Play restricts SMS permissions, so this feature only exists in the sideloaded APK. See Download for why the app is sideloaded and what it captures.

Reading them in the dashboard

Every device card has a collapsible Received SMS panel. Open it and it lists messages newest-first — sender, timestamp, and full body — and refreshes on its own every ~15 seconds while it's open, so a code that lands mid-signup appears without a page reload. A count badge shows how many messages are on the device. If the phone never got the SMS permission, the panel simply reports that there are no messages yet.

Reading them over the API

The same messages are available per device. The list is newest-first and capped at the most recent 200.

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

Each message carries an id, the sender (the originating address, which can be null for some short-code senders), the message body, and received_at. The endpoint returns an empty messages array — never an error — when the phone hasn't forwarded anything, including when the SMS permission was declined.

Tip
Authenticate with a user API token (mpx_live_…) the same way as the rest of the API, or read it from the dashboard session. The device must belong to your account or you'll get a 404.

Field-by-field details are in the interactive API console, alongside the rest of Status & usage.