MMobile API Connect
Reference

REST API Reference

Everything under /v1. JSON in, JSON out. All timestamps are UTC ISO-8601. Authenticated endpoints take a Bearer API key.

Base URL

base url
https://api.mobileapiconnect.com/v1

Authentication

Every authenticated request carries your secret API key as a Bearer token. Keys look like sk_live_ followed by 40 characters. Your key is shown once when you pair the app and is also emailed to you โ€” store it securely; it can't be retrieved again.

authorization header
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
StatusBodyMeaning
401{"error":"unauthorized"}Missing / malformed Bearer key
401{"error":"invalid_api_key"}Key not found or revoked
403{"error":"tenant_inactive"}Account suspended

Errors

Errors return a non-2xx status and a JSON body with an error code. Validation failures include the offending fields.

StatusErrorWhen
400validation_errorBody failed validation โ€” see issues[]
401unauthorized / invalid_api_keyAuth problem (see above)
403tenant_inactiveAccount not active
404not_foundNo such message / resource
404no_webhook_configNo webhook provisioned yet
503no_active_device_for_tenantNo paired phone online to send

Messages

POST/v1/messages๐Ÿ”‘ Bearer
Queue an outbound SMS. Returns immediately with 202; the paired phone sends it within ~1โ€“2 seconds.
FieldTypeNotes
to requiredstringE.164 number, e.g. +6581230000
text requiredstring1โ€“1600 characters
ref optionalstringYour reference id (โ‰ค64 chars), echoed back & in webhooks
callback optionalstring (URL)Per-message delivery callback URL
channel optionalstringDefaults to "sms"
curl
curl -X POST https://api.mobileapiconnect.com/v1/messages \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"+6581230000","text":"Hello from Mobile API Connect","ref":"order-4821"}'
202 Accepted
{
  "id": "msg_8sK2xโ€ฆ",
  "status": "queued",
  "createdAt": "2026-06-12T18:40:00.000Z"
}
GET/v1/messages/:id๐Ÿ”‘ Bearer
Fetch the status of one message. Lifecycle: queued โ†’ sent โ†’ delivered (or failed).
200 OK
{
  "id": "msg_8sK2xโ€ฆ",
  "to": "+6581230000",
  "from": null,
  "text": "Hello from Mobile API Connect",
  "ref": "order-4821",
  "status": "delivered",
  "attempts": 1,
  "createdAt": "2026-06-12T18:40:00Z",
  "sentAt": "2026-06-12T18:40:01Z",
  "deliveredAt": "2026-06-12T18:40:04Z",
  "failedAt": null,
  "error": null
}

Unknown id โ†’ 404 {"error":"not_found"}.

GET/v1/messages๐Ÿ”‘ Bearer
List recent messages, newest first. Query param limit (default 50, max 200).
200 OK
{
  "data": [
    { "id": "msg_โ€ฆ", "to": "+6581230000", "text": "Hello", "status": "delivered", "createdAt": "โ€ฆ" }
  ]
}

Devices

GET/v1/devices๐Ÿ”‘ Bearer
List the phones paired to your account, with live counters.
200 OK
{
  "data": [
    { "id": "dev_โ€ฆ", "nickname": "Front desk Pixel", "model": "Pixel 7",
      "status": "active", "lastSeenAt": "โ€ฆ", "sentCount": 412, "receivedCount": 88 }
  ]
}
Pairing is done in the app, not the API. Installing & pairing the Android app creates your account and issues the API key. See the quickstart.

Rules

Manage the auto-reply / forwarding engine programmatically. Concepts are covered in the rules guide.

GET POST/v1/rules๐Ÿ”‘ Bearer
List or create rules. A rule has a trigger (matchType = contains|exact|regex|any, pattern, optional fromFilter) and actions (replyEnabled+replyTemplate, email, webhook), plus priority (lower = checked first).
PUT DELETE/v1/rules/:id๐Ÿ”‘ Bearer
Update or delete a rule.
GET PUT/v1/rules/settings๐Ÿ”‘ Bearer
Master switch, default fallback reply, and forward-all-inbound (email / webhook) settings.

Webhooks

Configure where inbound messages get pushed. Full payload & signature details in the webhooks guide.

GET/v1/webhooks๐Ÿ”‘ Bearer
Your webhook config: url, events, enabled, signingSecretPrefix.
PUT/v1/webhooks๐Ÿ”‘ Bearer
Upsert the webhook. Body: { url, events?, enabled? }. Returns { ok:true, id }, or 404 no_webhook_config if none provisioned yet (pair a device first).
curl
curl -X PUT https://api.mobileapiconnect.com/v1/webhooks \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yourapp.com/hooks/sms-inbound","enabled":true}'

Ingress (ERP โ†’ SMS)

Let your ERP fire an SMS by POSTing its own webhook to a per-integration ingress URL. We extract the recipient and text via JSONPath presets. Walkthroughs in integrations.

POST/v1/ingress/:tokenpublic ยท token
Public endpoint your ERP calls. No API key โ€” the secret ig_โ€ฆ token authorizes it; add optional HMAC for safety. Returns 202 {id,status,to,text}.
GET POST/v1/ingress๐Ÿ”‘ Bearer
List or create integrations. Body: { name, preset, toPath?, textPath?, refPath?, signingSecret?, โ€ฆ }. Presets: generic, zoho, salesforce, dynamics, odoo, netsuite.
PUT DELETE/v1/ingress/:id   POST/v1/ingress/:id/rotate๐Ÿ”‘ Bearer
Update, delete, or rotate the ingress token.
GET/v1/ingress/presets๐Ÿ”‘ Bearer
The built-in JSONPath maps for each ERP preset.

Conventions