Three requests: get a token, send the message, trace it. This quickstart sends a real MMS — an image plus text — to an Australian mobile through the intouch API. You'll need API credentials (client ID and secret) and a dedicated virtual number, both provisioned with your account; the full endpoint reference is in the API overview and the interactive explorer at apimobiledigital.com.
Last reviewed: 22 August 2026.
curl -X POST "{BASE_URL}/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id={YOUR_CLIENT_ID}" \
-d "client_secret={YOUR_CLIENT_SECRET}"The response contains your access_token. Sanity-check it against the purpose-built validation endpoint before going further:
curl -X POST "{BASE_URL}/test-oauth2" \
-H "Authorization: Bearer {ACCESS_TOKEN}"A 200 means auth is working; a 403 means your token is valid but missing the write scope — check your credential's scope grant.
MMS media travels base64-encoded in the request body, with the file type given as a bare extension (png, gif, mp4):
base64 -w 0 offer.png > offer.b64Design guidance for what actually renders well on Australian handsets — practical size ceilings, format choice, animation — is in the MMS channel guide. Short version: keep it a few hundred kilobytes; PNG or GIF for stills and animation.
curl -X POST "{BASE_URL}/sendMMS" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"from": "{YOUR_DEDICATED_NUMBER}",
"destination": "+61400000000",
"subject": "Your welcome offer",
"mms_text_content": "Hi! Here is 20% off your first order.",
"content_type": "png",
"media_content": "'"$(cat offer.b64)"'",
"tracking_id": "first-mms-001"
}'Field notes:
A successful response returns the identifiers you'll use for everything downstream:
{ "result": true, "status": 200, "transId": "…", "log_uuid": "…" }curl -X POST "{BASE_URL}/traceTransactionId" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{ "transId": "{TRANS_ID_FROM_STEP_3}" }'Polling is fine for a first test; production systems should use webhooks to receive delivery events push-style instead.
| Symptom | Likely cause |
|---|---|
| 401 | Token missing/expired — re-run step 1 |
| 403 | Token lacks write scope — check credential configuration |
| result: false | Payload validation — malformed destination, unroutable number, or media issue; quote the log_uuid to support |
| Delivered but no image | Media too large or wrong content_type — re-check the base64 and extension |