Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/brevo-transactionalsms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Transactional Sms API
version: 1.0.0
servers:
- url: https://api.brevo.com/v3
description: https://api.brevo.com/v3
tags:
- name: transactionalSms
paths:
/transactionalSMS/send:
post:
operationId: sendAsyncTransactionalSms
summary: Send SMS message asynchronously to a mobile number
description: '<Note>If the user includes stop code in the Transactional SMS, then it will be switched to Marketing SMS automatically and it will be interpreted as a Marketing SMS. To send Transactional SMS as Transactional, it is important not to use stop code.
Note: For adding a stop code, client has to add reply STOP to [STOP_CODE] and the [STOP_CODE] will be replaced with the number.</Note>
<Note title="For end users in France">Transactional SMS can be sent at any time without time restrictions. However, if a message is categorized as Marketing, it must adhere to specific time restrictions. Messages sent outside of these restricted hours will experience delays and will be processed during allowable times. Specifically, Marketing SMS cannot be processed between 10pm and 8am, on Sundays, and on French public holidays.</Note>'
tags:
- transactionalSms
parameters:
- name: api-key
in: header
description: The API key should be passed in the request headers as `api-key` for authentication.
required: true
schema:
type: string
responses:
'201':
description: SMS has been sent successfully to the recipient
content:
application/json:
schema:
$ref: '#/components/schemas/Transactional_SMS_sendAsyncTransactionalSms_Response_201'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/SendAsyncTransactionalSmsRequestBadRequestError'
requestBody:
description: Values to send a transactional SMS
content:
application/json:
schema:
$ref: '#/components/schemas/sendTransacSms'
/transactionalSMS/statistics/aggregatedReport:
get:
operationId: getTransacAggregatedSmsReport
summary: Get your SMS activity aggregated over a period of time
description: Retrieve an aggregated report of your transactional SMS activity over a specified time period, including counts for requests, delivered, hard bounces, soft bounces, blocked, unsubscribed, replied, accepted, rejected, and skipped messages. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format) or by a number of past `days` (not compatible with date range). You can further narrow results by `tag`. If no date filter is provided, the report covers all available data and returns the auto-detected date range.
tags:
- transactionalSms
parameters:
- name: startDate
in: query
description: '**Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: endDate
in: query
description: '**Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: days
in: query
description: 'Number of days in the past including today (positive integer). **Not compatible with startDate and endDate**
'
required: false
schema:
type: integer
format: int64
- name: tag
in: query
description: Filter on a tag
required: false
schema:
type: string
- name: api-key
in: header
description: The API key should be passed in the request headers as `api-key` for authentication.
required: true
schema:
type: string
responses:
'200':
description: Aggregated SMS report informations
content:
application/json:
schema:
$ref: '#/components/schemas/Transactional_SMS_getTransacAggregatedSmsReport_Response_200'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransacAggregatedSmsReportRequestBadRequestError'
/transactionalSMS/statistics/reports:
get:
operationId: getTransacSmsReport
summary: Get your SMS activity aggregated per day
description: Retrieve a day-by-day breakdown of your transactional SMS activity, with each entry containing the date and counts for requests, delivered, hard bounces, soft bounces, blocked, unsubscribed, replied, accepted, rejected, and skipped messages. Filter by date range using `startDate` and `endDate` (both required together, YYYY-MM-DD format), by a number of past `days` (not compatible with date range), or by `tag`. Results are sorted in descending order by default unless overridden with the `sort` parameter.
tags:
- transactionalSms
parameters:
- name: startDate
in: query
description: '**Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: endDate
in: query
description: '**Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: days
in: query
description: 'Number of days in the past including today (positive integer). **Not compatible with ''startDate'' and ''endDate''**
'
required: false
schema:
type: integer
format: int64
- name: tag
in: query
description: Filter on a tag
required: false
schema:
type: string
- name: sort
in: query
description: Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
required: false
schema:
$ref: '#/components/schemas/TransactionalSmsStatisticsReportsGetParametersSort'
default: desc
- name: api-key
in: header
description: The API key should be passed in the request headers as `api-key` for authentication.
required: true
schema:
type: string
responses:
'200':
description: Aggregated SMS report informations
content:
application/json:
schema:
$ref: '#/components/schemas/Transactional_SMS_getTransacSmsReport_Response_200'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransacSmsReportRequestBadRequestError'
/transactionalSMS/statistics/events:
get:
operationId: getSmsEvents
summary: Get all your SMS activity (unaggregated events)
description: Retrieve a paginated list of individual SMS event records (unaggregated), including event type, phone number, message ID, timestamp, tag, and reason or reply content where applicable. Results default to 50 per page (max 100) and are sorted in descending order unless overridden. Filter by date range (`startDate`/`endDate`), past `days` (not compatible with date range), specific `event` type (e.g. delivered, bounces, replies), `phoneNumber`, or `tags`. Bounce events include the failure reason, and reply events include the reply content.
tags:
- transactionalSms
parameters:
- name: limit
in: query
description: Number of documents per page
required: false
schema:
type: integer
format: int64
default: 50
- name: startDate
in: query
description: '**Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: endDate
in: query
description: '**Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the report
'
required: false
schema:
type: string
- name: offset
in: query
description: Index of the first document of the page
required: false
schema:
type: integer
format: int64
default: 0
- name: days
in: query
description: 'Number of days in the past including today (positive integer). **Not compatible with ''startDate'' and ''endDate''**
'
required: false
schema:
type: integer
format: int64
- name: phoneNumber
in: query
description: Filter the report for a specific phone number
required: false
schema:
type: string
- name: event
in: query
description: Filter the report for specific events
required: false
schema:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetParametersEvent'
- name: tags
in: query
description: Filter the report for specific tags passed as a serialized urlencoded array
required: false
schema:
type: string
- name: sort
in: query
description: Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
required: false
schema:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetParametersSort'
default: desc
- name: api-key
in: header
description: The API key should be passed in the request headers as `api-key` for authentication.
required: true
schema:
type: string
responses:
'200':
description: Sms events report informations
content:
application/json:
schema:
$ref: '#/components/schemas/Transactional_SMS_getSmsEvents_Response_200'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GetSmsEventsRequestBadRequestError'
components:
schemas:
GetTransacSmsReportRequestBadRequestError:
type: object
properties:
code:
$ref: '#/components/schemas/TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaCode'
description: Error code displayed in case of a failure
message:
type: string
description: Readable message associated to the failure
required:
- code
- message
title: GetTransacSmsReportRequestBadRequestError
SendTransacSmsTag:
oneOf:
- type: string
- type: array
items:
type: string
description: 'Tag of the message. Can be a single string or an array of strings (maximum 10 tags). Each tag must be a non-empty string.
'
title: SendTransacSmsTag
Transactional_SMS_sendAsyncTransactionalSms_Response_201:
type: object
properties:
messageId:
type: integer
format: int64
required:
- messageId
title: Transactional SMS_sendAsyncTransactionalSms_Response_201
TransactionalSmsStatisticsEventsGetParametersEvent:
type: string
enum:
- bounces
- hardBounces
- softBounces
- delivered
- sent
- accepted
- unsubscription
- replies
- blocked
- rejected
- skipped
title: TransactionalSmsStatisticsEventsGetParametersEvent
Transactional_SMS_getTransacAggregatedSmsReport_Response_200:
type: object
properties:
accepted:
type: integer
format: int64
description: Number of accepted SMS for the timeframe
blocked:
type: integer
format: int64
description: Number of blocked contact for the timeframe
delivered:
type: integer
format: int64
description: Number of delivered SMS for the timeframe
hardBounces:
type: integer
format: int64
description: Number of hardbounces for the timeframe
range:
type: string
description: Time frame of the report
rejected:
type: integer
format: int64
description: Number of rejected SMS for the timeframe
replied:
type: integer
format: int64
description: Number of answered SMS for the timeframe
requests:
type: integer
format: int64
description: Number of requests for the timeframe
skipped:
type: integer
format: int64
description: Number of skipped SMS for the timeframe
softBounces:
type: integer
format: int64
description: Number of softbounces for the timeframe
unsubscribed:
type: integer
format: int64
description: Number of unsubscription for the timeframe
title: Transactional SMS_getTransacAggregatedSmsReport_Response_200
TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems:
type: object
properties:
date:
type: string
description: UTC date-time on which the event has been generated
event:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent'
description: Event which occurred
messageId:
type: string
description: Message ID which generated the event
phoneNumber:
type: string
description: Phone number which has generated the event
reason:
type: string
description: Reason of bounce (only available if the event is hardbounce or softbounce)
reply:
type: string
tag:
type: string
description: Tag of the SMS which generated the event
title: TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems
GetSmsEventsRequestBadRequestError:
type: object
properties:
code:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaCode'
description: Error code displayed in case of a failure
message:
type: string
description: Readable message associated to the failure
required:
- code
- message
title: GetSmsEventsRequestBadRequestError
Transactional_SMS_getSmsEvents_Response_200:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems'
title: Transactional SMS_getSmsEvents_Response_200
sendTransacSms:
type: object
properties:
organisationPrefix:
type: string
description: A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**
recipient:
type: string
description: 'Mobile number to send SMS with the country code. Must contain between 6 and 15 digits, optionally prefixed with ''+''.
'
sender:
type: string
description: 'Name of the sender. **The number of characters is limited to 11 for alphanumeric characters and 15 for numeric characters.** Alphanumeric sender names (up to 11 characters) must contain only letters and digits. Numeric sender names (12-15 characters) must contain only digits.
'
tag:
$ref: '#/components/schemas/SendTransacSmsTag'
description: 'Tag of the message. Can be a single string or an array of strings (maximum 10 tags). Each tag must be a non-empty string.
'
type:
$ref: '#/components/schemas/SendTransacSmsType'
default: transactional
description: Type of the SMS. Marketing SMS messages are those sent typically with marketing content. Transactional SMS messages are sent to individuals and are triggered in response to some action, such as a sign-up, purchase, etc.
unicodeEnabled:
type: boolean
default: false
description: 'Format of the message. It indicates whether the content should be treated as unicode or not.
'
webUrl:
type: string
format: url
description: Webhook to call for each event triggered by the message (delivered etc.)
params:
type: object
additionalProperties:
description: Any type
description: Pass the set of attributes to customize the template. For example, {"FNAME":"Joe", "LNAME":"Doe"}. These are the placeholder variables in the template that will be replaced with the corresponding values passed in the params object. Applicable only if `templateId` is used.
templateId:
type: integer
description: Template ID to send SMS with the template. When provided, overrides the content parameter. Mandatory if 'content' is not passed.
content:
type: string
description: 'Content of the message. If more than **160 characters** long, will be sent as multiple text messages. Mandatory if ''templateId'' is not passed, ignored if ''templateId'' is passed.
'
required:
- recipient
- sender
title: sendTransacSms
GetTransacAggregatedSmsReportRequestBadRequestError:
type: object
properties:
code:
$ref: '#/components/schemas/TransactionalSmsStatisticsAggregatedReportGetResponsesContentApplicationJsonSchemaCode'
description: Error code displayed in case of a failure
message:
type: string
description: Readable message associated to the failure
required:
- code
- message
title: GetTransacAggregatedSmsReportRequestBadRequestError
TransactionalSmsSendPostResponsesContentApplicationJsonSchemaCode:
type: string
enum:
- invalid_parameter
- missing_parameter
- out_of_range
- campaign_processing
- campaign_sent
- document_not_found
- not_enough_credits
- permission_denied
- duplicate_parameter
- duplicate_request
- method_not_allowed
- unauthorized
- account_under_validation
- not_acceptable
- bad_request
- unprocessable_entity
- Domain does not exist
- Contact email not found
- Attribute not found
- Category id not found
- Invalid parameters passed
- Record(s) for identifier not found
- Returned when query params are invalid
- Returned when invalid data posted
- Feed not found
- Campaign ID not found
- api-key not found
- DMARC policy requires domain authentication
- DNS records not properly configured
- Invalid OTP code provided
- OTP code has expired
- Domain already exists in your account
- The sum of all IP weights must equal 100
- Authentication failed
- Insufficient credits
- Request already processed
description: Error code displayed in case of a failure
title: TransactionalSmsSendPostResponsesContentApplicationJsonSchemaCode
TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaCode:
type: string
enum:
- invalid_parameter
- missing_parameter
- out_of_range
- campaign_processing
- campaign_sent
- document_not_found
- not_enough_credits
- permission_denied
- duplicate_parameter
- duplicate_request
- method_not_allowed
- unauthorized
- account_under_validation
- not_acceptable
- bad_request
- unprocessable_entity
- Domain does not exist
- Contact email not found
- Attribute not found
- Category id not found
- Invalid parameters passed
- Record(s) for identifier not found
- Returned when query params are invalid
- Returned when invalid data posted
- Feed not found
- Campaign ID not found
- api-key not found
- DMARC policy requires domain authentication
- DNS records not properly configured
- Invalid OTP code provided
- OTP code has expired
- Domain already exists in your account
- The sum of all IP weights must equal 100
- Authentication failed
- Insufficient credits
- Request already processed
description: Error code displayed in case of a failure
title: TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaCode
TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaCode:
type: string
enum:
- invalid_parameter
- missing_parameter
- out_of_range
- campaign_processing
- campaign_sent
- document_not_found
- not_enough_credits
- permission_denied
- duplicate_parameter
- duplicate_request
- method_not_allowed
- unauthorized
- account_under_validation
- not_acceptable
- bad_request
- unprocessable_entity
- Domain does not exist
- Contact email not found
- Attribute not found
- Category id not found
- Invalid parameters passed
- Record(s) for identifier not found
- Returned when query params are invalid
- Returned when invalid data posted
- Feed not found
- Campaign ID not found
- api-key not found
- DMARC policy requires domain authentication
- DNS records not properly configured
- Invalid OTP code provided
- OTP code has expired
- Domain already exists in your account
- The sum of all IP weights must equal 100
- Authentication failed
- Insufficient credits
- Request already processed
description: Error code displayed in case of a failure
title: TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaCode
TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent:
type: string
enum:
- bounces
- hardBounces
- softBounces
- delivered
- sent
- accepted
- unsubscription
- replies
- blocked
- rejected
- skipped
description: Event which occurred
title: TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent
TransactionalSmsStatisticsAggregatedReportGetResponsesContentApplicationJsonSchemaCode:
type: string
enum:
- invalid_parameter
- missing_parameter
- out_of_range
- campaign_processing
- campaign_sent
- document_not_found
- not_enough_credits
- permission_denied
- duplicate_parameter
- duplicate_request
- method_not_allowed
- unauthorized
- account_under_validation
- not_acceptable
- bad_request
- unprocessable_entity
- Domain does not exist
- Contact email not found
- Attribute not found
- Category id not found
- Invalid parameters passed
- Record(s) for identifier not found
- Returned when query params are invalid
- Returned when invalid data posted
- Feed not found
- Campaign ID not found
- api-key not found
- DMARC policy requires domain authentication
- DNS records not properly configured
- Invalid OTP code provided
- OTP code has expired
- Domain already exists in your account
- The sum of all IP weights must equal 100
- Authentication failed
- Insufficient credits
- Request already processed
description: Error code displayed in case of a failure
title: TransactionalSmsStatisticsAggregatedReportGetResponsesContentApplicationJsonSchemaCode
SendTransacSmsType:
type: string
enum:
- transactional
- marketing
default: transactional
description: Type of the SMS. Marketing SMS messages are those sent typically with marketing content. Transactional SMS messages are sent to individuals and are triggered in response to some action, such as a sign-up, purchase, etc.
title: SendTransacSmsType
TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaReportsItems:
type: object
properties:
accepted:
type: integer
format: int64
description: Number of accepted SMS for the date
blocked:
type: integer
format: int64
description: Number of blocked contact for the date
date:
type: string
format: date
description: Date for which statistics are retrieved
delivered:
type: integer
format: int64
description: Number of delivered SMS for the date
hardBounces:
type: integer
format: int64
description: Number of hardbounces for the date
rejected:
type: integer
format: int64
description: Number of rejected SMS for the date
replied:
type: integer
format: int64
description: Number of answered SMS for the date
requests:
type: integer
format: int64
description: Number of requests for the date
skipped:
type: integer
format: int64
description: Number of skipped SMS for the date
softBounces:
type: integer
format: int64
description: Number of softbounces for the date
unsubscribed:
type: integer
format: int64
description: Number of unsubscription for the date
title: TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaReportsItems
TransactionalSmsStatisticsEventsGetParametersSort:
type: string
enum:
- asc
- desc
default: desc
title: TransactionalSmsStatisticsEventsGetParametersSort
TransactionalSmsStatisticsReportsGetParametersSort:
type: string
enum:
- asc
- desc
default: desc
title: TransactionalSmsStatisticsReportsGetParametersSort
Transactional_SMS_getTransacSmsReport_Response_200:
type: object
properties:
reports:
type: array
items:
$ref: '#/components/schemas/TransactionalSmsStatisticsReportsGetResponsesContentApplicationJsonSchemaReportsItems'
title: Transactional SMS_getTransacSmsReport_Response_200
SendAsyncTransactionalSmsRequestBadRequestError:
type: object
properties:
code:
$ref: '#/components/schemas/TransactionalSmsSendPostResponsesContentApplicationJsonSchemaCode'
description: Error code displayed in case of a failure
message:
type: string
description: Readable message associated to the failure
required:
- code
- message
title: SendAsyncTransactionalSmsRequestBadRequestError
securitySchemes:
api-key:
type: apiKey
in: header
name: api-key
description: The API key should be passed in the request headers as `api-key` for authentication.