Telstra MMS API
Send, retrieve, and check status of MMS messages.
Send, retrieve, and check status of MMS messages.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/telstra:telstra-mms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Telstra Messaging MMS API
description: 'The Telstra Messaging API provides programmatic SMS and MMS messaging
services in Australia and select international destinations. Built on
the Telstra mobile network, the API supports outbound and inbound
SMS/MMS, delivery status callbacks, virtual numbers, and provisioning
workflows. Authentication uses OAuth 2.0 client credentials with the
NSMS scope.'
version: 2.2.10
contact:
name: Telstra Developer Support
url: https://dev.telstra.com
termsOfService: https://www.telstra.com.au/business-enterprise/legal/messaging-api-terms-of-service
license:
name: Telstra Developer License
url: https://github.com/telstra/tdev-doc-license
x-logo:
url: https://www.telstra.com.au/etc/designs/telstrav8/clientlibs/img/Telstra_Symbol.svg
servers:
- url: https://tapi.telstra.com/v2
description: Production Server
security:
- OAuth2ClientCredentials:
- NSMS
tags:
- name: MMS
description: Send, retrieve, and check status of MMS messages.
paths:
/messages/mms:
post:
summary: Telstra Send MMS
description: Send an MMS containing one or more multimedia parts (image, audio, video, vCard, or text) to a destination number.
operationId: sendMms
tags:
- MMS
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendMmsRequest'
responses:
'201':
description: MMS accepted for delivery.
content:
application/json:
schema:
$ref: '#/components/schemas/SendMessageResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'413':
description: Payload too large.
'429':
$ref: '#/components/responses/RateLimited'
get:
summary: Telstra Get MMS Replies
description: Retrieve queued inbound MMS replies for the authenticated dedicated virtual number.
operationId: getMmsReplies
tags:
- MMS
responses:
'200':
description: Inbound MMS payload (empty if no replies queued).
content:
application/json:
schema:
$ref: '#/components/schemas/InboundMessage'
'401':
$ref: '#/components/responses/Unauthorized'
/messages/mms/{messageId}/status:
get:
summary: Telstra Get MMS Status
description: Retrieve the current delivery status for a previously sent MMS by message ID.
operationId: getMmsStatus
tags:
- MMS
parameters:
- name: messageId
in: path
required: true
schema:
type: string
responses:
'200':
description: Current delivery status.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageStatus'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
ErrorResponse:
type: object
required:
- status
- code
- message
properties:
status:
type: string
code:
type: string
message:
type: string
MmsContentPart:
type: object
required:
- type
- payload
properties:
type:
type: string
description: MIME type (image/jpeg, image/png, image/gif, audio/amr, text/plain, application/smil).
filename:
type: string
payload:
type: string
format: byte
description: Base64-encoded content payload.
SendMessageResponse:
type: object
required:
- messages
properties:
messages:
type: array
items:
$ref: '#/components/schemas/MessageReceipt'
country:
type: array
items:
type: object
messageType:
type: string
numberSegments:
type: integer
numberNationalDestinations:
type: integer
numberInternationalDestinations:
type: integer
InboundMessage:
type: object
properties:
status:
type: string
enum:
- EMPTY
- RECEIVED
destinationAddress:
type: string
senderAddress:
type: string
message:
type: string
messageId:
type: string
sentTimestamp:
type: string
format: date-time
apiMsgId:
type: string
MessageStatus:
type: object
required:
- to
- sentTimestamp
- status
properties:
to:
type: string
sentTimestamp:
type: string
format: date-time
receivedTimestamp:
type: string
format: date-time
status:
type: string
enum:
- MessageWaiting
- DeliveredToNetwork
- MessageBuffered
- DeliveredToTerminal
- DeliveryImpossible
- Rejected
MessageReceipt:
type: object
required:
- to
- deliveryStatus
- messageId
properties:
to:
type: string
deliveryStatus:
type: string
enum:
- MessageWaiting
- DeliveredToNetwork
- MessageBuffered
- DeliveredToTerminal
- DeliveryImpossible
- Rejected
messageId:
type: string
messageStatusURL:
type: string
format: uri
SendMmsRequest:
type: object
required:
- to
- subject
- MMSContent
properties:
to:
type: string
description: Destination MSISDN in E.164 format.
subject:
type: string
description: MMS subject line (max 64 chars).
maxLength: 64
from:
type: string
notifyURL:
type: string
format: uri
replyRequest:
type: boolean
priority:
type: boolean
MMSContent:
type: array
description: One or more MMS content parts; base64 encoded payloads.
items:
$ref: '#/components/schemas/MmsContentPart'
responses:
RateLimited:
description: Too Many Requests.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad Request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
OAuth2ClientCredentials:
type: oauth2
description: OAuth 2.0 client credentials grant against https://tapi.telstra.com/v2/oauth/token with the NSMS scope.
flows:
clientCredentials:
tokenUrl: https://tapi.telstra.com/v2/oauth/token
scopes:
NSMS: Send and receive SMS/MMS through Telstra Messaging.