Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Insider SMS API
version: 1.0.0
contact:
name: Insider One Support
email: support@useinsider.com
url: https://academy.insiderone.com/docs/insider-one-apis-1
termsOfService: https://insiderone.com/terms-of-use/
description: 'Operations tagged SMS across 2 of this provider''s published API definitions: insider-contact-openapi.yml, insider-sms-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://contact.useinsider.com
- url: https://sms.useinsider.com
tags:
- name: SMS
paths:
/sms/v1/subscribe:
post:
operationId: resubscribeSmsUsers
summary: Resubscribe SMS users
tags:
- SMS
description: 'This API allows you to set an unreachable phone number status as reachable on Insider''s SMS platform.
A newer version of the Resubscribe API is available with support for bulk data ingestion. While the older version is still supported, we recommend using the latest version for improved functionality and future compatibility.
Body Parameters
Every request made to the request endpoint requires a request body formatted in JSON and containing your phone number’s content and metadata. This includes the subscriber’s phone number.
Parameter
Description
Data Type
Required
phone_number
User''s phone number in E.164 format (e.g. +6598765432)
String
Yes
Sample Body
The following is a sample body to resubscribe users to the SMS platform.
{
"phone_number": "+905012345678"
}
Sample Responses
200 OK
The following response returns if the request is successful.
{
"statusMessage": "OK"
}
400 Bad Request
{
"statusMessage": "Bad request"
}
401 Unauthorized
The following response returns if the request is not authorized.
{
"statusMessage": "Unauthorized"
}
Limitations
When sending your request, make sure to follow these limitations.
All functions must be executed with a simple HTTPS POST request.
Only phone numbers can be sent via this API. No data can be retrieved.
The API Key should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
The value of X-PARTNER-NAME header should be lowercase.'
security:
- PartnerName: []
- RequestToken: []
requestBody:
content:
application/json:
example:
phone_number: '+655012345678'
responses:
'200':
description: OK
content:
application/json:
example:
statusMessage: OK
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://contact.useinsider.com
/sms/v1/unsubscribe:
post:
operationId: unsubscribeSmsUsersFromDatabase
summary: Unsubscribe SMS users from database
tags:
- SMS
description: 'This API enables you to unsubscribe users from Insider''s SMS platform.
A newer version of the Unsubscribe API is available with support for bulk data ingestion. While the older version is still supported, we recommend using the latest version for improved functionality and future compatibility.
Body Parameters
Every request made to the request endpoint requires a request body formatted in JSON and containing your phone number’s content and metadata. This includes the subscriber’s phone number.
Parameter
Description
Data Type
Required
phone_number
User''s phone number in E.164 format (e.g. +6598765432)
String
Yes
Sample Body
The following is a sample body to unsubscribe users from the SMS platform.
{
"phone_number": "+905012345678"
}
Sample Responses
200 OK
The following response returns if the request is successful.
{
"statusMessage": "OK"
}
400 Bad Request
{
"statusMessage": "Bad request"
}
401 Unauthorized
The following response returns if the request is not authorized.
{
"statusMessage": "Unauthorized"
}
Limitations
When sending your request, make sure to follow these limitations.
All functions must be executed with a simple HTTPS POST request.
Only global unsubscribers can be sent via this API. No data can be retrieved.
The API Key should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
The value of X-PARTNER-NAME header should be lowercase.'
security:
- PartnerName: []
- RequestToken: []
requestBody:
content:
application/json:
example:
phone_number: '+65012345678'
responses:
'200':
description: OK
content:
application/json:
example:
statusMessage: OK
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://contact.useinsider.com
/sms/v2/subscribe:
post:
operationId: resubscribeSmsUsersV2
summary: Resubscribe SMS users / v2
tags:
- SMS
description: 'The SMS Resubscribe API enables you to update an unreachable phone number status to reachable on Insider''s SMS platform.
If a user exists with the provided phone number, the user''s subscription status will be updated. If no user exists and the phone number is used as an identifier, a new user will be created.
Body Parameters
Parameter
Description
Data Type
Required
phone_numbers
Users'' phone numbers in E.164 format (e.g. +6598765432)
String Array
Yes
Sample Request
Every request made to the request endpoint requires a request body formatted in JSON containing your phone number’s content and metadata, including the subscriber’s phone number.
The phone_numbers field is required for resubscribe requests.
curl --location --request POST ''http://contact.useinsider.com/sms/v2/subscribe'' \
--header ''Content-Type: application/json'' \
--header ''X-PARTNER-NAME: mybrand'' \
--header ''X-REQUEST-TOKEN: a1b2c3d4e5f6'' \
--data-raw ''{
"phone_numbers": [
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000"
]
}''
Sample Responses
200 OK
The following response returns if the request is successful.
{
"statusMessage": "OK"
}
400 Bad Request
{
"statusMessage": "Bad request"
}
401 Unauthorized
The following response returns if the request is not authorized.
{
"statusMessage": "Unauthorized"
}
Limitations
When sending your request, make sure to follow these limitations.
All functions must be executed with a simple HTTPS POST request.
Only phone numbers can be sent via this API. No data can be retrieved.
A maximum of 500 phone numbers can be consumed in one request.
The API Key should be provided as the authorization key in the request header. If the key is incorrect, the operation will not be executed, and an authorization error will return in the response.
The value of the X-PARTNER-NAME header should be lowercase.
The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider team — we can adjust it to fit your needs.'
security:
- PartnerName: []
- RequestToken: []
requestBody:
content:
application/json:
example:
phone_numbers:
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
responses:
'200':
description: OK
content:
application/json:
example:
statusMessage: OK
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://contact.useinsider.com
/sms/v2/unsubscribe:
post:
operationId: unsubscribeSmsUsersFromDatabaseV2
summary: Unsubscribe SMS users from database / v2
tags:
- SMS
description: 'The SMS Unsubscribe API enables you to unsubscribe users from Insider''s SMS platform.
If a user exists with the provided phone number, the user''s subscription status will be updated. If no user exists and the phone number is used as an identifier, a new user will be created.
Body Parameters
Parameter
Description
Data Type
Required
phone_numbers
Users'' phone numbers in E.164 format (e.g. +6598765432)
String Array
Yes
Sample Request
Every request made to the request endpoint requires a request body formatted in JSON containing your phone number’s content and metadata, including the subscriber’s phone number.
The phone_numbers field is required for resubscribe requests.
curl --location --request POST ''http://contact.useinsider.com/sms/v2/unsubscribe'' \
--header ''Content-Type: application/json'' \
--header ''X-PARTNER-NAME: mybrand'' \
--header ''X-REQUEST-TOKEN: a1b2c3d4e5f6'' \
--data-raw ''{
"phone_numbers": [
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000",
"+900000000000"
]
}''
Sample Responses
200 OK
The following response returns if the request is successful.
{
"statusMessage": "OK"
}
400 Bad Request
{
"statusMessage": "Bad request"
}
401 Unauthorized
The following response returns if the request is not authorized.
{
"statusMessage": "Unauthorized"
}
Limitations
When sending your request, make sure to follow these limitations.
All functions must be executed with a simple HTTPS POST request.
Only phone numbers can be sent via this API. No data can be retrieved.
A maximum of 500 phone numbers can be consumed in one request.
The API Key should be provided as the authorization key in the request header. If the key is incorrect, the operation will not be executed, and an authorization error will return in the response.
The value of the X-PARTNER-NAME header should be lowercase.
The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider team — we can adjust it to fit your needs.'
security:
- PartnerName: []
- RequestToken: []
requestBody:
content:
application/json:
example:
phone_numbers:
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
- '+900000000000'
responses:
'200':
description: OK
content:
application/json:
example:
statusMessage: OK
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://contact.useinsider.com
/analytics/v1/campaign:
post:
operationId: getSmsCampaignAnalytics
summary: Get SMS campaign analytics
tags:
- SMS
description: 'SMS Campaign Analytics details will be listed as you send a request to this API.
This API does not contain Architect Analytics.
Headers
Header
Sample Value
Description
X-INS-AUTH-KEY
1a2b3c4d5e6f
This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Query Parameters
Parameter
Data Type
Description
Required
campaignId
Integer
Your campaign ID that can be found on the campaign URL
Yes
Sample Query
Before sending the request, make sure:
To replace the authorization value with your API key.
To replace the sample values in campaignID with your value in the required data type.
curl --location ''https://sms.useinsider.com/analytics/v1/campaign'' \
--header ''x-ins-auth-key: 1a2b3c4d5e6f'' \
--header ''Content-Type: application/json'' \
--data ''{
"campaignId": 11242
}''
Sample Responses
200 Ok
{
"targeted":0,
"messageParts":0,
"sent":0,
"dropped":0,
"delivery":{
"count":{
"delivered":0,
"undelivered":0
},
"rate":"0.00%"
},
"clickThrough":{
"clicks":0,
"rate":"0.00%",
"revenue":"0"
},
"conversion":{
"conversions":0,
"rate":"0.00%"
},
"unsubscribers":{
"count":0,
"rate":"0.00%"
},
"droppedMessages":{
"frequencyCapped":{
"count":0,
"rate":"0.00%"
},
"duplicates":{
"count":0,
"rate":"0.00%"
},
"internalErrors":{
"count":0,
"rate":"0.00%"
},
"countryCodeDrops":{
"count":0,
"rate":"0.00%"
},
"invalidPhoneNumbers":{
"count":0,
"rate":"0.00%"
},
"couponListDrops":{
"count":0,
"rate":"0.00%"
},
"silentHours":{
"count":0,
"rate":"0.00%"
}
},
"undeliveredMessages":{
"carrierViolations":{
"count":0,
"rate":"0.00%",
"details":[
]
},
"hardBounces":{
"count":0,
"rate":"0.00%",
"details":[
]
},
"softBounces":{
"count":0,
"rate":"0.00%",
"details":[
]
},
"deliveryFailures":{
"count":0,
"rate":"0.00%",
"details":[
]
},
"deliveryReportMissing":{
"count":0,
"rate":"0.00%"
}
}
}
401: Unauthorized request. Please make sure of your authorization key correctness
422: This campaign ID is not valid. Please be sure that your campaign ID belongs to your account.
Limitations
All functions must be executed with an HTTPS POST request.
The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
This API provides data for a 1-year range.
You can send 100 requests per minute with the same API Key. If you exceed the rate limit, the perPage value should be between 1-100.'
parameters:
- name: campaignId
in: query
required: false
schema:
type: string
example: Integer
security:
- InsAuthKey: []
requestBody:
content:
application/json:
example:
campaignId: 11242
responses:
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://sms.useinsider.com
/analytics/v1/list:
get:
operationId: getSmsCampaignList
summary: Get SMS campaign list
tags:
- SMS
description: 'Insider''s SMS Analytics API allows you to get the SMS campaigns list from your back-end without using the Insider''s InOne panel. This API returns Active, Test, Passive, Completed, and Stopped campaigns with this endpoint.
Headers
Header
Sample Value
Description
X-INS-AUTH-KEY
1a2b3c4d5e6f
This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Query Parameters
Parameter
Data Type
Description
Required
Default Value
Page
Integer
Specifies the number of pages of SMS campaigns
Yes
1
PerPage
Integer
Specifies the number of SMS campaigns to be listed per page
Yes
10
Please note that the endTime field operates on a T-1 logic:- To define a time range, ensure that the endTime is set to one second before the upper limit of the range.- For example, for a time range of 11-11-2024 10:00:00 to 11-11-2024 11:00:00, set the end_date to 11-11-2024 10:59:59The minimum allowed time range for requests is 1 hour. If the requested interval is shorter, the system aggregates and returns data for the entire hour. For instance, a 30-minute request will still yield data for the full hour.
Sample Query
Before sending the request, make sure to replace the authorization value with your own API key.
curl --location ''https://sms.useinsider.com/analytics/v1/list?perPage=10&page=1'' \
--header ''x-ins-auth-key:1a2b3c4d5e6f \''
Campaigns are listed in order from newest to oldest.
Sample Responses
200 Ok
{
"current_page":1,
"data":[
{
"campaignId":12692,
"campaignName":"Sample Campaign 3",
"startTime":1727770020,
"status":"completed"
},
{
"campaignId":12691,
"campaignName":"Sample Campaign 2",
"startTime":1727770260,
"status":"completed"
},
{
"campaignId":12689,
"campaignName":"Sample Campaign 1",
"startTime":1727770356,
"status":"completed"
},
],
"first_page_url":"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=1",
"from":1,
"last_page":160,
"last_page_url":"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=160",
"next_page_url":"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=2",
"per_page":10,
"prev_page_url":null,
"to":10,
"totalCampaign":1596 }
401: Unauthorized request. Please make sure of your authorization key correctness
422: Your data is not valid.
Limitations
All functions must be executed with an HTTPS POST request.
The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
This API provides data for a 1-year range.
You can send 100 requests per minute with the same API Key. If you exceed the rate limit, the perPage value should be between 1-100.'
parameters:
- name: Page
in: query
required: false
schema:
type: string
example: Integer
- name: PerPage
in: query
required: false
schema:
type: string
example: Integer
security:
- InsAuthKey: []
responses:
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://sms.useinsider.com
/analytics/v1/overall:
post:
operationId: getOverallSmsCampaignAnalytics
summary: Get overall SMS campaign analytics
tags:
- SMS
description: SMS Overall Campaign Analytics details will be listed for a given period as you send a request to this API.
parameters:
- name: startTime
in: query
required: false
schema:
type: string
example: int64
- name: endTime
in: query
required: false
schema:
type: string
example: int64
security:
- InsAuthKey: []
requestBody:
content:
application/json:
example:
startTime: 1727643600
endTime: 1728334799
responses:
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://sms.useinsider.com
/analytics/v1/transactional:
post:
operationId: getTransactionalSmsAnalytics
summary: Get Transactional SMS analytics
tags:
- SMS
description: 'Transactional SMS Analytics details will be listed for a given time period as you send a request to this API.
Headers
Header
Sample Value
Description
X-INS-AUTH-KEY
1a2b3c4d5e6f
This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Query Parameters
Parameter
Data Type
Description
Required
startTime
int64
The time campaign is being launched. Specifies a 10-digit epoch start time.
Yes
endTime
int64
The current date (today’s date on the payload). It can be customizable according to your use case. Specifies a 10-digit epoch start time.
Yes
Please note that the endTime field operates on a T-1 logic:- To define a time range, ensure that the endTime is set to one second before the upper limit of the range.- For example, for a time range of 11-11-2024 10:00:00 to 11-11-2024 11:00:00, set the end_date to 11-11-2024 10:59:59The minimum allowed time range for requests is 1 hour. If the requested interval is shorter, the system aggregates and returns data for the entire hour. For instance, a 30-minute request will still yield data for the full hour.
Sample Query
Before sending the request, make sure:
To replace the authorization value with your API key.
To replace the sample values in startTime, and endTime with your values in the required data type.
curl --location ''https://sms.useinsider.com/analytics/v1/transactional'' \
--header ''x-ins-auth-key: 1a2b3c4d5e6f'' \
--header ''Content-Type: application/json'' \
--data ''{
"startTime": 1727643600,
"endTime": 1728334799
}''
Sample Responses
200 Ok
{
"messageParts": 0,
"sent": 0,
"dropped": 0,
"delivery": {
"count": {
"delivered": 0,
"undelivered": 0
},
"rate": "0.00%"
},
"clickThrough": {
"clicks": 0,
"rate": "0.00%"
},
"droppedMessages": {
"internalErrors": {
"count": 0,
"rate": "0.00%"
},
"countryCodeDrops": {
"count": 0,
"rate": "0.00%"
},
"invalidPhoneNumbers": {
"count": 0,
"rate": "0.00%"
}
},
"undeliveredMessages": {
"carrierViolations": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"hardBounces": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"softBounces": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"deliveryFailures": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"deliveryReportMissing": {
"count": 0,
"rate": "0.00%"
}
}
}
401: Unauthorized request. Please make sure of your authorization key correctness
422
The start time parameter must be earlier than the end time.
The start time parameter must be within the last 1 year.
The end time parameter must be earlier than the current time.
The start time parameter must be a valid integer.
The end time parameter must be a valid integer.
429: Your request exceeds the limit.
Limitations
All functions must be executed with an HTTPS POST request.
The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
This API provides data for a 1-year range.
You can send 100 requests per minute with the same API Key. If you exceed the rate limit, the perPage value should be between 1-100.'
parameters:
- name: startTime
in: query
required: false
schema:
type: string
example: Int64
- name: endTime
in: query
required: false
schema:
type: string
example: Int64
security:
- InsAuthKey: []
requestBody:
content:
application/json:
example:
startTime: 1727643600
endTime: 1728334799
responses:
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://sms.useinsider.com
/analytics/v1/verify:
post:
operationId: getOtpVerifySmsAnalytics
summary: Get OTP / Verify SMS analytics
tags:
- SMS
description: 'SMS OTP / Verify Analytics details will be listed for a given time period as you send a request to this API.
Headers
Header
Sample Value
Description
X-INS-AUTH-KEY
1a2b3c4d5e6f
This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Query Parameters
Parameter
Data Type
Description
Required
startTime
int64
The time campaign is being launched. Specifies a 10-digit epoch start time.
Yes
endTime
int64
The current date (today’s date on the payload). It can be customizable according to your use case. Specifies a 10-digit epoch start time.
Yes
Please note that the endTime field operates on a T-1 logic:- To define a time range, ensure that the endTime is set to one second before the upper limit of the range.- For example, for a time range of 11-11-2024 10:00:00 to 11-11-2024 11:00:00, set the end_date to 11-11-2024 10:59:59The minimum allowed time range for requests is 1 hour. If the requested interval is shorter, the system aggregates and returns data for the entire hour. For instance, a 30-minute request will still yield data for the full hour.
Sample Query
Before sending the request, make sure:
To replace the authorization value with your API key.
To replace the sample values in startTime, and endTime with your values in the required data type.
curl --location ''https://sms.useinsider.com/analytics/v1/verify'' \
--header ''x-ins-auth-key: 1a2b3c4d5e6f'' \
--header ''Content-Type: application/json'' \
--data ''{
"startTime": 1727643600,
"endTime": 1728334799
}''
Sample Responses
200 Ok
{
"messageParts": 0,
"sent": 0,
"dropped": 0,
"delivery": {
"count": {
"delivered": 0,
"undelivered": 0
},
"rate": "0.00%"
},
"verification": {
"count": {
"verified": 0,
"unverified": 0
},
"rate": "0.00%"
},
"droppedMessages": {
"internalErrors": {
"count": 0,
"rate": "0.00%"
},
"countryCodeDrops": {
"count": 0,
"rate": "0.00%"
},
"invalidPhoneNumbers": {
"count": 0,
"rate": "0.00%"
}
},
"undeliveredMessages": {
"carrierViolations": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"hardBounces": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"softBounces": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"deliveryFailures": {
"count": 0,
"rate": "0.00%",
"details": {}
},
"deliveryReportMissing": {
"count": 0,
"rate": "0.00%"
}
},
"unverifiedMessages": {
"attemptFailures": {
"count": 0,
"rate": "0.00%"
},
"timeoutFailures": {
"count": 0,
"rate": "0.00%"
}
}
}
401: Unauthorized request. Please make sure of your authorization key correctness
422
The start time parameter must be earlier than the end time.
The start time parameter must be within the last 1 year.
The end time parameter must be earlier than the current time.
The start time parameter must be a valid integer.
The end time parameter must be a valid integer.
429: Your request exceeds the limit.
Limitations
All functions must be executed with an HTTPS POST request.
The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed and an authorization error will return in the response.
This API provides data for a 1-year range.
You can send 100 requests per minute with the same API Key. If you exceed the rate limit, the perPage value should be between 1-100.'
security:
- InsAuthKey: []
requestBody:
content:
application/json:
example:
startTime: 1727643600
endTime: 1728334799
responses:
'429':
$ref: '#/components/responses/TooManyRequests'
servers:
- url: https://sms.useinsider.com
components:
responses:
TooManyRequests:
description: Too Many Requests. The published per-endpoint rate limit was exceeded; back off and retry, honouring Retry-After when present.
content:
application/json:
example:
message: Too Many Requests
status: 429
securitySchemes:
PartnerName:
type: apiKey
in: header
name: X-PARTNER-NAME
description: Insider One partner (account) name, lowercase.
RequestToken:
type: apiKey
in: header
name: X-REQUEST-TOKEN
description: Insider One API key (request token) generated in the InOne panel.
InsAuthKey:
type: apiKey
in: header
name: X-INS-AUTH-KEY
description: Insider One authorization key for this API, generated in the InOne panel.
externalDocs:
description: Insider One API reference
url: https://academy.insiderone.com/docs/api-reference-welcome
x-refined-from:
- insider-contact-openapi.yml
- insider-sms-openapi.yml
x-provenance:
generated: '2026-08-13'
method: derived
source: postman/insider-one-apis.postman_collection.json
source_url: https://documenter.gw.postman.com/api/collections/24851117/2sB3dSR9bM
publisher_page: https://developers.insiderone.com/
note: Insider One publishes a single public Postman collection covering every REST API. This document is the subset of that collection served from analytics.api.useinsider.com.