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-transactional-sms-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 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: Brevo Transactional SMS API
description: The Brevo Transactional SMS API allows developers to send non-promotional SMS messages such as order confirmations, delivery notifications, and verification codes using recipients' phone numbers. It supports sending individual messages with customizable sender names and provides endpoints for tracking SMS delivery status and activity. The API is designed for time-sensitive notifications that require immediate delivery to mobile devices.
version: '3.0'
contact:
name: Brevo Support
url: https://help.brevo.com
termsOfService: https://www.brevo.com/legal/termsofuse/
servers:
- url: https://api.brevo.com/v3
description: Brevo Production API Server
security:
- apiKeyAuth: []
tags:
- name: Transactional SMS
description: Send transactional SMS messages for notifications, verifications, and alerts.
paths:
/transactionalSMS/sms:
post:
operationId: sendTransactionalSms
summary: Send a transactional SMS
description: Sends a transactional SMS message to a recipient phone number. Supports customizable sender names and message content. The message is delivered immediately for time-sensitive notifications.
tags:
- Transactional SMS
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendTransactionalSms'
responses:
'201':
description: SMS sent successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SendSmsResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/transactionalSMS/send:
post:
operationId: sendAsyncTransactionalSms
summary: Send SMS message asynchronously to a mobile number
description: '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.
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.'
tags:
- Transactional SMS
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:
- Transactional SMS
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:
- Transactional SMS
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:
- Transactional SMS
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:
SendTransactionalSms:
type: object
required:
- sender
- recipient
- content
properties:
sender:
type: string
description: Name or number displayed as the SMS sender. Must be between 3 and 11 characters for alphanumeric senders.
minLength: 3
maxLength: 11
recipient:
type: string
description: Recipient phone number in international format with country code prefix.
content:
type: string
description: Text content of the SMS message.
maxLength: 160
type:
type: string
description: Type of SMS message to send.
enum:
- transactional
- marketing
default: transactional
tag:
type: string
description: Tag for categorizing the SMS for reporting purposes.
webUrl:
type: string
format: uri
description: Webhook URL to receive delivery status notifications.
ErrorResponse:
type: object
properties:
code:
type: string
description: Error code identifying the type of error.
message:
type: string
description: Human-readable description of the error.
SendSmsResponse:
type: object
properties:
reference:
type: string
description: Unique reference identifier for the sent SMS message.
messageId:
type: integer
format: int64
description: Unique message ID assigned to the SMS.
smsCount:
type: integer
description: Number of SMS segments used to send the message.
usedCredits:
type: number
format: float
description: Number of SMS credits consumed.
remainingCredits:
type: number
format: float
description: Remaining SMS credits in the account.
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
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
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
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
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
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
Transactional_SMS_sendAsyncTransactionalSms_Response_201:
type: object
properties:
messageId:
type: integer
format: int64
required:
- messageId
title: Transactional SMS_sendAsyncTransactionalSms_Response_201
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
TransactionalSmsStatisticsReportsGetParametersSort:
type: string
enum:
- asc
- desc
default: desc
title: TransactionalSmsStatisticsReportsGetParametersSort
TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent:
type: string
enum:
- bounces
- hardBounces
- softBounces
- delivered
- sent
- accepted
- unsubscription
- replies
- blocked
- rejected
- skipped
description: Event which occurred
title: TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent
Transactional_SMS_getSmsEvents_Response_200:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/TransactionalSmsStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems'
title: Transactional SMS_getSmsEvents_Response_200
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
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
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
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
TransactionalSmsStatisticsEventsGetParametersSort:
type: string
enum:
- asc
- desc
default: desc
title: TransactionalSmsStatisticsEventsGetParametersSort
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
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
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
TransactionalSmsStatisticsEventsGetParametersEvent:
type: string
enum:
- bounces
- hardBounces
- softBounces
- delivered
- sent
- accepted
- unsubscription
- replies
- blocked
- rejected
- skipped
title: TransactionalSmsStatisticsEventsGetParametersEvent
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: api-key
description: Brevo API key passed in the api-key request header for authentication.
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.
externalDocs:
description: Brevo Transactional SMS Documentation
url: https://developers.brevo.com/docs/transactional-sms-endpoints