Messaging API Messages API
Managing, sending, and receiving of messages via SMS and other channels.
Managing, sending, and receiving of messages via SMS and other channels.
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/messaging-api-messages-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.1.0
info:
title: Messaging API Messages API
description: 'This is a template APIs.json for a messages API, to be used in storytelling, training, and knowledge bases.
'
version: 0.1.0
contact:
name: API Evangelist
url: https://apievangelist.com
email: info@apievangelist.com
termsOfService: http://example.com/terms/
license:
name: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
identifier: CC-BY-NC-SA-4.0
url: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en
servers:
- url: https://api.example.com
description: Production
tags:
- name: Messages
description: 'Managing, sending, and receiving of messages via SMS and other channels.
'
paths:
/messages:
get:
operationId: getMessages
summary: Messaging API Retrieves Messages
description: Returns a list of all messages for the authenticated user.
security:
- apiKeys: []
tags:
- Messages
responses:
'200':
description: A list of messages
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/json:
schema:
$ref: '#/components/schemas/WrapperResponseCollection'
examples:
MessageCollection:
$ref: '#/components/examples/MessageCollection'
application/xml:
schema:
$ref: '#/components/schemas/WrapperResponseCollection'
examples:
MessageCollection:
$ref: '#/components/examples/MessageCollection'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
post:
operationId: createMessage
summary: Messaging API Create Message
description: Creating a new message for sending to a recipient.
tags:
- Messages
security:
- apiKeys: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
application/xml:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
responses:
'201':
description: Message Successful
content:
application/json:
schema:
$ref: '#/components/schemas/WrapperResponseObject'
examples:
SingleMessage:
$ref: '#/components/examples/SingleMessage'
application/xml:
schema:
$ref: '#/components/schemas/WrapperResponseObject'
examples:
SingleMessage:
$ref: '#/components/examples/SingleMessage'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/messages/{messageId}:
parameters:
- $ref: '#/components/parameters/MessageId'
get:
summary: Messaging API Retrieve Message
description: Returns the details of a specific message.
operationId: getMessage
tags:
- Messages
security:
- apiKeys: []
responses:
'200':
description: Message Details
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/json:
schema:
$ref: '#/components/schemas/WrapperResponseObject'
examples:
SingleMessage:
$ref: '#/components/examples/SingleMessage'
application/xml:
schema:
$ref: '#/components/schemas/WrapperResponseObject'
examples:
SingleMessage:
$ref: '#/components/examples/SingleMessage'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
put:
summary: Messaging API Update Message
description: Updates a single message.
operationId: updateMessage
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
application/xml:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
security:
- apiKeys: []
tags:
- Messages
responses:
'204':
description: Message Updated
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
summary: Messaging API Delete Message
description: Deletes a message.
operationId: deleteMessage
security:
- apiKeys: []
tags:
- Messages
responses:
'204':
description: Message Deleted
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/messages/{messageId}/send:
parameters:
- $ref: '#/components/parameters/MessageId'
put:
summary: Messaging API Send Message
description: Sends a single message.
operationId: sendMessage
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
application/xml:
schema:
$ref: '#/components/schemas/Message'
examples:
Message:
$ref: '#/components/examples/Message'
security:
- apiKeys: []
tags:
- Messages
responses:
'204':
description: Message Sent
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
components:
parameters:
MessageId:
name: messageId
in: path
required: true
description: The ID of the message to retrieve.
schema:
type: string
format: uuid
minLength: 36
maxLength: 36
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
example: 1725ff48-ab45-4bb5-9d02-88745177dedb
responses:
Forbidden:
description: Forbidden
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/forbidden
title: Forbidden
status: 403
detail: Access is forbidden with the provided credentials.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/forbidden
title: Forbidden
status: 403
detail: Access is forbidden with the provided credentials.
Unauthorized:
description: Unauthorized
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/unauthorized
title: Unauthorized
status: 401
detail: You do not have the necessary permissions.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/unauthorized
title: Unauthorized
status: 401
detail: You do not have the necessary permissions.
Conflict:
description: Conflict
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/conflict
title: Conflict
status: 409
detail: There is a conflict with an existing resource.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/conflict
title: Conflict
status: 409
detail: There is a conflict with an existing resource.
NotFound:
description: Not Found
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/not-found
title: Not Found
status: 404
detail: The requested resource was not found.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/not-found
title: Not Found
status: 404
detail: The requested resource was not found.
InternalServerError:
description: Internal Server Error
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/internal-server-error
title: Internal Server Error
status: 500
detail: An unexpected error occurred.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/internal-server-error
title: Internal Server Error
status: 500
detail: An unexpected error occurred.
BadRequest:
description: Bad Request
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/bad-request
title: Bad Request
status: 400
detail: The request is invalid or missing required parameters.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/bad-request
title: Bad Request
status: 400
detail: The request is invalid or missing required parameters.
TooManyRequests:
description: Too Many Requests
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/too-many-requests
title: Too Many Requests
status: 429
detail: You have exceeded the rate limit.
application/problem+xml:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://example.com/errors/too-many-requests
title: Too Many Requests
status: 429
detail: You have exceeded the rate limit.
schemas:
Meta:
type: object
description: The metadata for each response.
required:
- page
- totalPages
properties:
page:
type: integer
description: The page represented in response.
minLength: 1
maxLength: 1000
pageSize:
type: integer
minLength: 1
maxLength: 1000
description: The overall page size limits.
totalPages:
type: integer
description: The total number of pages.
minLength: 1
maxLength: 1000
Message:
type: object
description: A Schema.org compliant message object.
xml:
name: message
required:
- id
- name
- address
- country_code
properties:
identifier:
type: string
format: uuid
description: Unique identifier for the message.
minLength: 36
maxLength: 36
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
example: efdbb9d1-02c2-4bc3-afb7-6788d8782b1e
sender:
type: string
description: The sender of the message
minLength: 10
maxLength: 250
example: Lily Sanchez
recipient:
type: string
description: The recipient of the message.
minLength: 10
maxLength: 250
example: Mary Sanchez
subjectOf:
type: string
description: The subject of the message.
minLength: 10
maxLength: 500
example: Hello There!
text:
type: string
description: The content of the message.
minLength: 50
maxLength: 5000
example: Hope you are having a good day.
dateSent:
type: string
description: The timezone of the message in the [IANA Time Zone Database format](https://www.iana.org/time-zones).
minLength: 10
maxLength: 10
example: '2018-04-25T18:00:30+01:00'
dateReceived:
type: string
description: The timezone of the message in the [IANA Time Zone Database format](https://www.iana.org/time-zones).
minLength: 10
maxLength: 10
example: '2018-04-25T18:00:30+01:00'
LinksSelf:
type: object
description: A link to reference each message.
required:
- self
properties:
self:
type: string
description: A URL to message returned.
format: uri
minLength: 10
maxLength: 2048
WrapperResponseCollection:
description: This is a generic request/response wrapper which contains both data and links which serve as hypermedia controls (HATEOAS).
type: object
required:
- meta
- data
- links
properties:
meta:
$ref: '#/components/schemas/Meta'
data:
description: The wrapper for a collection is an array of objects.
type: array
maxItems: 100
minItems: 1
items:
$ref: '#/components/schemas/Message'
links:
$ref: '#/components/schemas/LinksPagination'
xml:
name: data
WrapperResponseObject:
description: This is a generic request/response wrapper which contains both data and links which serve as hypermedia controls (HATEOAS).
type: object
required:
- meta
- data
- links
properties:
meta:
$ref: '#/components/schemas/Meta'
data:
$ref: '#/components/schemas/Message'
links:
$ref: '#/components/schemas/LinksSelf'
xml:
name: data
Problem:
type: object
description: This is a Problem Details for HTTP APIs object.
required:
- title
- status
xml:
name: problem
namespace: urn:ietf:rfc:7807
properties:
type:
type: string
description: A URI reference that identifies the problem type
example: https://example.com/probs/out-of-credit
minLength: 10
maxLength: 2048
title:
type: string
description: A short, human-readable summary of the problem type
example: You do not have enough credit.
minLength: 10
maxLength: 250
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem
example: Your current balance is 30, but that costs 50.
minLength: 10
maxLength: 1000
instance:
type: string
description: A URI reference that identifies the specific occurrence of the problem
example: /account/12345/msgs/abc
minLength: 10
maxLength: 250
status:
type: integer
description: The HTTP status code
example: 400
minLength: 3
maxLength: 3
LinksPagination:
type: object
description: The handling of each page.
properties:
next:
type: string
description: The next page in results.
format: uri
minLength: 10
maxLength: 2048
prev:
type: string
description: The previous page in results.
format: uri
minLength: 10
maxLength: 2048
examples:
MessageCollection:
value:
meta:
page: 1
pageSize: 10
totalPages: 2
data:
- id: efdbb9d1-02c2-4bc3-afb7-6788d8782b1e
sender: Jane Doe
recipient: John Doe
subjectOf: Meeting Later
text: Please meet me at the market.
dateSent: '2018-04-25T18:00:30+01:00'
dateReceived: '2018-04-25T18:00:30+01:00'
links:
self: https://api.example.com/messages
next: https://api.example.com/messages?page=2
Message:
value:
sender: Jane Doe
recipient: John Doe
subjectOf: Meeting Later
text: Please meet me at the market.
SingleMessage:
value:
meta:
page: 1
pageSize: 10
totalPages: 2
data:
id: efdbb9d1-02c2-4bc3-afb7-6788d8782b1e
sender: Jane Doe
recipient: John Doe
subjectOf: Meeting Later
text: Please meet me at the market.
dateSent: '2018-04-25T18:00:30+01:00'
dateReceived: '2018-04-25T18:00:30+01:00'
links:
self: https://api.example.com/messages
headers:
RateLimit:
description: 'The RateLimit header communicates quota policies. It contains a `limit` to
convey the expiring limit, `remaining` to convey the remaining quota units,
and `reset` to convey the time window reset time.
'
schema:
type: string
minLength: 10
maxLength: 250
example: limit=10, remaining=0, reset=10
Retry-After:
description: "The Retry-After header indicates how long the user agent should wait before making a follow-up request. \nThe value is in seconds and can be an integer or a date in the future. \nIf the value is an integer, it indicates the number of seconds to wait. \nIf the value is a date, it indicates the time at which the user agent should make a follow-up request. \n"
schema:
type: string
minLength: 10
maxLength: 250
examples:
integer:
value: '120'
summary: Retry after 120 seconds
date:
value: Fri, 31 Dec 2021 23:59:59 GMT
summary: Retry after the specified date
securitySchemes:
apiKeys:
type: apiKey
name: api-key
in: header
externalDocs:
description: Messages API Landing Page
url: http://example.com/messages