{"info":{"_postman_id":"6292aab3-56be-4aba-a69a-ab1b4982f5dd","name":"Insider One APIs","description":"

Insider One's REST APIs provide you the ability to manage your user data and product catalog, send messages, and export data.

\n

You can call Insider One's various APIs from your end to create, delete, update, and read data on Insider One's end. Using these APIs, you can send messages to your users, update their data, export your analytics, and perform many other actions.

\n

Insider One also provides Webhooks to manage Insider One's Unified Customer Database, Email, SMS, and Mobile App capabilities. To get a better understanding of the difference between an API and a Webhook, refer to Webhooks vs APIs.

\n

If you need any assistance for your new/existing API integrations, you can create an Integration Support ticket and reach out to the Insider One team.

\n

Scope

\n

Using Insider One's APIs, you can perform many actions based on your use cases. For example, you can create and send web push notifications to your opt-in users, or unify your users' online data with their offline purchase data. See below for the available categorized actions:

\n\n

Authentication Requirements

\n

To send a request, you might need the following requirements, depending on the API you are using:

\n

API key

\n

Insider One uses authentication to validate and process incoming API calls. Each API request must include an API key—a unique code used to authenticate the request and authorize access.

\n

Only users with Administrator permissions can generate API tokens. If your account does not have the necessary permissions, please contact the Insider One team for assistance.

\n

For security reasons, generated tokens are fully visible only once—immediately after they are created. After that, the full token will no longer be accessible.
We strongly recommend saving the token securely at the time of generation. If needed, you can always generate a new token for your project.

\n

Read more about API Authentication Tokens.

\n

Request (Partner) Token

\n

Some of the Insider One APIs listed above might require a request token. The Insider One team provides this token for your account.

\n

Partner Name

\n

Some of the Insider One APIs listed above might require your partner name. Your partner name is displayed in the dropdown menu next to your user name on your dashboard.

\n

You can also navigate to InOne > Inone Settings > Account Settings to read your partner name.

\n

Rate Limits

\n

Rate limiting controls how many API requests can be made within a defined time window. In large systems, many unintentional denial-of-service (DoS) incidents stem from software bugs or configuration errors rather than malicious attacks. By enforcing rate limits, the system protects itself from overload and ensures stable performance.

\n

If you exceed the allowed number of requests in the given timeframe, the API will respond with an error, typically a 429 Too Many Requests status code.

\n

Refer to the API Rate Limits for the specific rate limits applied to Insider One APIs.

\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Scope","slug":"scope"}],"owner":"24851117","collectionId":"6292aab3-56be-4aba-a69a-ab1b4982f5dd","publishedId":"2sB3dSR9bM","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-12-12T11:35:23.000Z"},"item":[{"name":"User Data APIs","item":[{"name":"Upsert user data","id":"31942c05-0d7a-4681-a050-271c8424f231","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"email\": \"sample@mail.com\",\n \"uuid\": \"1x2y3z\",\n \"custom\": {\n \"user_loyalty_id\": \"xyz123\"\n }\n },\n \"attributes\": {\n \"email_optin\": true,\n \"age\": 30,\n \"language\": \"en_US\",\n \"list_id\": [\n 1,\n 2\n ],\n \"birthday\": \"1980-01-01T00:00:00Z\",\n \"custom\": {\n \"loyalty\": \"Gold\"\n }\n },\n \"events\": [\n {\n \"event_name\": \"purchase\",\n \"timestamp\": \"2021-01-10T21:35:20Z\",\n \"event_params\": {\n \"product_id\": \"AGH210070\",\n \"unit_price\": 990.9,\n \"unit_sale_price\": 890.9,\n \"event_group_id\": \"ORDER123\",\n \"taxonomy\": [\n \"Electronic\",\n \"Phone\"\n ],\n \"currency\": \"USD\"\n }\n },\n {\n \"event_name\": \"account_created\",\n \"timestamp\": \"2021-01-17T14:41:21+03:00\",\n \"event_params\": {\n \"custom\": {\n \"customer_type\": \"trial\",\n \"trial_start_date\": \"2021-01-17T14:39:21+03:00\",\n \"trial_end_date\": \"2021-01-24T14:41:21+03:00\"\n }\n }\n }\n ]\n }\n ]\n}"},"url":"https://unification.useinsider.com/api/user/v1/upsert","description":"

Upsert API enables you to send users' attributes and events to Insider. It allows you to insert and update user data whenever you need it.

\n

You can possibly use the Upsert User Data for the following use cases:

\n\n

If you want to limit access to the Upsert API for users with a UCD API Key or control data transmission through this API, you can implement IP restrictions. This ensures that only Upsert API requests from approved IP addresses will be accepted. If you want to make such a custom adjustment, please contact the Insider team.

\n

You should use the Identifier Update API if you want to update an identifier listed in your Identity Resolution Management Settings.

\n

Body Parameters

\n

You can send two data types to our data ingestion API: attributes and events.

\n

An attribute is a single, static piece of information about a user, such as gender, age, or loyalty class. When you send data to an array attribute for a user, the new values are added to the existing ones by default. If you don't want to append values but overwrite the array attributes, you need to add \"not_append\": true or \"append\": false to the request. If you use both together, the value you provide for \"append\" will be accepted.

\n

An event is a collection of information, such as purchased products or visited stores. Any update request for an existing user with the same event name will append it to the collection.

\n

Each user object must have at least one attributes object or one events object. No default attribute is mandatory. If you use attributes object in the request, you need to have at least one attribute in your object.You can use event group ID to group the events of the same type if you send multiple events of this type.When sending events via the Upsert API, ensure that the values fall within the TTL (Time-to-Live) of the events. Events with timestamps exceeding the TTL will not be written. You can refer to the Data Retention for further information.

\n

Using Upsert API, you can import historical data. While importing historical data, if there is an active Architect On Event element or the data stream is set, and the imported data meets the conditions of the journey and the data stream, the Architect On Event element or data stream can be triggered.

\n

For example, you send the purchase events from one year ago to users with Upsert API. At the same time, if an active Architect journey is set with a purchase condition using the On Event element, users will enter this journey because they meet the condition based on their data from a year ago.

\n

A boolean flag called “skip_hook” is available in the Upsert request body to prevent historical data from entering the current journey. Thanks to this flag, you can choose whether to trigger the data stream or use the Architect On Event starter for the imported data.

\n

This flag is not mandatory. If not specified, it is taken as skip_hook: false by default. If you do not want to trigger the data stream, it should be skip_hook: true.

\n

Identifiers must be placed under the identifiers object only. They should not be sent within attributes, events, or any other part of the payload. This structure ensures accurate identity resolution and consistent data processing across the platform.

\n

Insider allows these parameters to send:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
usersArray of user information such as identifiers, attributes and events.ArrayYes
identifiersUser's identifier information.ObjectYes
attributesAttributes object of user information such as gender, age.ObjectNo
emailAttribute. User's email address, can be used as an identifier.StringNo
phone_numberAttribute. User's phone number in E.164 format (e.g. +6598765432), can be used as an identifier.StringNo
email_optinAttribute. User's permission for marketing emails:
True = emails allowed;
False = email not allowed
BooleanNo
gdpr_optinAttribute. User's permission for Insider campaigns, data collection and processing:
False = user will not see any Insider campaign or receive any message from any channel;
True or empty = Insider may interact with the user through personalization campaigns
BooleanNo
sms_optinAttribute. User's permission for SMS:
True = SMS allowed;
False = SMS not allowed
BooleanNo
whatsapp_optinAttribute. User's permission for WhatsApp Message:
True = WhatsApp Message allowed
False = WhatsApp Message not allowed
BooleanNo
nameAttribute. User's name.StringNo
surnameAttribute. User's surname.StringNo
birthdayAttribute. User's birthday in RFC 3339 format (e.g. 1993-03-12T00:00:00Z).
Note: Ensure the birthday ends with Z to indicate UTC time; no other time offset is included.
Date/TimeNo
genderAttribute. Gender of the userStringNo
ageAttribute. Age of the userNumberNo
languageLanguage information of the userStringNo
countryAttribute. The user's country information in ISO 3166-1 alpha-2 format.StringNo
cityAttribute. City information of the user.StringNo
static_segment_idAttribute. Newsletter contact list IDs (users are added directly).Numbers (Number array)No
uuidAttribute. User’s UUID, can be used as an identifier.StringNo
error_callback_endpointAn endpoint to notify you if your upsert request fails on our side because of a unification error.URLNo
loUser's locale informationStringNo
eventsList of eventsArrayNo
event_nameName of the eventStringYes
timestampEvent. Event time, the purchase date for the purchase event in RFC3339 format.DatetimeYes
event_paramsEvent parameters for purchase-related properties.ObjectNo
customObject consisting of custom event parametersObjectNo
event_group_idEvent group IDStringNo (Yes only when the event_name is purchase or cart_page_view)
product_idEvent parameter. Unique product ID.StringNo
nameEvent parameter. Name of the product.StringNo
taxonomyEvent parameter. Category tree of the product.ArrayNo
urlEvent parameter. Product URL for purchase eventsURLNo
currencyEvent parameter. Currency used for product pricing, in ISO 4217 format (e.g. USD).StringNo (Yes only when the event_name is purchase or cart_page_view)
quantityEvent parameter. Quantity of the product.IntegerNo (Yes only when the event_name is purchase)
unit_priceEvent parameter. Price of the product without any discount(s).FloatNo
unit_sale_priceEvent parameter. Unit price of the product.FloatNo (Yes only when the event_name is purchase or cart_page_view)
localeEvent parameter. Locale of the user.StringNo
colorEvent parameter. Color of the product (selected by user).StringNo
sizeEvent parameter. Size of the product (selected by user).StringNo
shipping_costEvent parameter. Shipping cost of the items in basket.StringNo
promotion_nameEvent parameter. Name of the promotion.StringNo
promotion_discountEvent parameter. Total amount of discount applied by promotions.FloatNo
\n

If your company obtains your users' consent in compliance with the local regulations, make sure to pass the GDPR opt-in field to Insider. If you want to stop collecting and processing the data of an identified user, GDPR opt-in field should have the false value. Insider cannot be held liable if these obligations are not fulfilled and reserves the right to seek compensation from your company.

\n

Sample Example

\n

Sample Request

\n

Please be aware of the limitations while sending your request.

\n

The request body consists of a users array. Each user must have an identifiers object.

\n

The sample request below sends the default purchase event. To see the other default events and event parameters that you can use in your requests, refer to Default Events & Attributes.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/upsert' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4e5d6f' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"skip_hook\": false,\n  \"users\": [\n    {\n      \"identifiers\": {\n        \"email\": \"sample@useinsider.com\",\n        \"uuid\": \"1x2y3z\",\n        \"custom\": {\n          \"user_loyalty_id\": \"xyz123\"\n        }\n      },\n      \"attributes\": {\n        \"email_optin\": true,\n        \"age\": 30,\n        \"language\": \"en_US\",\n        \"static_segment_id\": [\n          1,\n          2\n        ],\n        \"birthday\": \"1980-01-01T00:00:00Z\",\n        \"custom\": {\n          \"favorite_color\": [\n            \"green\"\n          ]\n        }\n      },\n      \"events\": [\n        {\n          \"event_name\": \"purchase\",\n          \"timestamp\": \"2021-01-10T21:35:20Z\",\n          \"event_params\": {\n            \"product_id\": \"ABC21000\",\n            \"name\": \"Your Product Name\",\n            \"unit_price\": 990.9,\n            \"unit_sale_price\": 890.9,\n            \"event_group_id\": \"ORDER123\",\n            \"taxonomy\": [\n              \"Electronic\",\n              \"Phone\"\n            ],\n            \"currency\": \"USD\",\n            \"quantity\": 1\n          }\n        },\n        {\n          \"event_name\": \"account_created\",\n          \"timestamp\": \"2021-01-17T14:41:21+03:00\",\n          \"event_params\": {\n            \"custom\": {\n              \"customer_type\": \"trial\",\n              \"trial_start_date\": \"2021-01-17T14:39:21+03:00\",\n              \"trial_end_date\": \"2021-01-24T14:41:21+03:00\"\n            }\n          }\n        }\n      ]\n    }\n  ]\n}'\n\n
\n

The request body below contains insider_id.

\n
\n

insider id is an internal ID maintained by Insider for each user. To find the insider_id, you can refer to the Profile ID on the User Profiles.

\n
\n

error_callback_endpoint is an endpoint that will notify you if your upset request fails on the Insider's side due to a unification error.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/upsert' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4e5d6f' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"skip_hook\": false,\n  \"error_callback_endpoint\":\"http://your-error-callback-endpoint.yourdomain.com\",\n  \"users\": [\n    {\n      \"insider_id\": \"sampleinsiderid\",\n      \"attributes\": {\n        \"email_optin\": true,\n        \"age\": 30,\n        \"language\": \"en_US\",\n        \"list_id\": [\n          1,\n          2\n        ],\n        \"birthday\": \"1980-01-01T00:00:00Z\",\n        \"custom\": {\n          \"favorite_color\": [\n            \"green\"\n          ]\n        }\n      },\n      \"not_append\": true,\n      \"events\": [\n        {\n          \"event_name\": \"purchase\",\n          \"timestamp\": \"2021-01-10T21:35:20Z\",\n          \"event_params\": {\n            \"product_id\": \"ABC21000\",\n            \"name\": \"Your Product Name\",\n            \"unit_price\": 990.9,\n            \"unit_sale_price\": 890.9,\n            \"event_group_id\": \"ORDER123\",\n            \"taxonomy\": [\n              \"Electronic\",\n              \"Phone\"\n            ],\n            \"currency\": \"USD\",\n            \"quantity\": 1\n          }\n        },\n        {\n          \"event_name\": \"account_created\",\n          \"timestamp\": \"2021-01-17T14:41:21+03:00\",\n          \"event_params\": {\n            \"custom\": {\n              \"customer_type\": \"trial\",\n              \"trial_start_date\": \"2021-01-17T14:39:21+03:00\",\n              \"trial_end_date\": \"2021-01-24T14:41:21+03:00\"\n            }\n          }\n        }\n      ]\n    }\n  ]\n}'\n\n
\n

The request below sends data for two users, each with their own attributes, events, and custom parameters.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/upsert' \\\n  --header 'X-PARTNER-NAME: mybrand' \\\n  --header 'X-REQUEST-TOKEN: 1a2b3c4e5d6f' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n    \"skip_hook\": false,\n    \"error_callback_endpoint\":\"http://your-error-callback-endpoint.yourdomain.com\",\n    \"users\": [\n      {\n        \"insider_id\": \"sampleinsiderid\",\n        \"attributes\": {\n          \"email_optin\": true,\n          \"age\": 30,\n          \"language\": \"en_US\",\n          \"list_id\": [\n            1,\n            2\n          ],\n          \"birthday\": \"1980-01-01T00:00:00Z\",\n          \"custom\": {\n            \"favorite_color\": [\n              \"green\"\n            ]\n          }\n        },\n        \"not_append\": true,\n        \"events\": [\n          {\n            \"event_name\": \"purchase\",\n            \"timestamp\": \"2021-01-10T21:35:20Z\",\n            \"event_params\": {\n              \"product_id\": \"ABC21000\",\n              \"name\": \"Your Product Name\",\n              \"unit_price\": 990.9,\n              \"unit_sale_price\": 890.9,\n              \"event_group_id\": \"ORDER123\",\n              \"taxonomy\": [\n                \"Electronic\",\n                \"Phone\"\n              ],\n              \"currency\": \"USD\",\n              \"quantity\": 1\n            }\n          },\n          {\n            \"event_name\": \"account_created\",\n            \"timestamp\": \"2021-01-17T14:41:21+03:00\",\n            \"event_params\": {\n              \"custom\": {\n                \"customer_type\": \"trial\",\n                \"trial_start_date\": \"2021-01-17T14:39:21+03:00\",\n                \"trial_end_date\": \"2021-01-24T14:41:21+03:00\"\n              }\n            }\n          }\n        ]\n      },\n      {\n        \"insider_id\": \"sampleinsiderid_2\",\n        \"attributes\": {\n          \"email_optin\": true,\n          \"age\": 23,\n          \"language\": \"en_US\",\n          \"list_id\": [\n            1,\n            2\n          ],\n          \"birthday\": \"1996-08-08T00:00:00Z\",\n          \"custom\": {\n            \"favorite_color\": [\n              \"blue\"\n            ]\n          }\n        },\n        \"not_append\": true,\n        \"events\": [\n          {\n            \"event_name\": \"purchase\",\n            \"timestamp\": \"2024-01-10T21:35:20Z\",\n            \"event_params\": {\n              \"product_id\": \"CYD21000\",\n              \"name\": \"Your Product Name\",\n              \"unit_price\": 990.9,\n              \"unit_sale_price\": 890.9,\n              \"event_group_id\": \"ORDER123\",\n              \"taxonomy\": [\n                \"Electronic\",\n                \"Phone\"\n              ],\n              \"currency\": \"USD\",\n              \"quantity\": 1\n            }\n          },\n          {\n            \"event_name\": \"account_created\",\n            \"timestamp\": \"2022-02-17T14:41:21+03:00\",\n            \"event_params\": {\n              \"custom\": {\n                \"customer_type\": \"trial\",\n                \"trial_start_date\": \"2021-04-17T14:39:21+03:00\",\n                \"trial_end_date\": \"2021-04-24T14:41:21+03:00\"\n              }\n            }\n          }\n        ]\n      }\n    ]\n  }'\n\n
\n

If some attributes or parameters are not reflected, the issue is likely related to the request structure or the data being sent. As a solution, check the request structure using a sample payload and ensure that the data types match the values you are trying to send. If the problem persists, feel free to contact the Insider team.

\n

If none of the attributes, events, or parameters are reflected, or if the user profile is not created after a few hours of sending the request, please reach out to the Insider team.

\n

Sample Responses

\n

200 OK

\n

This response indicates that the event_group_id and unit_sale_price parameters are included together in the request for the purchase event.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ]\n            }\n        }\n    }\n}\n\n
\n

200 OK

\n

For the request below, you need to use an identifier for the user, which can be either insider_id or UUID, email or phone number, or a custom attribute. Besides, you can also send these attributes as attributes if any one of them is not an identifier.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ],\n                \"users.0.identifiers.required\": [\n                    \"either insider_id or idenifiers must be specified\"\n                ],\n                \"users.0.insider_id.required\": [\n                    \"either insider_id or idenifiers must be specified\"\n                ]\n            }\n        }\n    }\n}\n\n
\n

200 OK

\n

For the request below, you need to have a valid email address in the format stated in the parameters table.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ],\n                \"users.0.identifiers.*.regexp(^.+@.+\\\\..+$)\": [\n                    \"not a valid email address: sample\"\n                ]\n            }\n        }\n    }\n}\n\n

200 OK

\n

For the request below, you need to have the valid UUID in the format stated in the parameters table.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ],\n                \"users.0.identifiers.*.type(string)\": [\n                    \"uuid must be string: 12345\"\n                ]\n            }\n        }\n    }\n}\n\n
\n

200 OK

\n

For the request below, you need to have the valid identifier in the format stated in the parameters table.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ],\n                \"users.0.identifiers.*.in(defaults_column)\": [\n                    \"key must be one of phone_number(pn), email(em) or uuid\"\n                ]\n            }\n        }\n    }\n}\n\n
\n

200 OK

\n

For the request below, you need to have a valid phone number in the format stated in the parameters table.

\n
{\n    \"data\": {\n        \"successful\": {},\n        \"fail\": {\n            \"count\": 1,\n            \"errors\": {\n                \"users.0.events.0.event_params.*.required\": [\n                    \"event_group_id parameter is required on purchase event\",\n                    \"unit_sale_price parameter is required on purchase event\"\n                ],\n                \"users.0.identifiers.*.regexp(^\\\\+[1-9]\\\\d{6,14}$)\": [\n                    \"user has an invalid phone number: 12345\"\n                ]\n            }\n        }\n    }\n}\n\n
\n

400 Bad Request

\n

If you do not include user in your request, you receive an error shown below:

\n
{\"error\":\"users must be defined: bad request\"}\n\n
\n

429 Too Many Requests

\n

If you exceed the rate limits, you receive an error shown below:

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

If this error occurs, consider implementing retries and reviewing your connection configuration to remain within the Upsert API's rate limits. Not retrying may prevent some data from being successfully applied.

\n

Error Codes

\n\n

If you receive a 403 response instead of 200 OK, stop or pause the current data sending. Check your headers, which are your partner name, and token, and correct any errors. Once the issues are fixed, resume your integration and retry the failed requests. If your headers are correct but you continue to encounter issues, please create a ticket for the Insider team.

\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","upsert"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"f73144ad-1fd8-4bfa-a1b2-12168967837b","name":"Upsert default and custom attributes","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"email\": \"insideracademy@mail.com\"\n },\n \"attributes\": {\n \"gdpr_optin\": true,\n \"name\": \"Insider Academy\",\n \"sms_optin\": true,\n \"phone_number\": \"+6512345678\",\n \"custom\": {\n \"loyalty\": \"Gold\",\n \"subscription_renewal\": \"2023-11-29T23:00:00Z\"\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/upsert"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 23 Feb 2023 14:28:31 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"59","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79e0a6001823241f-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {\n \"count\": 1\n },\n \"fail\": {}\n }\n}"},{"id":"0a537d7a-ec92-4cb7-8a05-6f716a540d05","name":"Upsert email and phone number attributes","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"uuid\": \"16378438264380b02b2ed96\"\n },\n \"attributes\": {\n \"gdpr_optin\": true,\n \"email\": \"insideracademy@useinsider.com\",\n \"phone_number\": \"+6512345678\"\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/upsert"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 23 Feb 2023 14:35:28 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"31","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79e0b02cadcb0658-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {\n \"count\": 1\n },\n \"fail\": {}\n }\n}"},{"id":"99b4eebe-5f06-421f-be6a-487ab3672e1e","name":"Upsert default attributes and custom event for uuid identifier","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"uuid\": \"16378438264380b02b2ed96\"\n },\n \"attributes\": {\n \"email\":\"insideracademy@useinsider.com\",\n \"birthday\": \"1990-01-01T00:00:00Z\"\n },\n \"events\": [\n {\n \"event_name\": \"form_submission\",\n \"timestamp\": \"2023-01-10T21:35:20Z\",\n \"event_params\": {\n \"url\": \"https://academy.useinsider.com/\",\n \"custom\": {\n \"form_subject\": \"Test Drive\"\n }\n }\n }\n ]\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/upsert"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 10 Feb 2023 11:49:14 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"5","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79749ecc98677207-IST","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {\n \"count\": 1\n },\n \"fail\": {}\n }\n}"},{"id":"553cf01e-b1f9-4d3b-9d8a-0af0b07d6647","name":"Invalid event name","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"uuid\": \"16378438264380b02b2ed96.03e6aa2e\"\n },\n \"events\": [\n {\n \"event_name\": \"homepageView\",\n \"timestamp\": \"2023-02-10T21:35:20Z\"\n }\n ]\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/upsert"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 10 Feb 2023 11:26:54 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"16","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79747e175ced5147-IST","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {},\n \"fail\": {\n \"count\": 1,\n \"errors\": {\n \"users.0.events.0.event_name.*.regexp(^[a-z0-9][a-zA-Z0-9._-]*$)\": [\n \"invalid event name: homepageView\"\n ]\n }\n }\n }\n}"},{"id":"419a15ff-28c6-42b3-b98c-e1a50356a2b5","name":"Upsert multiple users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"email\": \"insideracademy@useinsider.com\"\n },\n \"attributes\": {\n \"gdpr_optin\": true,\n \"email_optin\": true,\n \"phone_number\": \"+6512345678\",\n \"sms_optin\": true,\n \"age\": 30,\n \"birthday\": \"1980-01-01T00:00:00Z\",\n \"custom\": {\n \"member_status\": \"VIP\"\n }\n },\n \"events\": [\n {\n \"event_name\": \"purchase\",\n \"timestamp\": \"2023-03-10T21:35:20Z\",\n \"event_params\": {\n \"product_id\": \"AGH210070\",\n \"unit_price\": 990.9,\n \"unit_sale_price\": 890.9,\n \"event_group_id\": \"ORDER123\",\n \"taxonomy\": [\n \"Electronic\",\n \"Phone\"\n ],\n \"currency\": \"USD\"\n }\n },\n {\n \"event_name\": \"form_submitted\",\n \"timestamp\": \"2023-03-17T14:41:21+03:00\",\n \"event_params\": {\n \"custom\": {\n \"customer_type\": \"trial\",\n \"trial_start_date\": \"2023-03-17T14:39:21+03:00\",\n \"trial_end_date\": \"2023-03-24T14:41:21+03:00\"\n }\n }\n }\n ]\n },\n {\n \"identifiers\": {\n \"custom\": {\n \"user_loyalty_id\": \"user12345abc\"\n }\n },\n \"attributes\": {\n \"gdpr_optin\": true,\n \"email\": \"jsmith@mail.com\",\n \"email_optin\": true\n },\n \"events\": [\n {\n \"event_name\": \"order_delivered\",\n \"timestamp\": \"2023-03-10T21:35:20Z\",\n \"event_params\": {\n \"custom\": {\n \"order_id\": \"POSH1234\"\n }\n }\n }\n ]\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/upsert"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 24 Feb 2023 12:13:38 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"7","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79e81dcdab6e8227-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {\n \"count\": 2\n },\n \"fail\": {}\n }\n}"}],"_postman_id":"31942c05-0d7a-4681-a050-271c8424f231"},{"name":"Export raw user data","id":"4f3fdcf2-4108-4398-bd84-ba75ce0aa88e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segment\": {\n \"segment_id\": 123456789\n },\n \"attributes\": [\n \"*\"\n ],\n \"events\": {\n \"start_date\": 1606311893,\n \"end_date\": 1611582293,\n \"wanted\": [\n {\n \"event_name\": \"email_click\",\n \"params\": [\n \"campaign_id\",\n \"timestamp\"\n ]\n },\n {\n \"event_name\": \"item_added_to_cart\",\n \"params\": [\n \"product_id\",\n \"name\",\n \"timestamp\"\n ]\n },\n {\n \"event_name\": \"journey_entered\",\n \"params\": [\n \"journey_id\",\n \"timestamp\"\n ]\n }\n ]\n },\n \"format\": \"parquet\",\n \"hook\": \"xyz.test.com\"\n}"},"url":"https://unification.useinsider.com/api/raw/v1/export","description":"

This API prepares the raw user data, exports it into Insider's AWS S3 Bucket, and returns a link to your webhook endpoint as a response. This link enables you to access the raw user data and transfer it to your end.

\n

The API prepares the raw user data for all users for all requested attributes and for a list of events and their event parameters. You can filter to narrow down the user set (e.g., the raw user data can return the users who made a purchase on the last day).

\n

The API can prepare the raw data for attributes and events together. You can choose the events you will receive and the attributes that will be added to each event entry.

\n

Suggested Reading: Understanding Events and Attributes

\n

You should provide a webhook endpoint in the request to be notified when the export link is ready. After sending a request, your webhook endpoint receives an export link as follows to have access to the raw user data.

\n

https://insider-data-export.useinsider.com/{partner name}/p/{file name}

\n

You can export raw user data to analyze user information using a business intelligence tool and sync the data that you want via daily jobs.

\n

Using the Export API, Insider sends the file as a link via Webhook to your endpoint. Export files are sent from specific Insider IP addresses. To enhance security, whitelist Insider IP addresses on your system to restrict access to your endpoint. Remember that whitelisting our IP addresses is about restricting access to your endpoint, which ensures only approved sources can access your endpoint. To add our IP addresses to your approved list for whitelisting, reach out to the Insider team.

\n

It might take several hours to receive the file after you get the 200 response. If there is an issue with the file size while exporting, you will be notified. In this case, try exporting the data in a smaller range. If you still do not receive the export link, we highly suggest checking if your endpoint is publicly accessible and functioning properly.

\n

The Raw Export logs events based on their actual timestamp, regardless of when they are recorded in the User Content Database (UCD). In contrast, the S3 Export captures events within specific intervals, like the past hour, according to their UCD entry time. For example, the event counts displayed on the Metadata Analytics page represent all transmissions sent to UCD. Sending the same event 100 times results in only one entry in the database but shows a transmission count of 100 on the page, while Raw Export will show only 1. If an event was timestamped three days ago but sent today, it will appear in S3 Export based on the current transmission timeframe, like the last hour.

\n

Body Parameters

\n

Before starting the implementation, make sure to share the following information with your Insider Technical Account Manager:

\n\n

You can consult the Insider team on which parameters to add to the request.

\n

The date range of the segments in requests to the Raw Export API must align with the date range of the requested events. For example, if you're requesting data for the last 5 days of a segment, the event date range should also cover that same period. If the event date range is set to only 2 days, data for users who entered the segment in the last 3 days will not appear in the export.

\n

Each request must have attributes or events object to return the respective user profiles. If you are using an events object, its keys are required, as stated in the table below.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
segmentSegment ID of the user filter. Refer here to find your Dynamic Segment ID.ObjectYes
attributesArray of attributesArray (of string)Yes (if the body does not have the events object)
eventsArray of eventsObjectYes (if the body does not have the attributes object)
start_dateBeginning of the date range for the wanted eventsNumberYes (if the body has the events object)
end_dateEnd of the date range for the wanted eventsNumberYes (if the body has the events object)
wantedObject of the wanted eventsArrayYes (if the body has the events object)
event_nameName of the eventStringYes (if the body has the events object)
paramsEvent parameters of the eventArray (of string)Yes (if the body has the events object)
formatThe export formatStringYes
hookYour webhook endpointStringYes
\n

Sample Body

\n

The sample below displays a request to get the raw user data with all attributes.

\n
{\n  \"segment\": {\n    \"segment_id\": 123456789\n  },\n  \"attributes\": [\n    \"*\"\n  ],\n  \"events\": {\n    \"start_date\": 1606311893,\n    \"end_date\": 1611582293,\n    \"wanted\": [\n      {\n        \"event_name\": \"email_click\",\n        \"params\": [\n          \"email_campaign_id\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"item_added_to_cart\",\n        \"params\": [\n          \"product_id\",\n          \"name\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"journey_entered\",\n        \"params\": [\n          \"journey_id\",\n          \"timestamp\"\n        ]\n      }\n    ]\n  },\n  \"format\": \"parquet\",\n  \"hook\": \"xyz.test.com\"\n}\n\n
\n

The sample below displays a request to get the raw user data with selected attributes.

\n
{\n   \"segment\": {\n        \"segment_id\": 123456789\n    },\n   \"attributes\": [\n      \"last_visited_product\",\n      \"email\",\n      \"name\",\n      \"c_custom_attribute\"\n   ],\n   \"events\": {\n      \"start_date\": 1606311893,\n      \"end_date\": 1611582293,\n      \"wanted\": [\n         {\n            \"event_name\": \"custom_event\",\n            \"params\": [\n               \"c_custom_parameter\",\n               \"timestamp\"\n            ],\n            \"filters\": [\n               {\n                  \"key\": \"email_campaign_id\",\n                  \"operator\": \"eq\",\n                  \"values\": [369, 877]\n               }\n            ]\n         },\n         {\n            \"event_name\": \"item_added_to_cart\",\n            \"params\": [\n               \"product_id\",\n               \"name\",\n               \"timestamp\"\n            ]\n         },\n         {\n            \"event_name\": \"journey_entered\",\n            \"params\": [\n               \"journey_id\",\n               \"timestamp\"\n            ]\n         }\n      ]\n   },\n   \"format\": \"parquet\",\n   \"hook\": \"https://xyz.test.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\"url\":\"https://insider-data-export.useinsider.com/{partner name}/p/{file name}\"}\n\n
\n

429 Too Many Requests

\n

The following response returns if you exceed the rate limit.

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations:

\n\n

Since https://webhook.site blocks Insider, you cannot retrieve hooks containing download links with URLs belonging here. We will make efforts to address this issue; however, there are currently limitations to resolving it.

\n","urlObject":{"protocol":"https","path":["api","raw","v1","export"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"2dd92dd3-2f47-4fc1-9c91-156aa722cf6e","name":"Export users from a dynamic segment by an attribute and event","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segment\": {\n \"segment_id\": 116731\n },\n \"attributes\": [\n \"city\"\n ],\n \"events\": {\n \"start_date\": 1682951197,\n \"end_date\": 1685111197,\n \"wanted\": [\n {\n \"event_name\": \"listing_page_view\",\n \"params\": [\n \"device_type\",\n \"timestamp\"\n ]\n }\n ]\n },\n \"format\": \"csv\",\n \"hook\": \"http://{IP_ADRESS}:{PORT_NUBER}/slack_hook/xxxxxxxxxxEXAMPLExxxxxxx\"\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/raw/v1/export"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Date","value":"Fri, 26 May 2023 14:28:37 GMT","enabled":true},{"key":"Content-Length","value":"0","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin","enabled":true},{"key":"x-envoy-upstream-service-time","value":"7","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=g24b8shcUMjPoZmWgVh9L.7aH9ogtCVJb4ddGcpeLPc-1685111317-0-AXnBF2j8EJQfDZBG0XfuPdlDuJqpjOoIEcncIzriCKq6No5mvTYX06YgAk9hhLReF9w6Htns7f92F2ZH2kTtaH4=; path=/; expires=Fri, 26-May-23 14:58:37 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd6b4a48d408f1d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"4f3fdcf2-4108-4398-bd84-ba75ce0aa88e"},{"name":"Delete user attribute","id":"62b5e0dc-0959-4f47-b372-227e450ed9dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"email\": \"sample@mail.com\",\n \"uuid\": \"1x2y3z\",\n \"custom\": {\n \"custom_identifier\": \"xyz123\"\n }\n },\n \"whole\": [\n \"name\",\n \"surname\",\n \"email_optin\"\n ],\n \"partial\": {\n \"list_id\": [\n 1,\n 2\n ]\n },\n \"custom\": {\n \"whole\": [\n \"custom_string_attribute\",\n \"custom_array_attribute\"\n ],\n \"partial\": {\n \"custom_array_attribute\": [\n \"value1\",\n \"value2\",\n \"value3\"\n ]\n }\n }\n }\n ]\n}"},"url":"https://unification.useinsider.com/api/user/v1/attribute/delete","description":"

This API enables you to delete your customer attributes when you need to. You can either delete the whole attribute from the user, or delete a specific value from an array typed attribute.

\n

For example, your customer might have selected GDPR’s “right-to-be-forgotten” option and you need to delete some attributes that capture such customer information.

\n

This deletion action cannot be undone. Please carefully consider before proceeding.

\n

An attribute defined as an identifier cannot be deleted with this request. To delete this type of attribute (since it functions as an identifier), you must use the Delete Identifiers API.

\n

Body Parameters

\n

Each POST body must have a unifier field under identifiers object. You can use the default identifiers such as email, phone number, or uuid and also the custom identifier to define a unifier.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
usersArray of user information such as identifiers, attributes and values to be deletedArrayYes
identifiersUser's identifier information.ObjectYes
customUser's custom identifier information.ObjectNo
wholeArray of attributes that are going to be deleted fully from the corresponding userArrayNo
partialAttributes that are going to be deleted partially. (Ex. removing one of the values from an array attribute)ObjectNo
customCustom attributes that are going to be deleted either whole or partiallyObjectNo
emailUser's email address.StringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifier.StringNo
email_optinAttribute. User's permission for marketing emails:

True = emails allowed;

False = email not allowed
BooleanNo
gdpr_optinAttribute. User's permission for Insider campaigns, data collection and processing:

False = user will not see any Insider campaign or receive any message from any channel;

True or empty = Insider may interact with the user through personalization campaigns
BooleanNo
sms_optinAttribute. User's permission for SMS:

True = SMS allowed;

False = SMS not allowed
BooleanNo
nameAttribute. User's name.StringNo
surnameAttribute. User's surname.StringNo
birthdayAttribute. User's birthday in RFC 3339 format (e.g. 1993-03-12T00:00:00Z).

Note: Send the birthdays without the time offset.
DatetimeNo
genderAttribute. Gender of the user.StringNo
ageAttribute. Age of the userNumberNo
languageLanguage information of the user.StringNo
countryAttribute. Country information of the user in ISO 3166-1 alpha-2 format.StringNo
cityAttribute. City information of the user.StringNo
list_idAttribute. Newsletter contact list IDs (users are added directly).Numbers (Number array)No
\n

Sample Body

\n

The following is a sample JSON to delete user attributes.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/attribute/delete' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"users\": [\n        {\n            \"identifiers\": {\n                \"email\": \"sample@useinsider.com\",\n                \"uuid\": \"1x2y3z\",\n                \"custom\": {\n                    \"custom_identifier\": \"xyz123\"\n                }\n            },\n            \"whole\": [\n                \"name\",\n                \"surname\",\n                \"email_optin\"\n            ],\n            \"partial\": {\n                \"list_id\": [\n                    1,\n                    2\n                ]\n            },\n            \"custom\": {\n                \"whole\": [\n                    \"custom_string_attribute\",\n                    \"custom_array_attribute\"\n                ],\n                \"partial\": {\n                    \"custom_array_attribute\": [\n                        \"value1\",\n                        \"value2\",\n                        \"value3\"\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

The sample below displays a request to get user data with insider_id.

\n

insider_id is an internal ID maintained by the Insider for each user. To find the insider_id, you can refer to the Profile ID on the User Profile.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/attribute/delete' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"users\": [\n    {\n      \"insider_id\": \"sampleinsiderid\",\n      \"whole\": [\n        \"name\",\n        \"surname\",\n        \"email_optin\"\n      ],\n      \"partial\": {\n        \"list_id\": [\n          1,\n          2\n        ]\n      },\n      \"custom\": {\n        \"whole\": [\n          \"custom_string_attribute\",\n          \"custom_array_attribute\"\n        ],\n        \"partial\": {\n          \"custom_array_attribute\": [\n            \"value1\",\n            \"value2\",\n            \"value3\"\n          ]\n        }\n      }\n    }\n  ]\n}'\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{}\n\n
\n

403 Forbidden

\n

The following response returns in case of an authentication error.

\n
{\n    \"success\": false,\n    \"message\": \"Access Denied. You do not have sufficient access to perform this action.\"\n}\n\n
\n

429 Too Many Requests

\n

The following response returns if you exceed the rate limit.

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"success\": false,\n    \"message\": \"The request processing has failed because of an unknown error.\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","attribute","delete"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"c3ff2e10-9cf9-49eb-bfa1-a3398c431a4c","name":"Delete default and custom whole and partial attributes","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"users\": [\n {\n \"identifiers\": {\n \"email\": \"sample@useinsider.com\"\n },\n \"whole\": [\n \"phone_number\",\n \"app_version\"\n ],\n \"partial\": {\n \"list_id\": [\n 1049,\n 1123\n ]\n },\n \"custom\": {\n \"whole\": [\n \"last_visited_category_name\",\n \"last_visited_product_name\"\n ],\n \"partial\": {\n \"last_browsed_items\": [\n \"browsed_item_name_1\",\n \"browsed_item_url_1\"\n ]\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/attribute/delete"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 14:37:19 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"54","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd6c1640c99700f-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"successful\": {\n \"count\": 1\n },\n \"fail\": {}\n }\n}"}],"_postman_id":"62b5e0dc-0959-4f47-b372-227e450ed9dc"},{"name":"Update identifiers","id":"a82e244e-6964-4619-b11e-31e6ab31847b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"old_identifier\": {\n \"email\": \"sample@mail.com\"\n },\n \"new_identifier\": {\n \"email\": \"sample2@mail.com\"\n }\n}"},"url":"https://unification.useinsider.com/api/user/v1/identity","description":"

This API enables you to update the value of the identifiers that are already associated with users.

\n

For example, an existing user that is already a known user to Insider may have updated their email address in your system. Accordingly, you may need to change the identifier(s) of this user. With this API, you can change the value of an existing identifier to a new value.

\n

Body Parameters

\n

Each PATCH request must have an identifier type, old value, and new value specified in it. You can use either one of the default identifiers which are uuid, email, and phone_number, or any one of the custom identifiers you are using.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
old_identifierUser’s current identifier valueObjectYes
new_identifierUser’s next identifier valueObjectYes
customUser’s custom identifiers informationObjectNo
emailUser's email addressStringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifierStringNo
\n

Sample Body

\n

Below is a sample body with default identifiers.

\n
{\n    \"old_identifier\": {\n        \"email\": \"sample@mail.com\"\n    },\n    \"new_identifier\": {\n        \"email\": \"sample2@mail.com\"\n    }\n}\n\n
\n

Below is a sample body with custom identifiers.

\n
{\n  \"old_identifier\": {\n    \"custom\": {\n      \"user_loyalty_id\": \"xyz123\"\n    }\n  },\n  \"new_identifier\": {\n    \"custom\": {\n      \"user_loyalty_id\": \"xyz123\"\n    }\n  }\n}\n\n
\n

Sample Responses

\n

400 Bad Request

\n

The following response returns if the identifier values are the same.

\n
{\n  \"error\": \"identifier values are the same: bad request\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if you do not have 1 entry for both new and old identifiers.

\n
{\n  \"error\": \"there must be exactly 1 entry for both new and old identifiers: bad request\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","identity"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"55debc0d-42ac-4059-a586-3ba40110d321","name":"Update custom identifier","originalRequest":{"method":"PATCH","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"old_identifier\": {\n \"custom\": {\n \"user_loyalty_id\": \"upsertloyalty123\"\n }\n },\n \"new_identifier\": {\n \"custom\": {\n \"user_loyalty_id\": \"newidentifier123\"\n }\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/identity"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 24 Feb 2023 16:44:11 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Content-Length","value":"3","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin","enabled":true},{"key":"x-envoy-upstream-service-time","value":"52","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"79e9aa1ccdfa1fe3-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{}"}],"_postman_id":"a82e244e-6964-4619-b11e-31e6ab31847b"},{"name":"Delete identifiers","id":"cd3bf9db-a2f1-4d09-a84c-13a2b6de3e28","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"sample@mail.com\"\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/identity","description":"

This API enables you to delete the value of the identifiers that are already associated with users.

\n

For example, an existing user that is already a known user to Insider may have deleted their phone number from your system. Accordingly, you may need to delete the phone number of this user. With this API, you can delete the value of an existing identifier.

\n

This deletion action cannot be undone. Please carefully consider before proceeding.

\n

Body Parameters

\n

Each DELETE request must have an identifier type, and the value specified in it. You can use either one of the default identifiers, which are uuid, email, and phone_number, or any one of the custom identifiers you are using.

\n

If the user is associated with only one identifier, you cannot delete it.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
identifiersUser’s current identifier in useObjectYes
customUser’s custom identifiers informationObjectNo
emailUser's email addressStringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifierStringNo
\n

Sample Body

\n

Below is a sample body with a default identifier.

\n
{\n    \"identifiers\": {\n        \"email\": \"sample@mail.com\"\n    }\n}\n\n
\n

Below is a sample body with a custom identifier.

\n
{\n  \"identifiers\": {\n    \"custom\": {\n      \"user_loyalty_id\": \"xyz123\"\n    }\n  }\n}\n\n
\n

Sample Responses

\n

400 Bad Request

\n

The following response returns if the user has only one identifier.

\n
{\n  \"error\": \"you cannot delete the sole identifier specified for a user: bad request\"\n}\n\n
\n

429 Too Many Requests

\n

If you exceed the rate limits, you receive an error shown below:

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","identity"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"59032e66-d2e6-4eda-9dcf-5305a06da609","name":"Delete identifiers","originalRequest":{"method":"DELETE","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"sample@mail.com\"\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/identity"},"_postman_previewlanguage":"Text","header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"cd3bf9db-a2f1-4d09-a84c-13a2b6de3e28"},{"name":"Get user profiles","id":"fe906248-3328-4186-9840-63576243a6c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"johndoe@email.com\"\n },\n \"attributes\": [\n \"email\",\n \"name\",\n \"surname\",\n \"custom\"\n ],\n \"events\": {\n \"start_date\": 1606311893,\n \"end_date\": 1611582293,\n \"wanted\": [\n {\n \"event_name\": \"email_click\",\n \"params\": [\n \"campaign_id\",\n \"timestamp\"\n ]\n },\n {\n \"event_name\": \"item_added_to_cart\",\n \"params\": [\n \"product_id\",\n \"name\",\n \"timestamp\"\n ]\n },\n {\n \"event_name\": \"journey_entered\",\n \"params\": [\n \"journey_id\",\n \"timestamp\"\n ]\n }\n ]\n },\n \"quota\": true\n}"},"url":"https://unification.useinsider.com/api/user/v1/profile","description":"

This API returns the attributes and events you request for a single user that you specify by an identifier. It takes identifier, attribute list, and event list within the date range. In its response, it provides the data you choose.

\n

You can get user profiles for various use cases. For example, you can personalize the content for your other providers, or connect user profiles to your services like call centers.

\n

Body Parameters

\n

Each POST body must have an identifiers object.

\n

Each request must have attributes or events object to return the respective user profiles. In the event of using events object, its keys are required as stated in the table below.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
identifiersIdentifier keyObjectRequired
attributesArray of wanted attributesArray (of string)Yes (if the body does not have the events object)
eventsObject of eventsObjectYes (if the body does not have the attributes object)
start_dateBeginning of the date range for the wanted eventsNumberYes (if the body has the events object)
end_dateEnd of the date range for the wanted eventsNumberYes (if the body has the events object)
wantedObject of the wanted eventsArrayYes (if the body has the events object)
event_nameName of the eventStringYes (if the body has the events object)
paramsWanted event parameters of the eventArray (of string)Yes (if the body has the events object)
quotaFlag to display quota usageBooleanNo
\n

Specifically for this API, to select the journey event's name parameter, use journey_campaign_name as the event parameter key.

\n

Sample Body

\n

The sample below displays a request to get user data with an identifier.

\n

You can refer to Default Events & Attributes to see the list of events and attributes. If an event or attribute name consists of more than one word, you can use an underscore (_) between the words. E.g. email_optin, homepage_view, etc.

\n
{\n  \"identifiers\": {\n    \"email\": \"sample@useinsider.com\"\n  },\n  \"attributes\": [\n    \"email\",\n    \"name\",\n    \"surname\"\n  ],\n  \"events\": {\n    \"start_date\": 1606311893,\n    \"end_date\": 1611582293,\n    \"wanted\": [\n      {\n        \"event_name\": \"email_click\",\n        \"params\": [\n          \"campaign_id\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"item_added_to_cart\",\n        \"params\": [\n          \"product_id\",\n          \"name\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"journey_entered\",\n        \"params\": [\n          \"journey_id\",\n          \"timestamp\"\n        ]\n      }\n    ]\n  },\n  \"quota\": true\n}\n\n
\n

The sample below displays a request to get user data with a custom attribute. For custom attributes, you need to add a “_c__” prefix.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/profile' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4d5e6f' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'Content-Type: application/json' \\\n--header 'Cookie: __cfduid=d1a0bc0c8335c7fecbd3485839787329b1615112066' \\\n--data-raw '{\n    \"identifiers\": {\n        \"email\": \"example@useinsider.com\"\n    },\n    \"attributes\": [\n        \"email\",\n        \"name\",\n        \"surname\",\n        \"c_member_code\"\n    ],\n    \"events\": {\n        \"start_date\": 1606311893,\n        \"end_date\": 1611582293,\n        \"wanted\": [\n            {\n                \"event_name\": \"email_click\",\n                \"params\": [\n                    \"campaign_id\",\n                    \"timestamp\"\n                ]\n            },\n            {\n                \"event_name\": \"item_added_to_cart\",\n                \"params\": [\n                    \"product_id\",\n                    \"name\",\n                    \"timestamp\"\n                ]\n            },\n            {\n                \"event_name\": \"journey_entered\",\n                \"params\": [\n                    \"journey_id\",\n                    \"timestamp\"\n                ]\n            }\n        ]\n    },\n    \"quota\": true\n}'  \n\n
\n

The sample below displays a request to get user data with insider_id.

\n

insider_id is an internal ID maintained by the Insider for each user. To find the insider_id, you can refer to the Profile ID on the User Profile.

\n
curl --location --request POST 'https://unification.useinsider.com/api/user/v1/profile' \\\n--header 'X-REQUEST-TOKEN: 1a2b3c4d5e6f' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'Content-Type: application/json' \\\n--header 'Cookie: __cfduid=d1a0bc0c8335c7fecbd3485839787329b1615112066' \\\n--data-raw '{\n  \"insider_id\": \"sampleinsiderid\",\n  \"attributes\": [\n    \"email\",\n    \"name\",\n    \"surname\"\n  ],\n  \"events\": {\n    \"start_date\": 1606311893,\n    \"end_date\": 1611582293,\n    \"wanted\": [\n      {\n        \"event_name\": \"email_click\",\n        \"params\": [\n          \"campaign_id\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"item_added_to_cart\",\n        \"params\": [\n          \"product_id\",\n          \"name\",\n          \"timestamp\"\n        ]\n      },\n      {\n        \"event_name\": \"journey_entered\",\n        \"params\": [\n          \"journey_id\",\n          \"timestamp\"\n        ]\n      }\n    ]\n  },\n  \"quota\": true\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"attributes\": {\n    \"email\": \"example@useinsider.com\",\n    \"name\": \"John\",\n    \"surname\": \"Doe\"\n    \"iid\": \"insider-id-user-1\"\n  },\n  \"events\": {\n    \"email_click\": [\n      {\n        \"campaign_id\": 1456,\n        \"created_date\": \"2021-01-06T23:34:09Z\"\n      },\n      {\n        \"campaign_id\": 1245,\n        \"created_date\": \"2021-01-01T12:56:21Z\"\n      }\n    ],\n    \"item_added_to_cart\": [\n      {\n        \"product_id\": \"3254634\",\n        \"name\": \"Blue Shirt\",\n        \"created_date\": \"2021-01-04T15:04:34Z\"\n      }\n    ],\n    \"journey_entered\": [\n      {\n        \"journey_id\": 12,\n        \"created_date\": \"2021-01-02T09:35:46Z\"\n      }\n    ]\n  },\n  \"quota\": {\n        \"cost\": 2.5,\n        \"used\": 2.5,\n        \"total\": 1000\n    }\n}\n\n
\n

404 Not Found

\n

The following response returns if no user is found for the respective identifier.

\n
{\"error\":\"no such user for these identifiers: no data\"}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","profile"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"299b4f19-4171-427d-98da-5af8d683a9a8","name":"User profile with an event and attribute","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"{emailAddress}\"\n },\n \"attributes\": [\n \"email_optin\"\n ],\n \"events\":{\n \"start_date\":1675265826,\n \"end_date\":1677598626,\n \"wanted\":[\n {\n \"event_name\":\"homepage_view\",\n \"params\":[\n \"referrer\"\n ]\n }\n ]\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/profile"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 05 May 2023 09:22:17 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"32","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=tvP6peGr1mSGW1KonXplwGSHzHnmwldVEgEeV9ZaK6Q-1683278537-0-AexRcACjYP5WMjwFlKYtoJxPThcDXg/Zo43d/ET5xKrsL+qwd8Py+wV9SoQ+6/Qz8V00ZqUGpT6odWVY4eSd1mU=; path=/; expires=Fri, 05-May-23 09:52:17 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c27eb0aedfd820f-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"attributes\": {\n \"email_optin\": true\n },\n \"events\": {\n \"homepage_view\": [\n {\n \"referrer\": \"https://posh.useinsider.com/customer/account/login/referer/aHR0cHM6Ly9wb3NoLnVzZWluc2lkZXIuY29tL2Ntcy9ub3JvdXRlL2luZGV4Lw%2C%2C/\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/bess-yoga-short.html\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/customer/account/login/referer/aHR0cHM6Ly9wb3NoLnVzZWluc2lkZXIuY29tL2Ntcy9ub3JvdXRlL2luZGV4Lw%2C%2C/\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/customer/account/login/referer/aHR0cHM6Ly9wb3NoLnVzZWluc2lkZXIuY29tL2Ntcy9ub3JvdXRlL2luZGV4Lw%2C%2C/\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/bess-yoga-short.html\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/bess-yoga-short.html\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/bess-yoga-short.html\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/apps/insider/insider-sw-sdk.js\",\n \"source\": \"web\"\n },\n {\n \"referrer\": \"https://posh.useinsider.com/?SID=gtqfg0af2g3fopr1qio4hsjdso\",\n \"source\": \"web\"\n }\n ]\n }\n}"}],"_postman_id":"fe906248-3328-4186-9840-63576243a6c3"},{"name":"Upload first-party segments","id":"fe7e4b47-84e6-4574-910b-e847d9816282","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to InOne > InOne Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segmentName\": \"My Segment Name\",\n \"fileUrl\": \"https://s3.amazonaws.com/sample_csv_file.csv\",\n \"callbackUrl\": \"https://localhost/12345\",\n \"attributeName\": \"em\"\n}"},"url":"https://contact.useinsider.com/fps/v1/upload","description":"

The First-Party Segment API allows you to easily create a first-party segment through an API. When the uploading process is completed, the segment is automatically created on your First-Party Segment page under Saved Segments. In addition, you can see the results of the segment creation on the callback.

\n

The FPS segments don't generate new users; instead, they group existing users into segments based on their attribute values.

\n

Use Cases

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Store ID
id1
id2
\n

Assume that you have 17k store owners as your customers. Instead of multi-selecting 17k values under the segmentation filter, you can list those store_id values on a sheet and upload them to the FPS segment upload field. This way, a snapshot of the people with those store ID values is generated.

\n

You do not need to include a header row in the CSV file. The attribute name (e.g., \"Store ID\") has already been specified in the API payload. The values in the CSV file should be listed without a header.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
segmentNameIt is the name of the segment.StringYes
fileUrlIt is the URL where CSV is hosted. This URL should be downloadable.StringYes
callbackUrlCallback URL is to receive the result of segment creation. This URL should accept POST request.StringYes
attributeNameIt is the name of the user attribute on which the segment is created. It refers to the attribute names on UCD. This field basically enables you to match your users who have the given attribute.
Attribute names should be in accordance with Attribute Name field on Default Attributes page.
It can be either an identifier or any attribute.
StringYes
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON containing the required body parameters.

\n
curl --location --request POST 'https://contact.useinsider.com/fps/v1/upload' \\\n--header 'X-REQUEST-TOKEN: acb123' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"segmentName\": \"My Segment Name\",\n  \"fileUrl\": \"https://s3.amazonaws.com/sample_csv_file.csv\",\n  \"callbackUrl\": \"https://localhost/12345\",\n  \"attributeName\": \"em\"\n}'\n\n
\n

The attribute em stands for email address in Insider's system.

\n

Sample Responses

\n

200 OK

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 BAD REQUEST

\n
{\n  \"statusMessage\": \"segment name already in use\"\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

405 INVALID PAYLOAD

\n
{\n    \"error\": \"Invalid Payload.\"\n}\n\n
\n

Error Messages

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorDescription
segment name already in useThe segment name in the request already exists on your panel. You should name your segment with a different name.
the file URL is invalid. The URL should include .csv extensionThe CSV URL is invalid. The URL should include .csv extension.
file size is more than the limitFile size cannot be more than 10MB.
partner name is missingX-PARTNER-NAME needs to be available.
\n

Sample Callback Responses

\n

200 OK

\n
{\n    \"segment_name\": \"My unique segment\",\n    \"valid_values_count\": 5,\n    \"invalid_values_count\": 7,\n    \"total_entered_values\": 12\n}\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["fps","v1","upload"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fe7e4b47-84e6-4574-910b-e847d9816282"}],"id":"8028ffbb-6bb3-4eb2-857a-e0288a105b6f","description":"

Insider's UCD APIs allow you to manage your user data on Insider's Unified Customer Database (UCD). You can upsert user data, export your raw data, delete user data, update identifiers, and upload first-party segments.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
APIFunction
Upsert user dataYou can send user attributes and events to Insider, insert and update user data.
Export raw user dataYou can have access to the raw user data, and export it to transfer it to your end.
Delete user attributeYou can delete your customer attributes.
Update identifiersYou can update the identifier information of your users.
Delete identifiersYou can delete the identifier information of your users.
Get user profilesYou can get the attributes and events of your users.
Upload first-party segmentsYou can upload your first-party segments to Insider.
\n
","_postman_id":"8028ffbb-6bb3-4eb2-857a-e0288a105b6f"},{"name":"Data Governance APIs","item":[{"name":"Set data processing consent for app users","id":"dd7421c0-2e51-4ab0-847b-322a54ba9789","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_name\": \"{partnerName}\",\n \"gdpr_consent\": true,\n \"target\": {\n \"udid\": \"1A2B3C4D5E6F7X8Y9Z\"\n }\n}"},"url":"https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/set","description":"

EU’s General Data Protection Regulation came into force on May 25, 2018. This legislation requires Insider's customers to ask for specific consent to send their data to Insider as the Data Processor. Data Processing Consent API helps you send user consent programmatically in real-time over the web using predefined web services.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_nameYour Insider partner name. The partner name should be lowercase.StringYes
gdpr_consentIf consent given, true
Otherwise false
BooleanYes
targetThe object that contains the unique device ID of the user, and its value. E.g. \"udid\": \"1234\"ObjectYes
\n

Sample Body

\n

The following is a sample body to pass user consent to Insider.

\n
{\n    \"partner_name\": \"{partner_name}\",\n    \"gdpr_consent\": true,\n    \"target\": {\n        \"udid\": \"1A2B3C4D5E6F7X8Y9Z\"\n    }\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"status\": \"ok\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the partner_name or target is empty in the request.

\n
Bad Payload.\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","v1","privacy","gdpr","consent","set"],"host":["mobile","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"c15615b6-15d7-4607-8e27-b1bd96bee099","name":"Set GDPR opt-in for users","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_name\": \"partnerName\",\n \"gdpr_consent\": true,\n \"target\": {\n \"udid\": \"B22DFA4D6F0A6F5\"\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/set"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:07:30 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Content-Length","value":"16","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin","enabled":true},{"key":"x-envoy-upstream-service-time","value":"46","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd63dcfbcc620d2-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"status\": \"ok\"\n}"}],"_postman_id":"dd7421c0-2e51-4ab0-847b-322a54ba9789"},{"name":"Delete user profile","id":"a482d06a-c92d-498a-8e3c-819367457879","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"sample@useinsider.com\"\n }\n}"},"url":"https://unification.useinsider.com/api/user/v1/delete","description":"

This API enables you to delete your customer and their data when you need to.

\n

For example, one of your users might have selected GDPR’s “right-to-be-forgotten” option and you need to delete that user's data. You can call this API with the related identifier for Insider to find that user's data, and delete it.

\n

Body Parameters

\n

Each POST body must have a unifier field under identifiers object. You can use the default identifiers such as email, phone number, or uuid and also the new custom identifier to define a unifier. For example, you use the email field as a unifier, any data without email field will not be accepted.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
identifiersUser's identifier information.ObjectYes
customUser's custom identifier information.ObjectNo
emailUser's email address.StringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifier.StringNo
\n

Sample Body

\n

The following is a sample JSON without a custom object.

\n
{\n   \"identifiers\":{\n      \"email\":\"example@useinsider.com\"\n   }\n}\n\n
\n

You can also send a request with a custom object:

\n
{\n   \"identifiers\":{\n      \"custom\":{\"custom_identifier\":\"xyz123\"}\n   }\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{}\n\n
\n

403 Forbidden

\n

The following response returns in case of an authentication error.

\n
{\n    \"success\": false,\n    \"message\": \"Access Denied. You do not have sufficient access to perform this action.\"\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"success\": false,\n    \"message\": \"The request processing has failed because of an unknown error.\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","delete"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"c91d7f8e-abb7-426a-8a69-35422a539b6a","name":"Delete user","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"sample@useinsider.com\"\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://unification.useinsider.com/api/user/v1/delete"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:13:46 GMT","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Content-Length","value":"3","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin","enabled":true},{"key":"x-envoy-upstream-service-time","value":"39","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd6470068b5058a-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{}"}],"_postman_id":"a482d06a-c92d-498a-8e3c-819367457879"},{"name":"Delete user's PII data using profile ID","id":"c1b0fcd6-0f40-4655-8582-d5ff5fb56c90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n\"partner\": \"mybrand\",\n\"insider_id\": \"1122334455\",\n\"api_key\": \"1a2b3c4d5e6f\"\n}"},"url":"https://unification.useinsider.com/api/contact/v1/anonymize","description":"

This API is used to delete users' PII data. Insider does not allow the deletion of the user's last remaining identifier. In addition, if this value is a PII (Personally Identifiable Information) data such as email, phone number, it would not be deleted. Thanks to this endpoint, you can delete these values associated with users; if they are a known user and their only identifier is email or phone number, then, the user becomes anonymous. For example, you can delete all PII data of registered users when they revoke their data-sharing permissions.

\n

The user attributes marked as PII are unconditionally deleted with this API.

\n

Note: This action cannot be undone. Please carefully consider before proceeding.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailUser's email address.StringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifier.StringNo
nameAttribute. User's name.StringNo
surnameAttribute. User's surname.StringNo
birthdayAttribute. User's birthday in RFC 3339 format (e.g. 1993-03-12T00:00:00Z). Note: Send the birthdays without the time offsetDatetimeNo
genderAttribute. Gender of the user.StringNo
ageAttribute. Age of the userNumberNo
countryAttribute. Country information of the user in ISO 3166-1 alpha-2 format.StringNo
cityAttribute. City information of the user.StringNo
\n

Sample Body

\n
{\n          “insider_id”: “111ab184-f66d-4cba-123e-9abca4332211\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

This response returns if the request is successful.

\n

Sample Responses

\n

200 OK

\n

This response returns when the request is successful.

\n

404 NOT FOUND

\n

The below response returns when you send the wrong identifiers.

\n
{\"error\":\"no such user for these identifiers: no data\"}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","contact","v1","anonymize"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c1b0fcd6-0f40-4655-8582-d5ff5fb56c90"},{"name":"Delete user's PII data using identifier","id":"379641ce-7653-4307-9885-9afa46ce3a6c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"email\": \"sample@useinsider.com\"\n }\n}"},"url":"https://unification.useinsider.com/api/user/v1/anonymize","description":"

This API is used to delete users' PII data. Insider does not allow the deletion of the user's last remaining identifier. In addition, if this value is a PII (Personally Identifiable Information) data such as email, phone number, it would not be deleted. Thanks to this endpoint, you can delete these values associated with users; if they are a known user and their only identifier is email or phone number, then, the user becomes anonymous. For example, you can delete all PII data of registered users when they revoke their data-sharing permissions.

\n

The user attributes marked as PII are unconditionally deleted with this API.

\n

Note: This action cannot be undone. Please carefully consider before proceeding.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailUser's email address.StringNo
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringNo
uuidUser's unique user identifier.StringNo
nameAttribute. User's name.StringNo
surnameAttribute. User's surname.StringNo
birthdayAttribute. User's birthday in RFC 3339 format (e.g. 1993-03-12T00:00:00Z).

Note: Send the birthdays without the time offset.
DatetimeNo
genderAttribute. Gender of the user.StringNo
ageAttribute. Age of the userNumberNo
countryAttribute. Country information of the user in ISO 3166-1 alpha-2 format.StringNo
cityAttribute. City information of the user.StringNo
\n

Sample Body

\n
{\n  \"identifiers\": {\n    \"email\": \"sample@useinsider.com\"\n  }\n}\n\n
\n

Sample Responses

\n

200 OK

\n

This response returns if the request is successful.

\n

404 NOT FOUND

\n

The response below returns when you send the wrong identifiers.

\n
{\"error\":\"no such user for these identifiers: no data\"}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","user","v1","anonymize"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"379641ce-7653-4307-9885-9afa46ce3a6c"}],"id":"46cfc19d-da1d-4eeb-ae4e-a010db48334d","description":"

Data Governance APIs allow you to manage the data consent of your users. You can set data processing consent for your app users, or delete existing user data.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
APIFunction
Set data processing consent for app usersYou can update your app users' data processing consent to comply with GDPR.
Delete user dataYou can delete your customers' data.
\n
","_postman_id":"46cfc19d-da1d-4eeb-ae4e-a010db48334d"},{"name":"User Subscription APIs","item":[{"name":"Email","item":[{"name":"Unsubscribe email users from database","id":"c7654f52-469f-4ad9-b047-19fe91197174","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"email\": \"sample@useinsider.com\"\n}"},"url":"https://contact.useinsider.com/email/v1/unsubscribe","description":"

This API enables you to unsubscribe users from Insider's email platform.

\n

Body Parameters

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata. This includes the subscriber's email address.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailUser's email addressStringYes
\n

Sample Body

\n

The following is a sample body to unsubscribe a user from Email platform.

\n
{\n    \"email\": \"sample@mail.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n
401 Unauthorized
\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v1","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"3ad0672a-e343-4086-a418-f70ddad4bd3e","name":"Unsubscribe email users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"email\": \"sample@useinsider.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 12:58:11 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"819","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd630289939393d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"c7654f52-469f-4ad9-b047-19fe91197174"},{"name":"Unsubscribe email users for email global unsubscription","id":"0822c672-1298-4ff6-8318-17b49d33e5d3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"sample1@useinsider.com\",\n \"sample2@useinsider.com\",\n \"sample3@useinsider.com\"\n ]\n}"},"url":"https://contact.useinsider.com/email/v2/unsubscribe","description":"

The Email Unsubscribe API allows you to ingest email addresses into either the global unsubscribe list or a specific unsubscribe group you created in InOne.

\n

The Email Unsubscribe API v2 is the latest version of the Email Unsubscribe API, which supports bulk data ingestion. If you're still using the previous version (v1), we strongly recommend migrating to this updated version to benefit from bulk updates and enhanced functionality. Please note that new integrations with v1 are no longer supported.

\n

API usage changes depending on the identifier format you're using. Please refer to the relevant section based on your identifier configuration.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailsUser's email addressesString ArrayYes (normal and email based)
uuidsUser's unique user identifierString ArrayYes (only if you are not using email as an identifier and using profile based)
\n

Sample Requests

\n

When Email is the Identifier or Email-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

In cases where the email is used as the identifier, if the user exists, their status will be updated; if the user does not exist, a new user will be created.
For the email-based flow, the same request is used; however, it will only update the status of existing users and will not create new users.

\n

The emails field is required for global unsubscribe requests.

\n
curl --location 'contact.useinsider.com/email/v2/unsubscribe' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"emails\": [\n        \"sample1@useinsider.com\",\n        \"sample2@useinsider.com\",\n        \"sample3@useinsider.com\"\n    ]\n}'\n\n
\n

When UUID is the Identifier and Profile-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

If the profile-based flow is enabled for your account,
- If the user in the request exists, their status will be updated.
- If the user does not exist, a new user will be created.

\n

The uuid and email fields are required for global unsubscribe requests.

\n
curl --location 'http://contact.useinsider.com/email/v2/unsubscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'x-request-token: a1b2c3d4e5f6' \\\n--header 'x-partner-name: mybrand' \\\n--data-raw '{\n    \"users\": [\n        {\n            \"uuid\": \"test-uuid-1\",\n            \"email\": \"sample1@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-2\",\n            \"email\": \"sample2@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-3\",\n            \"email\": \"sample3@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-4\",\n            \"email\": \"sample4@useinsider.com\"\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n
401 Unauthorized
\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v2","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"f31bd4fe-b426-465b-a758-1136772d99a8","name":"Unsubscribe email users for email global unsubscription","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"sample1@useinsider.com\",\n \"sample2@useinsider.com\"\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v2/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 12:58:11 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"819","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd630289939393d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"0822c672-1298-4ff6-8318-17b49d33e5d3"},{"name":"Unsubscribe email users for email group","id":"68f28aeb-cbfa-4e5d-83f4-ffc30fcd1fc2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"sample1@useinsider.com\",\n \"sample2@useinsider.com\",\n \"sample3@useinsider.com\"\n ]\n}"},"url":"https://contact.useinsider.com/email/v2/unsubscribe","description":"

The Email Unsubscribe API allows you to ingest email addresses into either the global unsubscribe list or a specific unsubscribe group you created in InOne.

\n

The Email Unsubscribe API v2 is the latest version of the Email Unsubscribe API, which supports bulk data ingestion. If you're still using the previous version (v1), we strongly recommend migrating to this updated version to benefit from bulk updates and enhanced functionality. Please note that new integrations with v1 are no longer supported.

\n

API usage changes depending on the identifier format you're using. Please refer to the relevant section based on your identifier configuration.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailsUsers' email addressesString ArrayYes
usersUsers' unique user identifierString ArrayYes (only if you are not using email as an identifier)
group_nameThe Unsubscribe Group’s name. If the group name does not exist, it creates a new group and unsubscribes the user from it. More than two, fewer than 30 characters.StringYes
\n

Sample Body

\n

When Email is the Identifier or Email-Based Flow is Enabled

\n

In cases where the email is used as the identifier, if the user exists, their status will be updated; if the user does not exist, a new user will be created.

\n

For the email-based flow, the same request is used; however, it will only update the status of existing users and will not create new users.

\n

The emails and group_name fields are required for the group unsubscribe requests. If the group name you provided does not already exist, a new group will be created with that name when the request is sent.

\n
curl --location 'contact.useinsider.com/email/v2/unsubscribe' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"emails\": [\n        \"sample1@useinsider.com\",\n        \"sample2@useinsider.com\",\n        \"sample3@useinsider.com\",\n        \"sample4@useinsider.com\",\n        \"sample5@useinsider.com\"\n    ],\n    \"group_name\": \"unsubscribe_group_name\"\n}'\n\n
\n

When UUID is the Identifier and Profile-Based Flow is Enabled

\n

The emailuuid, and group_name fields are required for the group unsubscribe requests.

\n

If the group name you provided does not already exist, a new group will be created with that name when the request is sent.

\n
curl --location 'http://contact.useinsider.com/email/v2/unsubscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'x-request-token: a1b2c3d4e5f6' \\\n--header 'x-partner-name: mybrand' \\\n--data-raw '{\n    \"users\": [\n        {\n            \"uuid\": \"test-uuid-1\",\n            \"email\": \"sample1@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-2\",\n            \"email\": \"sample2@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-3\",\n            \"email\": \"sample3@useinsider.com\"\n        },\n        {\n            \"uuid\": \"test-uuid-4\",\n            \"email\": \"sample4@useinsider.com\"\n        }\n    ]\n    \"group_name\": \"group_name\"\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n
401 Unauthorized
\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v2","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"a9f8876a-96be-4007-aaeb-7ea824e53e7e","name":"Unsubscribe email users for email group","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"example1@useinsider.com\",\n \"example2@useinsider.com\"\n ],\n \"is_unsubscribe_group\": true,\n \"group_name\": \"unsubscribe_group_name\",\n \"uploader_email\": \"example@useinsider.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 12:58:11 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"819","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd630289939393d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"68f28aeb-cbfa-4e5d-83f4-ffc30fcd1fc2"},{"name":"Resubscribe email users","id":"3d4f829e-1962-4bca-933c-e9b35e6691dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"email\": \"sample@useinsider.com\"\n}"},"url":"https://contact.useinsider.com/email/v1/subscribe","description":"

This API allows you to set an unreachable email status as reachable on Insider's email platform.

\n

Body Parameters

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata. This includes the subscriber's email address.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailUser's email addressStringYes
\n

Sample Body

\n

The following is a sample body to resubscribe a user to the Email platform.

\n
{\n    \"email\": \"sample@mail.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v1","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"584aa07f-2c37-4e8b-bc29-f1f43c429b29","name":"Resubscribe email users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"email\": \"sample@useinsider.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v1/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 12:59:40 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"706","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd632574a0b9c28-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"3d4f829e-1962-4bca-933c-e9b35e6691dc"},{"name":"Resubscribe Email Users for Email Global Subscribe","id":"a2ba4d4b-facd-4435-a718-1a383b7abda9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Resubscribe token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"sample1@useinsider.com\",\n \"sample2@useinsider.com\"\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v2/subscribe","description":"

The Email Resubscribe API allows you to set an unreachable email status as reachable on the Insider's Email platform.

\n

The Resubscribe API v2 is the latest version of the Email Resubscribe API, which supports bulk data ingestion. If you're still using the previous version (v1), we strongly recommend migrating to this updated version to benefit from bulk updates and enhanced functionality. Please note that new integrations with v1 are no longer supported.

\n

API usage changes depending on the identifier format you're using. Please refer to the relevant section based on your identifier configuration.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailsUser's email address(es)String Arrayes (normal and email-based)
uuidsUsers unique user identifierString ArrayYes (only if you are not using email as an identifier and using profile-based)
\n

Sample Requests

\n

When Email is the Identifier or Email-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

For the email-based flow, the same request is used; however, it will only update the status of existing users and will not create new users.

\n

The emails field is required for resubscribe requests.

\n
curl --location --request POST 'http://contact.useinsider.com/email/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n     \"emails\": [\n        \"sample1@useinsider.com\",\n        \"sample2@useinsider.com\"\n    ]\n}'\n\n
\n

When UUID is the Identifier and Profile-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

If the profile-based flow is enabled for your account:
- If the user in the request exists, their status will be updated.
- If the user does not exist, a new user will be created.

\n

The uuid, and uploader_email fields are required for resubscribe requests.

\n
curl --location 'https://contact.useinsider.com/email/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'x-request-token: mybrand' \\\n--header 'x-partner-name: a1b2c3d4e5f6' \\\n--data-raw '{\n    \"uuids\": [\n        \"test-uuid-1\",\n        \"test-uuid-2\",\n        \"test-uuid-3\",\n        \"test-uuid-7\"\n    ],\n    \"emails\": [\n        \"samlpe1@useinsider.com\",\n        \"sample2@useinsider.com\",\n        \"sample3@useinsider.com\",\n        \"sample4@useinsider.com\"\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n\n
\n

<p >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.</p>

\n
\n","urlObject":{"protocol":"https","path":["email","v2","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a2ba4d4b-facd-4435-a718-1a383b7abda9"},{"name":"Resubscribe Email Users for Email Group Subscribe","id":"cff18d71-7f92-42e0-b57f-6b8c2ba41aba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Resubscribe token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"emails\": [\n \"sample1@useinsider.com\",\n \"sample2@useinsider.com\"\n ],\n \"group_id\": 12345\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/email/v2/subscribe","description":"

The Email Resubscribe API allows you to set an unreachable email status as reachable on the Insider's Email platform.

\n

The Resubscribe API v2 is the latest version of the Email Resubscribe API, which supports bulk data ingestion. If you're still using the previous version (v1), we strongly recommend migrating to this updated version to benefit from bulk updates and enhanced functionality. Please note that new integrations with v1 are no longer supported.

\n

API usage changes depending on the identifier format you're using. Please refer to the relevant section based on your identifier configuration.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
emailsUser's email addressString ArrayYes
uuidsUsers unique user identifierString ArrayYes (only if you are using profile based flow)
group_idThe Unsubscribe Group’s ID.NumberYes
\n

Sample Requests

\n

When Email is the Identifier or Email-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

The emails and group_id are required for the group resubscribe requests.

\n

With this request, you can only subscribe users from an existing group; a new group cannot be created.

\n
curl --location --request POST 'http://contact.useinsider.com/email/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n    \"emails\": [\n        \"sample1@useinsider.com\",\n        \"sample2@useinsider.com\"\n    ],\n    \"group_id\": 12345\n}'\n\n
\n

When UUID is the Identifier and Profile-Based Flow is Enabled

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata.

\n

The emailsuuids and group_id fields are required for the group resubscribe requests.

\n

With this request, you can only subscribe users from an existing group; a new group cannot be created.

\n
curl --location 'https://contact.useinsider.com/email/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'x-request-token: mybrand' \\\n--header 'x-partner-name: a1b2c3d4e5f6' \\\n--data-raw '{\n    \"uuids\": [\n        \"test-uuid-1\",\n        \"test-uuid-2\",\n        \"test-uuid-3\",\n        \"test-uuid-7\"\n    ],\n    \"emails\": [\n        \"sample1@useinsider.com\",\n        \"sample2@useinsider.com\",\n        \"sample3@useinsider.com\",\n        \"sample4@useinsider.com\"\n    ],\n    \"group_id\": 12345\n}'\n\n
\n

Sample Responses

\n

200 OK

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n\n
\n

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.

\n
\n","urlObject":{"protocol":"https","path":["email","v2","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"cff18d71-7f92-42e0-b57f-6b8c2ba41aba"}],"id":"7bbc4a85-03cf-4edb-93d4-c456383d9b20","description":"

With these APIs, you can manage the email subscription preferences of your users. You can unsubscribe them from Insider's database, or resubscribe them for your email campaigns.

\n","_postman_id":"7bbc4a85-03cf-4edb-93d4-c456383d9b20"},{"name":"WhatsApp","item":[{"name":"Unsubscribe WhatsApp users from database","id":"65d12e01-18fc-40d6-85aa-638b95eaaa9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+6512345678\"\n}"},"url":"https://contact.useinsider.com/whatsapp/v1/unsubscribe","description":"

This API enables you to unsubscribe users from Insider's WhatsApp platform.

\n

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.

\n

Body Parameters

\n

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.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringYes
\n

Sample Body

\n

The following is a sample body to unsubscribe users from WhatsApp platform.

\n
{\n    \"phone_number\": \"+905012345678\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["whatsapp","v1","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"9f510416-17e3-41c3-ae56-3e9f8c43392c","name":"Unsubscribe WhatsApp users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/whatsapp/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:01:34 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"121","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=aUwYKAPcIwZw286m8tiW.4k1pjTJSuuLMgK59gQ50h4-1685106094-0-AVDM49tTahTIQk2XXCuqqxua00pqcdCop4LZuQfQNvPKKkV8SZrk/JJOKrX1nyWtWUlj4x+JLev5nhONiwbTXvo=; path=/; expires=Fri, 26-May-23 13:31:34 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd635217aef3b4d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"65d12e01-18fc-40d6-85aa-638b95eaaa9e"},{"name":"Unsubscribe WhatsApp users from database / v2","id":"3b339f0f-cb5f-48b9-aa11-f8bfa92c7269","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_numbers\": [\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\"\n ]\n}"},"url":"https://contact.useinsider.com/whatsapp/v2/unsubscribe","description":"

The WhatsApp Unsubscribe API enables you to unsubscribe users from Insider's WhatsApp platform.

\n

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.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numbersUsers' phone number in E.164 format (e.g. +6598765432)String ArrayYes
\n

Sample Request

\n

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.

\n

The phone_numbers field is required for resubscribe requests.

\n
curl --location --request POST 'http://contact.useinsider.com/whatsapp/v2/unsubscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n     \"phone_numbers\": [\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\"\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n

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.

\n","urlObject":{"protocol":"https","path":["whatsapp","v2","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"7e599235-fd0e-457c-9448-1094193ff449","name":"Unsubscribe WhatsApp users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/whatsapp/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:01:34 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"121","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=aUwYKAPcIwZw286m8tiW.4k1pjTJSuuLMgK59gQ50h4-1685106094-0-AVDM49tTahTIQk2XXCuqqxua00pqcdCop4LZuQfQNvPKKkV8SZrk/JJOKrX1nyWtWUlj4x+JLev5nhONiwbTXvo=; path=/; expires=Fri, 26-May-23 13:31:34 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd635217aef3b4d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"3b339f0f-cb5f-48b9-aa11-f8bfa92c7269"},{"name":"Resubscribe WhatsApp users","id":"b76eb310-0d86-4535-b24f-a29bd384102c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+655012345678\"\n}"},"url":"https://contact.useinsider.com/whatsapp/v1/subscribe","description":"

This API allows you to set an unreachable phone number status as reachable on Insider's WhatsApp platform.

\n

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.

\n

Body Parameters

\n

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.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringYes
\n

Sample Body

\n

The following is a sample body to resubsribe users to Insider's WhatsApp platform.

\n
{\n     \"phone_number\": \"+905012345678\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["whatsapp","v1","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"9dea9068-119d-4adf-a2aa-925a7039cf36","name":"Resubscribe WhatsApp users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. ","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/whatsapp/v1/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:03:24 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"102","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd637d33841825a-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"b76eb310-0d86-4535-b24f-a29bd384102c"},{"name":"Resubscribe WhatsApp users / v2","id":"5e9ff6e7-8dbd-40c1-b167-4a23d013eef0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_numbers\": [\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\"\n ]\n}"},"url":"https://contact.useinsider.com/whatsapp/v2/subscribe","description":"

The WhatsApp Resubscribe API enables you to update an unreachable phone number status to reachable on Insider's WhatsApp platform.

\n

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.

\n

Body Parameters

\n

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.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numbersUsers' phone numbers in E.164 format (e.g. +6598765432)String ArrayYes
\n

Sample Request

\n

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.

\n

The phone_numbers field is required for resubscribe requests.

\n
curl --location --request POST 'http://contact.useinsider.com/whatsapp/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n     \"phone_numbers\": [\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\"\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n

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.

\n","urlObject":{"protocol":"https","path":["whatsapp","v2","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5e9ff6e7-8dbd-40c1-b167-4a23d013eef0"}],"id":"f269615b-4eaf-45d7-8802-6b3656276e6c","description":"

With these APIs, you can manage the WhatsApp subscription preferences of your users. You can unsubscribe them from Insider's database, or resubscribe them for your WhatsApp campaigns.

\n","_postman_id":"f269615b-4eaf-45d7-8802-6b3656276e6c"},{"name":"SMS","item":[{"name":"Unsubscribe SMS users from database","id":"a9ebbbf0-2049-4f44-b5d0-b94e849c996c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+65012345678\"\n}"},"url":"https://contact.useinsider.com/sms/v1/unsubscribe","description":"

This API enables you to unsubscribe users from Insider's SMS platform.

\n

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.

\n

Body Parameters

\n

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.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringYes
\n

Sample Body

\n

The following is a sample body to unsubscribe users from the SMS platform.

\n
{\n    \"phone_number\": \"+905012345678\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["sms","v1","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"f4c607cf-d547-42d7-a90b-704c2143833f","name":"Unsubscribe SMS users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/sms/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:04:26 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"116","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd639519fff57e5-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"a9ebbbf0-2049-4f44-b5d0-b94e849c996c"},{"name":"Unsubscribe SMS users from database / v2","id":"c0b1c5b2-0d55-429a-be6d-ca4f969e17df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_numbers\": [\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\"\n ]\n}"},"url":"https://contact.useinsider.com/sms/v2/unsubscribe","description":"

The SMS Unsubscribe API enables you to unsubscribe users from Insider's SMS platform.

\n

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.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numbersUsers' phone numbers in E.164 format (e.g. +6598765432)String ArrayYes
\n

Sample Request

\n

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.

\n

The phone_numbers field is required for resubscribe requests.

\n
curl --location --request POST 'http://contact.useinsider.com/sms/v2/unsubscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n     \"phone_numbers\": [\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\"\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n

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.

\n","urlObject":{"protocol":"https","path":["sms","v2","unsubscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"a5684ba1-9d97-4e48-a454-f79444452fce","name":"Unsubscribe SMS users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/sms/v1/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:04:26 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"116","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd639519fff57e5-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"c0b1c5b2-0d55-429a-be6d-ca4f969e17df"},{"name":"Resubscribe SMS users","id":"f7886410-7880-43e5-bdf4-3ba6e95b5931","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+655012345678\"\n}"},"url":"https://contact.useinsider.com/sms/v1/subscribe","description":"

This API allows you to set an unreachable phone number status as reachable on Insider's SMS platform.

\n

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.

\n

Body Parameters

\n

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.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numberUser's phone number in E.164 format (e.g. +6598765432)StringYes
\n

Sample Body

\n

The following is a sample body to resubscribe users to the SMS platform.

\n
{\n     \"phone_number\": \"+905012345678\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["sms","v1","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"c3875b66-8507-4dd4-9106-e40f8dd30d51","name":"Resubscribe SMS users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. ","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/sms/v1/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:05:39 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"191","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd63b194dd67fbe-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"f7886410-7880-43e5-bdf4-3ba6e95b5931"},{"name":"Resubscribe SMS users / v2","id":"8ddba16f-e453-4b41-94b0-05c20234d170","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_numbers\": [\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\",\n \"+900000000000\"\n ]\n}"},"url":"https://contact.useinsider.com/sms/v2/subscribe","description":"

The SMS Resubscribe API enables you to update an unreachable phone number status to reachable on Insider's SMS platform.

\n

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.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
phone_numbersUsers' phone numbers in E.164 format (e.g. +6598765432)String ArrayYes
\n

Sample Request

\n

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.

\n

The phone_numbers field is required for resubscribe requests.

\n
curl --location --request POST 'http://contact.useinsider.com/sms/v2/subscribe' \\\n--header 'Content-Type: application/json' \\\n--header 'X-PARTNER-NAME: mybrand' \\\n--header 'X-REQUEST-TOKEN: a1b2c3d4e5f6' \\\n--data-raw '{\n     \"phone_numbers\": [\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\",\n        \"+900000000000\"\n    ]\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"statusMessage\": \"OK\"\n}\n\n
\n

400 Bad Request

\n
{\n  \"statusMessage\": \"Bad request\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the request is not authorized.

\n
{\n  \"statusMessage\": \"Unauthorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n

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.

\n","urlObject":{"protocol":"https","path":["sms","v2","subscribe"],"host":["contact","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"80057ee6-65a4-4f9b-95e7-6757bce84c7d","name":"Resubscribe SMS users","originalRequest":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name. The partner name should be lowercase.","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"This key is required to authorize your request. ","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"phone_number\": \"+16102347589\"\n}","options":{"raw":{"language":"json"}}},"url":"https://contact.useinsider.com/sms/v1/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 13:05:39 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Content-Length","value":"22","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"191","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd63b194dd67fbe-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"statusMessage\": \"OK\"\n}"}],"_postman_id":"8ddba16f-e453-4b41-94b0-05c20234d170"}],"id":"1097adcb-edb6-4955-977b-ad8fca657550","description":"

With these APIs, you can manage the SMS subscription preferences of your users. You can unsubscribe them from Insider's database, or resubscribe them for your SMS campaigns.

\n","_postman_id":"1097adcb-edb6-4955-977b-ad8fca657550"}],"id":"7767f0c6-f266-4937-86ff-1893c463956d","description":"

User Subscription APIs allow you to manage the subscription preferences of your users for Email, WhatsApp, and SMS platforms. You can unsubscribe and resubscribe your users via these APIs.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
APIFunction
Unsubscribe email users from databaseYou can unsubscribe users from Insider's Email platform.
Resubscribe email usersYou can change the unreachable status of user's email to reachable for the Email platform.
Unsubscribe WhatsApp users from databaseYou can unsubscribe users from Insider's WhatsApp platform.
Resubscribe WhatsApp usersYou can change the unreachable status of user's phone number to reachable for the WhatsApp platform.
Unsubscribe SMS users from databaseYou can unsubscribe users from Insider's SMS platform.
Resubscribe SMS usersYou can change the unreachable status of user's phone number to reachable for the SMS platform.
\n
","_postman_id":"7767f0c6-f266-4937-86ff-1893c463956d"},{"name":"Messaging APIs","item":[{"name":"Email APIs","item":[{"name":"Send transactional emails","id":"f6c3aac0-5b17-48c1-b510-546d552f6ea0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"},{"key":"Cache-Control","value":"no-cache","description":"

This header specifies browser caching in requests and responses.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"subject\": \"Hello\",\n \"tos\": [\n {\n \"name\": \"John Doe\",\n \"email\": \"sample@useinsider.com\"\n }\n ],\n \"from\": {\n \"name\": \"Posh Street\",\n \"email\": \"posh@useinsider.com\"\n },\n \"content\": [\n {\n \"type\": \"text/html\",\n \"value\": \"

I am {{first_name}}.

\"\n }\n ],\n \"cc\": [\n {\n \"name\": \"User in CC\",\n \"email\": \"user.cc@useinsider.com\"\n }\n ],\n \"bcc\": [\n {\n \"name\": \"User in BCC\",\n \"email\": \"user.bcc@useinsider.com\"\n }\n ],\n \"reply_to\": {\n \"name\": \"Reply to\",\n \"email\": \"reply@useinsider.com\"\n },\n \"dynamic_fields\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"product_name1\": \"Laptop\",\n \"price1\": \"$1000\",\n \"product_name2\": \"Iphone\",\n \"price2\": \"$850\"\n },\n \"unique_args\": {\n \"category\": \"Confirmation Email\",\n \"purchase_channel\": \"App\"\n },\n \"attachments\": [\n {\n \"content\": \"aW5zaWRlciB0ZXN0\",\n \"file_name\": \"file.txt\"\n }\n ],\n \"callback\": {\n \"url\": \"yourcallbackurl\",\n \"secret\": \"yoursecret\"\n }\n}"},"url":"https://mail.useinsider.com/mail/v1/send","description":"

This API enables you to send targeted ecommerce and personalized one to one emails to your users. You can trigger these emails once a user takes a specific action on your platform.

\n

You can use transactional emails to:

\n\n

Body Parameters

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content and metadata (e.g. to, reply-to, and email subject).

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
subjectSubject line that is sent to the recipientStringYes
tosEmail address(es) to send the email toArrayYes
nameUser nameStringNo
emailEmail address of the recipientStringNo
fromEmail address that the email is sent fromObjectYes
nameName that is used as the sender nameStringNo
emailEmail address that is used as the sender emailStringNo
contentContent of the emailArrayYes
typeType of your email contentStringNo
valueEmail contentStringYes
ccEmail address(es) to send a carbon copy of the email toArrayNo
nameUser nameStringNo
emailEmail address of the recipient in the ccStringNo
bccEmail address(es) to send a blank carbon copy of the email toArrayNo
nameUser nameStringNo
emailEmail address of the recipient that is in bccStringNo
reply_toReply-to address and name that are used to send the email toObjectNo
nameReply-to name that the email is replied toStringNo
emailReply-to email that the email is replied toStringNo
attachmentsAny attachments in the emailArrayNo
contentBase64 encoded content of the attachmentStringNo
file_nameAttached file nameStringNo
dynamic_fieldsDynamic fields that you can use to personalize the content (e.g. first_name, last_name, product_name1, etc.)ObjectNo
unique_argsUnique arguments of transactional emails used for tracking purposesObjectNo
callbackThe endpoint that you define to receive the webhook eventsObjectNo
urlCallback endpointStringNo
secretThe secret key to encrypt the body of your webhook events in SHA1 algorithmStringNo
\n

Sample Body

\n

The following is a sample body to send transactional emails.

\n
{\n  \"subject\": \"Hello\",\n  \"tos\": [\n    {\n      \"name\": \"John Doe\",\n      \"email\": \"sample@mail.com\"\n    }\n  ],\n  \"from\": {\n    \"name\": \"Posh Street\",\n    \"email\": \"posh@street.com\"\n  },\n  \"content\": [\n    {\n      \"type\": \"text/html\",\n      \"value\": \"<p class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>I am {{first_name}}.</p>\"\n    }\n  ],\n  \"cc\": [\n    {\n      \"name\": \"User in CC\",\n      \"email\": \"user.cc@mail.com\"\n    }\n  ],\n  \"bcc\": [\n    {\n      \"name\": \"User in BCC\",\n      \"email\": \"user.bcc@mail.com\"\n    }\n  ],\n  \"reply_to\": {\n    \"name\": \"Reply to\",\n    \"email\": \"reply@mail.com\"\n  },\n  \"dynamic_fields\": {\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"product_name1\": \"Laptop\",\n    \"price1\": \"$1000\",\n    \"product_name2\": \"Iphone\",\n    \"price2\": \"$850\"\n  },\n  \"unique_args\": {\n    \"category\": \"Confirmation Email\",\n    \"purchase_channel\": \"App\"\n  },\n  \"attachments\": [\n    {\n      \"content\": \"aW5zaWRlciB0ZXN0\",\n      \"file_name\": \"file.txt\"\n    }\n  ],\n  \"callback\": {\n    \"url\": \"yourcallbackurl\",\n    \"secret\": \"yoursecret\"\n  }\n}\n\n
\n

If you create your transactional email template via the Email Template Library, use the following sample payload instead. In this example, the ID of the template is used by the template_id key.

\n
{\n  \"subject\": \"Hello\",\n  \"tos\": [\n    {\n      \"name\": \"John Doe\",\n      \"email\": \"sample@useinsider.com\"\n    }\n  ],\n  \"from\": {\n    \"name\": \"Posh Street\",\n    \"email\": \"posh@street.com\"\n  },\n  \"reply_to\": {\n    \"name\": \"Reply to\",\n    \"email\": \"reply@useinsider.com\"\n  },\n  \"template_id\": \"275\",\n  \"content\": [\n    {\n      \"type\": \"text/html\",\n      \"value\": \"html code\"\n    }\n  ],\n  \"attachments\": [],\n  \"dynamic_fields\": {}\n}\n\n
\n

Sample Responses

\n

202 Accepted

\n

This response indicates that your request was successfully completed.

\n
{\n    \"message_id\": \"8e664ecd-352d-4dbd-9786-ceb78b5b173b\",\n    \"status_message\": \"accepted\"\n}\n\n
\n

400 Bad Request

\n

This response indicates that your request is missing the email address in the 'to' parameter.

\n
{\n  \"errors\": [\n    \"Missing 'email' on 'tos' parameter\"\n  ],\n  \"status_message\": \"failed to validate request\"\n}\n\n
\n

400 Bad Request

\n

This response indicates that the request has an invalid callback URL.

\n
{\n  \"errors\": [\n    \"Invalid callback URL in 'url' on 'callback'\"\n  ],\n  \"status_message\": \"failed to validate request\"\n}\n\n
\n

400 Missing Content Type

\n

This response indicates that the content type header of the request is incorrect.

\n
{\n  \"message\": \"content type must be application/json\",\n  \"status\": 400\n}\n\n
\n

400 Missing Subject Line

\n

This response indicates that the request is missing the 'subject' parameter.

\n
{\n  \"errors\": [\n    \"Missing 'subject' parameter\"\n  ],\n  \"message\": \"bad-request\",\n  \"status\": 400\n}\n\n
\n

400 Missing Content

\n

This response indicates that the request is missing the 'content' parameter.

\n
{\n  \"errors\": [\n    \"Missing 'content' parameter\"\n  ],\n  \"message\": \"bad-request\",\n  \"status\": 400\n}\n\n
\n

400 Missing 'From' Parameter

\n

This response indicates that the request is missing the 'from' parameter.

\n
{\n  \"errors\": [\n    \"Missing 'from' parameter\"\n  ],\n  \"message\": \"bad-request\",\n  \"status\": 400\n}\n\n
\n

400 Missing 'To' Parameter

\n

This response indicates that the request is missing the 'to' parameter.

\n
{\n  \"errors\": [\n    \"Missing 'to' parameter\"\n  ],\n  \"message\": \"bad-request\",\n  \"status\": 400\n}\n\n
\n

401 Invalid API Key

\n

This response indicates that the API key provided in the request is invalid, expired, or revoked.

\n
{\n  \"message\": \"The provided API key is invalid, expired or revoked\",\n  \"status\": 401\n}\n\n
\n

500 Internal Server Error

\n

This response indicates that an internal error occurred on the server side and the request could not be processed.

\n

503 Service Unavailable

\n

This response indicates that the service is temporarily unavailable due to server overload or maintenance.

\n

504 Server Timeout

\n

This response indicates that the server did not receive a timely response from an upstream server.

\n

520 Cloudflare Network Error

\n

This response indicates an unexpected error on the Cloudflare network side, preventing the request from being processed.

\n

Suggested Retry Mechanism: If any of the above errors are encountered, the request was not processed successfully on the server side. A retry mechanism is recommended to distribute retries randomly within a 5-minute interval, allowing server resources to recover and traffic to stabilize.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["mail","v1","send"],"host":["mail","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"9cbd161b-83d7-4dfc-856e-d33eaa75a136","name":"Send transactional emails","originalRequest":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"},{"key":"Cache-Control","value":"no-cache","description":"This header specifies browser caching in requests and responses.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"subject\": \"Thank you for your purchase!\",\n \"tos\": [\n {\n \"name\": \"John Doe\",\n \"email\": \"sample@useinsider.com\"\n }\n ],\n \"from\": {\n \"name\": \"Posh Street\",\n \"email\": \"mail@useinsider.com\"\n },\n \"content\": [\n {\n \"type\": \"text/html\",\n \"value\": \"

Hello {{first_name}}! Thank you for purchasing {{product_name1}} and {{product_name2}}.

\"\n }\n ],\n \"dynamic_fields\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"product_name1\": \"Yoga Leggings\",\n \"price1\": \"$35\",\n \"product_name2\": \"Sports Bra\",\n \"price2\": \"$12\"\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://mail.useinsider.com/mail/v1/send"},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 26 May 2023 12:46:33 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=utf-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"110","enabled":true},{"key":"vary","value":"Accept-Encoding","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=P8Y4dNl56X4Ui2qNuETXTwz1f3WEnuAmFecF.9uJQbo-1685105193-0-AShO6RMFSS8Mo5KyNk9tERCAnIyLu/CWPCpcRV1xEBniWDqEOmkeaikABVaWyKXmvfP59PZQWjoYpIWGmg+jZ9E=; path=/; expires=Fri, 26-May-23 13:16:33 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cd61f1f29657fca-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"message_id\": \"f0935bbf-fe1d-4b89-aa04-149c9a860081\",\n \"status_message\": \"accepted\"\n}"}],"_postman_id":"f6c3aac0-5b17-48c1-b510-546d552f6ea0"},{"name":"Create email campaigns","id":"bb5da9a3-0d88-4ffd-94d3-97a3f25fc84c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"name\": \"my single campaign\",\n \"tags\": [\n \"v\",\n \"tag1 789dfs44\"\n ],\n \"type\": \"single\",\n \"variations\": [\n {\n \"subject\": \"Hello {{name}} {{email}} {{custom3|fallback}}\",\n \"pre_header\": \"apre {{surname|there}}\",\n \"html\": \"PHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMCIgYWxpZ249ImxlZnQiIGJnY29sb3I9IiM5MTk0OUYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5NDlGOyI+DQogICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIiB3aWR0aD0iNTYwIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZXNkLWJsb2NrLWltYWdlIGVzLXAxNSIgc3R5bGU9ImZvbnQtc2l6ZTogMHB4OyI+PGEgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgY2xhc3M9ImFkYXB0LWltZyIgc3JjPSJodHRwczovL2ltYWdlLnVzZWluc2lkZXIuY29tL2VtYWlsLXRlbXBsYXRlL2xvZ28ucG5nIiBhbHQgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyIgaGVpZ2h0PSIzMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIHN0eWxlPSJjb2xvcjogI0ZGRkZGRjsgZm9udC1zaXplOiAzMHB4OyI+PHN0cm9uZz5UaW1lIGZvciBncmVhdCBlbWFpbCBkZXNpZ248L3N0cm9uZz48L2gyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IGVzLW0tdHh0LWMgZXMtcDEwdCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6ICNGRkZGRkY7Ij5UaGlzIGlzIGEgbmV3IHRleHQgYmxvY2sgcmVhZHkgZm9yIHlvdXIgbWVzc2FnZSBjb250ZW50LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPg0KPC90ZD4=\",\n \"utm\": {\n \"source\": \"thisis_source\",\n \"campaign\": \"thisis_campaign\",\n \"medium\": \"thisis_medium\",\n \"extra\": \"thisis_extra\"\n }\n }\n ]\n}"},"url":"https://mail.useinsider.com/content/v1/campaign/create","description":"

This API enables you to send email body and subject from your back-end to create email campaigns on Insider platform. With this API request, you can specify the account name, campaign name and campaign type.

\n

You can use this API to:

\n\n

Body Parameters

\n

Before sending your request, make sure you create it within the following criteria:

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
nameName of the campaign that you want to create on Insider platform. It should be alphanumeric with -_{space}, max. 40 and min. 5 characters.StringYes
tagsTag of the campaign that you want to create on Insider platform. It should be alphanumeric with -_{space}, max. 5 tags, max. 15 character-long each.Array of stringsNo
typeType of the campaign that you want to create on Insider platform (single, experiment, recurring)StringYes
variationsArray that contains email subject, preheader, email HTML, and UTM parameters.Array of objectYes
subjectThe subject of your email campaign up to 200 characters.StringYes
pre_headerThe summary of your email message up to 150 characters.StringNo
htmlThe HTML of your email campaign in base64 format.StringYes
utmThe source, campaign, medium, and extra UTM parameters of your email campaign. The value for each can have 40 characters max.ObjectNo
\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your email's content as variations.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n

Sample Body

\n

Below is a sample body for a Single email campaign.

\n
{\n  \"name\": \"my single campaign\",\n  \"tags\": [\n    \"v\",\n    \"tag1 789dfs44\"\n  ],\n  \"type\": \"single\",\n  \"variations\": [\n    {\n      \"subject\": \"Hello {{name}} {{email}} {{custom3|fallback}}\",\n      \"pre_header\": \"apre {{surname|there}}\",\n      \"html\": \"PHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMCIgYWxpZ249ImxlZnQiIGJnY29sb3I9IiM5MTk0OUYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5NDlGOyI+DQogICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIiB3aWR0aD0iNTYwIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZXNkLWJsb2NrLWltYWdlIGVzLXAxNSIgc3R5bGU9ImZvbnQtc2l6ZTogMHB4OyI+PGEgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgY2xhc3M9ImFkYXB0LWltZyIgc3JjPSJodHRwczovL2ltYWdlLnVzZWluc2lkZXIuY29tL2VtYWlsLXRlbXBsYXRlL2xvZ28ucG5nIiBhbHQgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyIgaGVpZ2h0PSIzMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIHN0eWxlPSJjb2xvcjogI0ZGRkZGRjsgZm9udC1zaXplOiAzMHB4OyI+PHN0cm9uZz5UaW1lIGZvciBncmVhdCBlbWFpbCBkZXNpZ248L3N0cm9uZz48L2gyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IGVzLW0tdHh0LWMgZXMtcDEwdCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6ICNGRkZGRkY7Ij5UaGlzIGlzIGEgbmV3IHRleHQgYmxvY2sgcmVhZHkgZm9yIHlvdXIgbWVzc2FnZSBjb250ZW50LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPg0KPC90ZD4=\",\n      \"utm\": {\n        \"source\": \"thisis_source\",\n        \"campaign\": \"thisis_campaign\",\n        \"medium\": \"thisis_medium\",\n        \"extra\": \"thisis_extra\"\n      }\n    }\n  ]\n}\n\n
\n

Below is a sample body for an Experiment (A/B) campaign.

\n
{\n  \"name\": \"Campaign Name\",\n  \"tags\": [\n    \"campaign-tag\"\n  ],\n  \"type\": \"experiment\",\n  \"variations\": [\n    {\n      \"subject\": \"Variation A subject {{custom}}\",\n      \"html\": \"PHA+TXkgZW1haWwgYm9keSBBPC9wPg==\",\n      \"pre_header\": \"Variation A preheader\"\n    },\n    {\n      \"subject\": \"Variation B subject {{custom}}\",\n      \"html\": \"PHA+TXkgZW1haWwgYm9keSBBPC9wPg==\",\n      \"pre_header\": \"Variation B preheader\",\n      \"utm\": {\n        \"source\": \"my_source\",\n        \"campaign\": \"my_campaign\",\n        \"medium\": \"email\",\n        \"extra\": \"value\"\n      }\n    }\n  ]\n}\n\n
\n

Sample Responses

\n

201 Created Success Message

\n

The following response returns if the request is successful.

\n
{\n   \"message\":\"created\",\n   \"id\":\"builderID\"\n}\n\n
\n

400 Validation Error Message

\n

The following response returns if the request is not validated.

\n
{\n   \"error\":\"$message\"\n}\n\n
\n

401 Unauthorized Error Message

\n

The following response returns if the request is not authorized.

\n
{\n   \"error\":\"unathorized\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["content","v1","campaign","create"],"host":["mail","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"b793cc5e-8aca-4cdb-bf08-a60245a80b22","name":"Create single email campaign","originalRequest":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"name\": \"My single API campaign\",\n \"tags\": [\n \"mytag\"\n ],\n \"type\": \"single\",\n \"variations\": [\n {\n \"subject\": \"Hello {{name|dear customer}}\",\n \"pre_header\": \"This is my preheader.\",\n \"html\": \"PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWw+DQoNCjxoZWFkPg0KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICA8bWV0YSBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIgbmFtZT0idmlld3BvcnQiPg0KICAgIDxtZXRhIG5hbWU9IngtYXBwbGUtZGlzYWJsZS1tZXNzYWdlLXJlZm9ybWF0dGluZyI+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4NCiAgICA8bWV0YSBjb250ZW50PSJ0ZWxlcGhvbmU9bm8iIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iPg0KICAgIDx0aXRsZT48L3RpdGxlPg0KICAgIDwhLS1baWYgKG1zbyAxNildPiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiBhe3RleHQtZGVjb3JhdGlvbjogbm9uZTt9PC9zdHlsZT48IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIGd0ZSBtc28gOV0+PHN0eWxlPnN1cCB7IGZvbnQtc2l6ZTogMTAwJSAhaW1wb3J0YW50OyB9PC9zdHlsZT48IVtlbmRpZl0tLT4NCjwvaGVhZD4NCg0KPGJvZHk+DQogICAgPGRpdiBjbGFzcz0iZXMtd3JhcHBlci1jb2xvciI+DQogICAgICAgIDwhLS1baWYgZ3RlIG1zbyA5XT4NCgkJCTx2OmJhY2tncm91bmQgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIGZpbGw9InQiPg0KCQkJCTx2OmZpbGwgdHlwZT0idGlsZSIgY29sb3I9IiNmN2Y3ZjciPjwvdjpmaWxsPg0KCQkJPC92OmJhY2tncm91bmQ+DQoJCTwhW2VuZGlmXS0tPg0KICAgICAgICA8dGFibGUgY2xhc3M9ImVzLXdyYXBwZXIiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtZW1haWwtcGFkZGluZ3MiIHZhbGlnbj0idG9wIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJlcy1oZWFkZXIgZXNkLWhlYWRlci1wb3BvdmVyIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXMtYWRhcHRpdmUgZXNkLXN0cmlwZSIgYWxpZ249ImNlbnRlciIgZXNkLWN1c3RvbS1ibG9jay1pZD0iODg1OTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZXMtaGVhZGVyLWJvZHkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q1Y2EzOyIgd2lkdGg9IjYwMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjM2Q1Y2EzIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLXN0cnVjdHVyZSBlcy1wMjB0IGVzLXAyMGIgZXMtcDIwciBlcy1wMjBsIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzNkNWNhMzsiIGJnY29sb3I9IiMzZDVjYTMiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtpZiBtc29dPjx0YWJsZSB3aWR0aD0iNTYwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPjx0cj48dGQgd2lkdGg9IjI3MCIgdmFsaWduPSJ0b3AiPjwhW2VuZGlmXS0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWxlZnQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlcy1tLXAyMGIgZXNkLWNvbnRhaW5lci1mcmFtZSIgd2lkdGg9IjI3MCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2staW1hZ2UgZXMtbS1wMGwgZXMtbS10eHQtYyIgYWxpZ249ImxlZnQiIHN0eWxlPSJmb250LXNpemU6MCI+PGEgaHJlZj0iIyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3Rsci5zdHJpcG9jZG4uZW1haWwvY29udGVudC9ndWlkcy9DQUJJTkVUXzY2NDk4ZWEwNzZiNWQwMGM2Zjk1NTMwNTVhY2RiMzdhL2ltYWdlcy8xMjA1MTUyNzU5MDY5MTg0MS5wbmciIGFsdCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IiB3aWR0aD0iMTgzIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1yaWdodCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0icmlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIiB3aWR0aD0iMjcwIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1idXR0b24gZXMtcDEwdCBlcy1tLXR4dC1jIiBhbGlnbj0icmlnaHQiPjxzcGFuIGNsYXNzPSJlcy1idXR0b24tYm9yZGVyIj48YSBocmVmPSIjLyIgY2xhc3M9ImVzLWJ1dHRvbiIgdGFyZ2V0PSJfYmxhbmsiPlRyeSBmcmVlIGNsYXNzPC9hPjwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1jb250ZW50IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RyaXBlIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWNvbnRlbnQtYm9keSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7IiB3aWR0aD0iNjAwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNmYWZhZmEiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMHQgZXMtcDQwYiBlcy1wMjByIGVzLXAyMGwiIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSI1NjAiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDIwdCBlcy1wMTBiIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyBmb250LWZhbWlseTogbG9yYSwgZ2VvcmdpYSwgJ3RpbWVzIG5ldyByb21hbicsIHNlcmlmOyBmb250LXNpemU6IDUwcHg7Ij48ZW0+V2VsY29tZTwvZW0+PC9oMT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDEwdCBlcy1wMTBiIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyI+V2UncmUgaGFwcHkgdG8gaGF2ZSB5b3Ugd2l0aCB1cy48L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2stdGV4dCBlcy1wMjBiIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XZSB0ZWFjaCBjbGFzc2VzIGluIGV2ZXJ5dGhpbmcgZnJvbSBidXNpbmVzcyB0byBtZWRpY2luZS48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYS48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1jb250ZW50IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RyaXBlIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWNvbnRlbnQtYm9keSIgd2lkdGg9IjYwMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjZmZmZmZmIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLXN0cnVjdHVyZSBlcy1wMzB0IGVzLXA1YiBlcy1wMjByIGVzLXAyMGwiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyIgYmdjb2xvcj0iI2ZmZmZmZiIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSI1NjAiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6ICMzZDVjYTM7Ij5IZXJlJ3MgaG93IHRvIGdldCBzdGFydGVkOjwvaDM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLXN0cnVjdHVyZSBlcy1wMjB0IGVzLXAyMHIgZXMtcDIwbCIgZXNkLWN1c3RvbS1ibG9jay1pZD0iMTA2MTUiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1sZWZ0IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWNvbnRhaW5lci1mcmFtZSBlcy1tLXAyMGIiIGVzZC1jdXN0b20tYmxvY2staWQ9IjEwNjE2IiB3aWR0aD0iMjU1IiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1pbWFnZSBlcy1wMTV0IGVzLXA1YiIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTowIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2d1aWRzL0NBQklORVRfMTcyMjM2MTMwMTgwYjdhNGQ1ZTFkOTk4NzM2OWNhNjEvaW1hZ2VzLzQwMjgxNTI3Njc1NzUzNjYzLnBuZyIgYWx0PSJGaWxsIG91dCBhIHByb2ZpbGUiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIHRpdGxlPSJGaWxsIG91dCBhIHByb2ZpbGUiIHdpZHRoPSIzOSI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IGVzLXA1YiIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IHN0eWxlPSJjb2xvcjogIzMzMzMzMzsiPkZpbGwgb3V0IGEgcHJvZmlsZTwvaDQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3BhbiBjbGFzcz0icHJvZHVjdC1kZXNjcmlwdGlvbiI+UXVpcyBhdXRlbSB2ZWwgZXVtIGl1cmUgcmVwcmVoZW5kZXJpdCBxdWkgaW4gZWEgdm9sdXB0YXRlIHZlbGl0IGVzc2UgcXVhbSBuaWhpbCBtb2xlc3RpYWUgY29uc2VxdWF0dXIuPC9zcGFuPjxicj48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IGVzLXA1dCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IiMiPlJlYWQgbW9yZSDCuzwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLWhpZGRlbiIgd2lkdGg9IjEwIj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWxlZnQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iZXMtaGlkZGVuIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIGVzLW0tcDIwYiIgd2lkdGg9IjMwIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1pbWFnZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTowIj48YSB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2d1aWRzL0NBQklORVRfMTcyMjM2MTMwMTgwYjdhNGQ1ZTFkOTk4NzM2OWNhNjEvaW1hZ2VzLzQ3NTYxNTI3NjcyMzM1NTcyLnBuZyIgYWx0IHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIHdpZHRoPSIzMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZXMtcmlnaHQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249InJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWNvbnRhaW5lci1mcmFtZSBlcy1tLXAyMGIiIHdpZHRoPSIyNTUiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLWltYWdlIGVzLXAxNXQgZXMtcDViIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC1zaXplOjAiPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIjIj48aW1nIHNyYz0iaHR0cHM6Ly90bHIuc3RyaXBvY2RuLmVtYWlsL2NvbnRlbnQvZ3VpZHMvQ0FCSU5FVF8xNzIyMzYxMzAxODBiN2E0ZDVlMWQ5OTg3MzY5Y2E2MS9pbWFnZXMvNTM3MDE1Mjc2NzU2ODM5MTIucG5nIiBhbHQ9IlVzZSBwbGFubmluZyB0b29sIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IiB0aXRsZT0iVXNlIHBsYW5uaW5nIHRvb2wiIHdpZHRoPSIzOSI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IGVzLXA1YiIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IHN0eWxlPSJjb2xvcjogIzMzMzMzMzsiPlVzZSBwbGFubmluZyB0b29sPC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzcGFuIGNsYXNzPSJwcm9kdWN0LWRlc2NyaXB0aW9uIj5EdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci48L3NwYW4+PGJyPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iIyI+UmVhZCBtb3JlIMK7PC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMHIgZXMtcDIwbCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSI1NjAiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXNwYWNlciIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTowIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjY2NjYzsgYmFja2dyb3VuZDpub25lOyBoZWlnaHQ6MXB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MHB4IDBweCAwcHggMHB4OyI+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMGIgZXMtcDIwciBlcy1wMjBsIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZXMtbGVmdCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1jb250YWluZXItZnJhbWUgZXMtbS1wMjBiIiB3aWR0aD0iMjU1IiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1pbWFnZSBlcy1wMjV0IGVzLXA1YiIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTowIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2d1aWRzL0NBQklORVRfMTcyMjM2MTMwMTgwYjdhNGQ1ZTFkOTk4NzM2OWNhNjEvaW1hZ2VzLzkzOTgxNTI3Njc1NzU0ODAwLnBuZyIgYWx0PSJDaGFuZ2Ugc2V0dGluZ3MiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIHRpdGxlPSJDaGFuZ2Ugc2V0dGluZ3MiIHdpZHRoPSIzOSI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IGVzLXA1YiIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IHN0eWxlPSJjb2xvcjogIzMzMzMzMzsiPkNoYW5nZSBzZXR0aW5nczwvaDQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3BhbiBjbGFzcz0icHJvZHVjdC1kZXNjcmlwdGlvbiI+VW5rbm93biBwcmludGVyIHRvb2sgYSBnYWxsZXkgb2YgdHlwZSBhbmQgc2NyYW1ibGVkIGl0IHRvIG1ha2UgYSB0eXBlIHNwZWNpbWVuIGJvb2suPC9zcGFuPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iIyI+UmVhZCBtb3JlIMK7PC9hPjxicj48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLWhpZGRlbiIgd2lkdGg9IjEwIj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWxlZnQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iZXMtaGlkZGVuIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIGVzLW0tcDIwYiIgd2lkdGg9IjMwIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1pbWFnZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTowIj48YSB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2d1aWRzL0NBQklORVRfMTcyMjM2MTMwMTgwYjdhNGQ1ZTFkOTk4NzM2OWNhNjEvaW1hZ2VzLzQ3NTYxNTI3NjcyMzM1NTcyLnBuZyIgYWx0IHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIHdpZHRoPSIzMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZXMtcmlnaHQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249InJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWNvbnRhaW5lci1mcmFtZSIgd2lkdGg9IjI1NSIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2staW1hZ2UgZXMtcDI1dCBlcy1wNWIiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJmb250LXNpemU6MCI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IiMiPjxpbWcgc3JjPSJodHRwczovL3Rsci5zdHJpcG9jZG4uZW1haWwvY29udGVudC9ndWlkcy9DQUJJTkVUXzE3MjIzNjEzMDE4MGI3YTRkNWUxZDk5ODczNjljYTYxL2ltYWdlcy8zMzA4MTUyNzY3NTc1Mzc4Ny5wbmciIGFsdD0iSW52aXRlIGZyaWVuZHMiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIHRpdGxlPSJJbnZpdGUgZnJpZW5kcyIgd2lkdGg9IjM5Ij48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2stdGV4dCBlcy1wNXQgZXMtcDViIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyI+SW52aXRlIGZyaWVuZHM8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2stdGV4dCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9InByb2R1Y3QtZGVzY3JpcHRpb24iPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEuPC9zcGFuPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iIyI+UmVhZCBtb3JlIMK7PC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAxMHQgZXMtcDMwYiBlcy1wMjByIGVzLXAyMGwiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIiB3aWR0aD0iNTYwIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1idXR0b24iIGFsaWduPSJjZW50ZXIiPjxzcGFuIGNsYXNzPSJlcy1idXR0b24tYm9yZGVyIj48YSBocmVmPSIjLyIgY2xhc3M9ImVzLWJ1dHRvbiIgdGFyZ2V0PSJfYmxhbmsiPkxldCdzIGdldCBzdGFydGVkIMK7PC9hPjwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImVzLWNvbnRlbnQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RyaXBlIiBhbGlnbj0iY2VudGVyIiBlc2QtY3VzdG9tLWJsb2NrLWlkPSI4ODU5MSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1jb250ZW50LWJvZHkiIHdpZHRoPSI2MDAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI2ZmZmZmZiIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1zdHJ1Y3R1cmUgZXMtcDE1dCBlcy1wMTViIGVzLXAxMHIgZXMtcDEwbCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmN2MwNTI7IiBiZ2NvbG9yPSIjZjdjMDUyIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1baWYgbXNvXT48dGFibGUgd2lkdGg9IjU4MCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkIHdpZHRoPSIyMDAiIHZhbGlnbj0idG9wIj48IVtlbmRpZl0tLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1sZWZ0IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXMtbS1wMHIgZXMtbS1wMjBiIGVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSIxODAiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2staW1hZ2UgZXMtcDViIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC1zaXplOjAiPjxhIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly90bHIuc3RyaXBvY2RuLmVtYWlsL2NvbnRlbnQvZ3VpZHMvQ0FCSU5FVF82NjQ5OGVhMDc2YjVkMDBjNmY5NTUzMDU1YWNkYjM3YS9pbWFnZXMvMzk5MTE1Mjc1ODgyODgxNzEucG5nIiBhbHQgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyIgd2lkdGg9IjI0Ij48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2stdGV4dCBlcy1wNXIgZXMtcDVsIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTZweDsiPjE1MTMgR2FyZmllbGQgUGFyayBBdmUsIExlYmFub24sIE9IIDQ1MDM2PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlcy1oaWRkZW4iIHdpZHRoPSIyMCI+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1sZWZ0IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXMtbS1wMjBiIGVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSIxODAiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtYmxvY2staW1hZ2UgZXMtcDViIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC1zaXplOjAiPjxhIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly90bHIuc3RyaXBvY2RuLmVtYWlsL2NvbnRlbnQvZ3VpZHMvQ0FCSU5FVF82NjQ5OGVhMDc2YjVkMDBjNmY5NTUzMDU1YWNkYjM3YS9pbWFnZXMvMzU2ODE1Mjc1ODgzNTY0OTIucG5nIiBhbHQgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyIgd2lkdGg9IjI0Ij48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGVzZGV2LWxpbmtzLWNvbG9yPSIjZmZmZmZmIiBjbGFzcz0iZXNkLWJsb2NrLXRleHQiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsiPjxhIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMThweDsiIGhyZWY9Im1haWx0bzp5b3VyQG1haWwuY29tIj55b3VyQG1haWwuY29tPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZXMtcmlnaHQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249InJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWNvbnRhaW5lci1mcmFtZSIgd2lkdGg9IjE4MCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay1pbWFnZSBlcy1wNWIiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJmb250LXNpemU6MCI+PGEgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3Rsci5zdHJpcG9jZG4uZW1haWwvY29udGVudC9ndWlkcy9DQUJJTkVUXzY2NDk4ZWEwNzZiNWQwMGM2Zjk1NTMwNTVhY2RiMzdhL2ltYWdlcy81MDY4MTUyNzU4ODM1NzYxNi5wbmciIGFsdCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IiB3aWR0aD0iMjQiPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IiBhbGlnbj0iY2VudGVyIiBlc2QtbGlua3MtY29sb3I9IiNmZmZmZmYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxNnB4OyI+PGEgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGNvbG9yOiAjZmZmZmZmOyIgaHJlZj0idGVsOjEyMzQ1Njc4OSI+MTIzNDU2Nzg5PC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0iZXMtZm9vdGVyIGVzZC1mb290ZXItcG9wb3ZlciIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1zdHJpcGUiIGFsaWduPSJjZW50ZXIiIGVzZC1jdXN0b20tYmxvY2staWQ9Ijg4NTkyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLWZvb3Rlci1ib2R5IiB3aWR0aD0iNjAwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2Qtc3RydWN0dXJlIGVzLXAyMHQgZXMtcDEwciBlcy1wMTBsIiBhbGlnbj0ibGVmdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1baWYgbXNvXT48dGFibGUgd2lkdGg9IjU4MCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkIHdpZHRoPSIxOTAiIHZhbGlnbj0idG9wIj48IVtlbmRpZl0tLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJlcy1sZWZ0IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXMtbS1wMHIgZXMtbS1wMjBiIGVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSIxOTAiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXRleHQgZXMtcDV0IGVzLW0tdHh0LWMiIGVzZGV2LWxpbmtzLWNvbG9yPSIjNjY2NjY2IiBhbGlnbj0icmlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBzdHlsZT0iY29sb3I6ICM2NjY2NjY7Ij5Gb2xsb3cgdXM6PC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJyaWdodCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1jb250YWluZXItZnJhbWUiIHdpZHRoPSIzNzAiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLWJsb2NrLXNvY2lhbCBlcy1tLXR4dC1jIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImZvbnQtc2l6ZTowIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImVzLXRhYmxlLW5vdC1hZGFwdCBlcy1zb2NpYWwiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLXAxNXIiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj48aW1nIHRpdGxlPSJGYWNlYm9vayIgc3JjPSJodHRwczovL3Rsci5zdHJpcG9jZG4uZW1haWwvY29udGVudC9hc3NldHMvaW1nL3NvY2lhbC1pY29ucy9yb3VuZGVkLWdyYXkvZmFjZWJvb2stcm91bmRlZC1ncmF5LnBuZyIgYWx0PSJGYiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLXAxNXIiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj48aW1nIHRpdGxlPSJUd2l0dGVyIiBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2Fzc2V0cy9pbWcvc29jaWFsLWljb25zL3JvdW5kZWQtZ3JheS90d2l0dGVyLXJvdW5kZWQtZ3JheS5wbmciIGFsdD0iVHciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlcy1wMTVyIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY+PGltZyB0aXRsZT0iSW5zdGFncmFtIiBzcmM9Imh0dHBzOi8vdGxyLnN0cmlwb2Nkbi5lbWFpbC9jb250ZW50L2Fzc2V0cy9pbWcvc29jaWFsLWljb25zL3JvdW5kZWQtZ3JheS9pbnN0YWdyYW0tcm91bmRlZC1ncmF5LnBuZyIgYWx0PSJJbnN0IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXMtcDE1ciIgdmFsaWduPSJ0b3AiIGFsaWduPSJjZW50ZXIiPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPjxpbWcgdGl0bGU9IllvdXR1YmUiIHNyYz0iaHR0cHM6Ly90bHIuc3RyaXBvY2RuLmVtYWlsL2NvbnRlbnQvYXNzZXRzL2ltZy9zb2NpYWwtaWNvbnMvcm91bmRlZC1ncmF5L3lvdXR1YmUtcm91bmRlZC1ncmF5LnBuZyIgYWx0PSJZdCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLXAxNXIiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj48aW1nIHRpdGxlPSJMaW5rZWRpbiIgc3JjPSJodHRwczovL3Rsci5zdHJpcG9jZG4uZW1haWwvY29udGVudC9hc3NldHMvaW1nL3NvY2lhbC1pY29ucy9yb3VuZGVkLWdyYXkvbGlua2VkaW4tcm91bmRlZC1ncmF5LnBuZyIgYWx0PSJJbiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzLXAxMHIiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj48aW1nIHRpdGxlPSJQaW50ZXJlc3QiIHNyYz0iaHR0cHM6Ly90bHIuc3RyaXBvY2RuLmVtYWlsL2NvbnRlbnQvYXNzZXRzL2ltZy9zb2NpYWwtaWNvbnMvcm91bmRlZC1ncmF5L3BpbnRlcmVzdC1yb3VuZGVkLWdyYXkucG5nIiBhbHQ9IlAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXNkLXN0cnVjdHVyZSBlcy1wNXQgZXMtcDEwYiBlcy1wMTByIGVzLXAxMGwiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJlc2QtY29udGFpbmVyLWZyYW1lIiB3aWR0aD0iNTgwIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImVzZC1ibG9jay10ZXh0IGVzLXA1dCBlcy1wMTBiIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgc3R5bGU9ImNvbG9yOiAjNjY2NjY2OyI+Q29udGFjdCB1czogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9InRlbDoxMjM0NTY3ODkiPjEyMzQ1Njc4OTwvYT4gfCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ibWFpbHRvOnlvdXJAbWFpbC5jb20iPnlvdXJAbWFpbC5jb208L2E+PC9oNT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZXNkLWJsb2NrLXRleHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoaXMgZGFpbHkgbmV3c2xldHRlciB3YXMgc2VudCB0byA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ibWFpbHRvOmluZm9AbmFtZS5jb20iPmluZm9AZWR1LmNvbTwvYT4gZnJvbSBjb21wYW55IG5hbWUgYmVjYXVzZSB5b3Ugc3Vic2NyaWJlZC48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+SWYgeW91IHdvdWxkIG5vdCBsaWtlIHRvIHJlY2VpdmUgdGhpcyBlbWFpbCA8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InVuc3Vic2NyaWJlIiBocmVmPSI8JXVuc3ViJT4iPnVuc3Vic2NyaWJlIGhlcmU8L2E+LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgIDwvdGFibGU+DQogICAgPC9kaXY+DQo8L2JvZHk+DQoNCjwvaHRtbD4=\",\n \"utm\": {\n \"source\": \"thisissource\",\n \"campaign\": \"thisiscampaign\",\n \"medium\": \"thisismedium\",\n \"extra\": \"thisisextra\"\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://mail.useinsider.com/content/v1/campaign/create"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 18:36:52 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-content-type-options","value":"nosniff","enabled":true},{"key":"x-frame-options","value":"SAMEORIGIN","enabled":true},{"key":"x-xss-protection","value":"1; mode=block","enabled":true},{"key":"x-envoy-upstream-service-time","value":"1249","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=aakKG3TLSWUZUj3Gw2lpNfNL.8bIx0_ijR0pj7L6cp4-1685039812-0-ATTEBrZ+G4YRnTutHuEIbDXDz6cL0ZLwSt2VHPPVSQ79UO4gyQjBrcp1PvYBWOx3gjQxcHK1EyX3lNvTkcs+a3w=; path=/; expires=Thu, 25-May-23 19:06:52 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7ccfe2e21af3172d-IAD","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"id\": 1086764,\n \"message\": \"created\"\n}"}],"_postman_id":"bb5da9a3-0d88-4ffd-94d3-97a3f25fc84c"}],"id":"c309c175-51ba-45f9-b73c-2ce2a6167cf5","description":"

With these APIs, you can create single or experiment (A/B) email campaigns from your back-end, and trigger transacational emails based on a specific user action.

\n","_postman_id":"c309c175-51ba-45f9-b73c-2ce2a6167cf5"},{"name":"Web Push APIs","item":[{"name":"Create single web pushes","id":"5a479f5c-aa1e-4439-b42c-e775cb7f35a9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request. Navigate to Web Push > Settings > Integration Settings to get your API token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"100XXXXX\",\n \"title\": \"Title of campaign\",\n \"language\": \"tr_TR\",\n \"is_all\": false\n}"},"url":"https://web-push.api.useinsider.com/v1/single","description":"

Insider's web push API allows you to send single web push notifications from your own back-end without using Insider's InOne panel.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Content-Typeapplication/jsonThis header specifies the media type of the resource.
\n

Body Parameters

\n

Each request body requires a partner ID and a title. 

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
titleEvery request creates a push notification campaign on InOne with the push type Single Push. This is the title of the campaign. It cannot be more than 100 characters.StringYes
languageThe language of the campaign, e.g., en_US. If you want to send the push to all languages, you can write “all_ALL”.StringYes
is_allIt helps you set when you want to send push notifications to all subscribers or segmented subscribers.
If you type true, it will be sent only once, and you can open the campaign in the InOne Panel. If you type false, it will be sent multiple times, but you cannot open the campaign in the InOne Panel.
BooleanNo
\n

Sample Example

\n

Before sending the request, make sure:

\n\n

When you send the request, you will get your campaign_id as a response. You will use this campaign_id when launching the campaign.

\n

Sample Request

\n
curl --location --request POST 'https://web-push.api.useinsider.com/v1/single' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"100XXXXX\",\n  \"title\": \"Title of campaign\",\n  \"language\": \"tr_TR\",\n  \"is_all\": false\n}'\n\n
\n

Sample Responses

\n

201 CREATED

\n

You can see this kind of response when you successfully created your campaign.

\n
{\n    \"success\": true,\n    \"campaign_id\": 25696\n}\n\n
\n

You can also see your campaign in your InOne panel on the Web Push listing page as in Draft status, indicating that the campaign has been created but not launched yet.

\n

401 UNAUTHORIZED

\n
{\n\"message\": \"Unauthorized\"\n}\n\n
\n

424 FAILED DEPENDENCY

\n
{\n  \"message\": \"SERVICE:-\"\n}\n\n
\n

ERROR CODES

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","single"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5a479f5c-aa1e-4439-b42c-e775cb7f35a9"},{"name":"Launch single web pushes v1","id":"a5d1c158-72a0-4d88-8e39-b6e67f7ca869","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"100000001\",\n \"title\": \"title of push\",\n \"description\": \"description of push\",\n \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n \"link\": \"https://image.useinsider.com\",\n \"include_unengage\": true,\n \"ttl\": \"1000\"\n}"},"url":"https://web-push.api.useinsider.com/v1/single/campaign_id","description":"

Insider's web push API allows you to launch single web push notifications from your own back-end without using Insider's InOne panel.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Content-Typeapplication/jsonThis header specifies the media type of the resource.
\n

Body Parameters

\n

Each request body requires a partner ID and a title. 

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
titleEvery request creates a push notification campaign on InOne with the push type Single Push. This is the title of the push content. Itcannot be more than 100 characters.StringYes
descriptionThis is the body of your push notification. It cannot be more than 255 characters. If it is a rich push that has a banner, it is limited to 30 characters.StringYes
imageThis is the push notification icon. Only HTTPS protocols are accepted. If not provided, the default icon is used instead.StringYes
bannerThis is the rich push notification image. Only HTTPS protocols are accepted.StringNo
linkThe link of the Web push message.StringYes
include_unengagedEnables you to decide whether the bulk push should target unengaged tokens. When not sent in the payload, unengaged users are automatically excluded.Boolean (true/false)No
ttlShort for time to live: This is the maximum time the system will try to send a push notification to an offline or temporarily unavailable user. TTL is limited to 240 hours.StringYes
targetTargeting options for the campaign (segmenting).ObjectYes if is_all: false
attributeThe attribute used for targeting, e.g. \"d_wp_browser\".StringYes if target is used.
valuesAn array of values to target, e.g. [\"Edg\"]ArrayYes if target is used.
\n

Sample Example

\n

Before sending the request, make sure:

\n\n

When you send the request to create it, you will get your campaign_id as a response.

\n

Sample Request

\n

Below you can see a sample request without segments; is_all: true.

\n
curl --location --request POST 'https://web-push.api.useinsider.com/v1/single/campaign_id' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"100000001\",\n  \"title\": \"title of push\",\n  \"description\": \"description of push\",\n  \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"link\": \"https://image.useinsider.com\",\n  \"include_unengage\": true,\n  \"ttl\": \"1000\"\n}'\n\n
\n

Below you can see a sample request with segments; is_all: false.

\n
curl --location --request POST 'https://web-push.api.useinsider.com/v1/single/campaign_id' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"10000001\",\n  \"title\": \"title of push\",\n  \"description\": \"description of push\",\n  \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"link\": \"https://image.useinsider.com\",\n  \"include_unengage\": true,\n  \"ttl\": \"1000\",\n  \"language\": \"en_US\",\n  \"target\": {\n    \"attribute\": \"d_wp_browser\",\n    \"values\": [\"Edg\"]\n  }\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

You can see this kind of response when you successfully launched your campaign.

\n
{\n  \"success\": true,\n  \"campaign_id\": 1697300275\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n\"message\": \"Unauthorized\"\n}\n\n
\n

424 FAILED DEPENDENCY

\n
{\n  \"message\": \"SERVICE:-\"\n}\n\n
\n

ERROR CODES

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","single","campaign_id"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a5d1c158-72a0-4d88-8e39-b6e67f7ca869"},{"name":"Launch single web pushes v2","id":"ca21aa71-8210-4b0e-b143-139624123037","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"100000001\",\n \"title\": \"title of push\",\n \"description\": \"description of push\",\n \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n \"link\": \"https://image.useinsider.com\",\n \"include_unengage\": true,\n \"ttl\": \"1000\"\n}"},"url":"https://web-push.api.useinsider.com/v2/single/campaign_id","description":"

Insider's web push API allows you to launch single web push notifications from your own back-end without using Insider's InOne panel.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Content-Typeapplication/jsonThis header specifies the media type of the resource.
\n

Body Parameters

\n

Each request body requires a partner ID and a title.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
titleEvery request creates a push notification campaign on InOne with the push type Single Push. This is the title of the push content. Itcannot be more than 100 characters.StringYes
descriptionThis is the body of your push notification. It cannot be more than 255 characters. If it is a rich push that has a banner, it is limited to 30 characters.StringYes
imageThis is the push notification icon. Only HTTPS protocols are accepted. If not provided, the default icon is used instead.StringYes
bannerThis is the rich push notification image. Only HTTPS protocols are accepted.StringNo
linkThe link of the Web push message.StringYes
include_unengagedEnables you to decide whether the bulk push should target unengaged tokens. When not sent in the payload, unengaged users are automatically excluded.Boolean (true/false)No
ttlShort for time to live: This is the maximum time the system will try to send a push notification to an offline or temporarily unavailable user. TTL is limited to 240 hours.StringYes
targetTargeting options for the campaign (segmenting).ObjectYes if is_all: false
attributeThe attribute used for targeting, e.g. \"d_wp_browser\".StringYes if target is used.
valuesAn array of values to target, e.g. [\"Edg\"]ArrayYes if target is used.
\n

Sample Example

\n

Before sending the request, make sure:

\n\n

When you send the request to create it, you will get your campaign_id as a response.

\n

Sample Request

\n

Below you can see a sample request without segments; is_all: true.

\n
curl --location --request POST 'https://web-push.api.useinsider.com/v2/single/campaign_id' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"100000001\",\n  \"title\": \"title of push\",\n  \"description\": \"description of push\",\n  \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"link\": \"https://image.useinsider.com\",\n  \"include_unengage\": true,\n  \"ttl\": \"1000\"\n}'\n\n
\n

Below you can see a sample request with segments; is_all: false.

\n
curl --location --request POST 'https://web-push.api.useinsider.com/v2/single/campaign_id' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"10000001\",\n  \"title\": \"title of push\",\n  \"description\": \"description of push\",\n  \"image\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"banner\": \"https://image.useinsider.com/mywebsite/webPushDefaultImage/JpVu9aBXgTXmcrBkiZLB1512577074.jpeg\",\n  \"link\": \"https://image.useinsider.com\",\n  \"include_unengage\": true,\n  \"ttl\": \"1000\",\n  \"language\": \"en_US\",\n  \"target\": {\n    \"attribute\": \"d_wp_browser\",\n    \"values\": [\"Edg\"]\n  }\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

You can see this kind of response when you successfully launched your campaign.

\n
{\n  \"success\": true,\n  \"campaign_id\": 1697300275\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n\"message\": \"Unauthorized\"\n}\n\n
\n

424 FAILED DEPENDENCY

\n
{\n  \"message\": \"SERVICE:-\"\n}\n\n
\n

ERROR CODES

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v2","single","campaign_id"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ca21aa71-8210-4b0e-b143-139624123037"},{"name":"Delete single web pushes","id":"43d5382e-ff86-414f-8881-f2f4b189ff7a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"100000001\",\n}"},"url":"https://web-push.api.useinsider.com/v1/single/campaign_id","description":"

Insider's web push API allows you to delete single web push notifications from your own back-end without using Insider's InOne panel.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
Content-Typeapplication/jsonThis header specifies the media type of the resource.
\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
\n

Sample Example

\n

Before sending the request, make sure:

\n\n

When you send the request to create it, you will get your campaign_id as a response.

\n

Sample Request

\n
curl --location --request DELETE 'https://web-push.api.useinsider.com/v1/single/campaign_id' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data-raw '{\n  \"partner_id\": \"100000001\",\n}'\n\n
\n

Sample Responses

\n

200 OK

\n

You can see this kind of response when you successfully deleted your campaign.

\n
{\n  \"success\": true,\n  \"campaign_id\": 1697300275\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n\"message\": \"Unauthorized\"\n}\n\n
\n

424 FAILED DEPENDENCY

\n
{\n  \"message\": \"SERVICE:-\"\n}\n\n
\n

ERROR CODES

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","single","campaign_id"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"43d5382e-ff86-414f-8881-f2f4b189ff7a"}],"id":"a29fc27e-dbc7-4f07-942c-3f53588b7220","description":"

Insider's Web Push API allows you to send push notifications that are triggered from your own systems without using the Insider's panel to a single user or a specific set of users. The data is used from your own back-end including transactional data, flight information, stock fluctuations and more.

\n

With Web Push API, you can:

\n\n","_postman_id":"a29fc27e-dbc7-4f07-942c-3f53588b7220"},{"name":"Mobile App APIs","item":[{"name":"Live Activities","item":[{"name":"/register live activities","id":"9b80459a-2df8-4086-b9d5-cd29aaa7777e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_type\": \"OrderTrackingAttributes\",\n \"insider_ids\": [\n \"user-123\",\n \"user-456\",\n \"user-789\"\n ],\n \"ends_at\": \"2026-05-20T14:30:00Z\"\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.comapi/v1/live-activity/register","description":"

This request registers a group of insider_ids for a given activity_type on Insider One's end in advance. The activity has not started yet. This step:

\n\n

The actual start happens later via /start.

\n
\n

If you want to prepare an activity for \"when the time approaches,\" call /register in advance (e.g., 30 minutes before a match begins) and call /start at the exact start moment. This way the pushes go out smoothly right at the actual start.

\n
\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_typeMust be exactly (case-sensitive) the same as the ActivityAttributes Swift class name in the iOS application.StringYes
insider_idsTarget user IDs. Must contain between 1 and 10,000 elements.String[]Yes
ends_atMaximum end time of the activity. Must be in the future, between ≥ 5 minutes and ≤ 7 days from now.RFC3339 timestampYes
\n
\n

The insider_ids upper bound is config-driven (REGISTER_MAX_INSIDER_IDS, default 10,000). Split larger segments across multiple /register calls. Each returns its own activity_id.

\n

Body examples

\n

The examples below align with Insider One’s demo app and can be used directly with the 3 ActivityAttributes classes available in the Insider iOS SDK demo app.

\n

Order delivery tracking

\n
{\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"insider_ids\": [\"user-123\", \"user-456\"],\n  \"ends_at\": \"2026-05-19T10:00:00Z\"\n}\n\n
\n

Workout tracking

\n
{\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"insider_ids\": [\"user-789\"],\n  \"ends_at\": \"2026-05-18T20:00:00Z\"\n}\n\n
\n

Live match score

\n
{\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"insider_ids\": [\"user-100\", \"user-101\", \"user-102\"],\n  \"ends_at\": \"2026-05-18T23:00:00Z\"\n}\n\n
\n

The activity_type values must exactly match the Swift class names in the iOS application.

\n

Sample responses

\n

Success response 200

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"matched\": 950,\n  \"added\": 800,\n  \"refreshed\": 150,\n  \"removed\": 5,\n  \"skipped\": {\n    \"push_permission_disabled\": 30,\n    \"unsupported_platform\": 15,\n    \"unsupported_os_version\": 5,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  }\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
activity_idStringUUID v4 generated by Insider. Used in all subsequent calls. Store this ID.
matchedIntThe number of unique eligible insiders (= added + refreshed)
addedIntThe number of newly added devices
refreshedIntThe number of previously registered devices whose metadata was refreshed (e.g., the same insider_id is registered twice)
removedIntDevices that used to be eligible but no longer are (e.g., user opted out of push, old devices removed)
skippedObjectDistribution of devices filtered out by eligibility checks, by reason
\n

Below are the fields in the skipped field.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldFilter reason
push_permission_disabledUser did not opt in to push, or the device has push disabled.
unsupported_platformNon-iOS device (Android, web, etc.)
unsupported_os_versioniOS < 17.2
push_to_start_token_missingThe device has not yet produced a push-to-start token for this activity_type (SDK collection not completed)
user_not_foundNo profile found on Insider One's end for this insider_id
\n

Partial response examples

\n

Plain success (all eligible)

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 100,\n  \"added\": 100,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": {\n    \"push_permission_disabled\": 0,\n    \"unsupported_platform\": 0,\n    \"unsupported_os_version\": 0,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  }\n}\n\n
\n

Success with skipped

\n

Some insiders are filtered out; the activity is still created.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 720,\n  \"added\": 720,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": {\n    \"push_permission_disabled\": 180,\n    \"unsupported_platform\": 60,\n    \"unsupported_os_version\": 35,\n    \"push_to_start_token_missing\": 5,\n    \"user_not_found\": 0\n  }\n}\n\n
\n

Success with GDPR Denied

\n

Insiders who haven't given GDPR consent are both counted and listed in a separate block.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 945,\n  \"added\": 945,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": {\n    \"push_permission_disabled\": 0,\n    \"unsupported_platform\": 0,\n    \"unsupported_os_version\": 0,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  },\n  \"gdpr_denied_details\": [\n    {\"insider_id\": \"user-12\", \"devices_count\": 2},\n    {\"insider_id\": \"user-77\", \"devices_count\": 1}\n  ]\n}\n\n
\n

Insiders with a missing GDPR field are treated as consenting. Only those with GDPR=false appear in this list.

\n

Partial result on large segments

\n

For very large segments, some profile lookups on Insider One's end may fail transiently. In that case, the response is partially successful.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 850,\n  \"added\": 850,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": { ... },\n  \"partial\": true,\n  \"unprocessed_insider_id_count\": 50\n}\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldMeaning
partialIf true, the response is partial.
unprocessed_insider_id_countThe number of insiders that could not be processed in this call
\n
\n

<p >When you receive partial: true, identify the unprocessed insiders and retry them with a separate /register; the activity is still valid and you can send pushes to the successful devices.</p>

\n
\n

All filtered → 422 NO_ELIGIBLE_DEVICE

\n

If no eligible device remains, the response is 422, and the body contains the filter breakdown.

\n
{\n  \"error\": \"no eligible device found for the given insider_ids\",\n  \"code\": \"NO_ELIGIBLE_DEVICE\",\n  \"skipped\": {\n    \"push_permission_disabled\": 35,\n    \"unsupported_platform\": 10,\n    \"unsupported_os_version\": 5,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  },\n  \"gdpr_denied_details\": [\n    {\"insider_id\": \"user-A\", \"devices_count\": 1},\n    {\"insider_id\": \"user-B\", \"devices_count\": 1}\n  ]\n}\n\n
\n

You can see why they were filtered out and adjust your segment.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["v1","live-activity","register"],"host":["live-activity","api","useinsider","comapi"],"query":[],"variable":[]}},"response":[],"_postman_id":"9b80459a-2df8-4086-b9d5-cd29aaa7777e"},{"name":"/start live activities","id":"2532d72f-44e5-4908-80c7-e2aaeff9bbf8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"activity_type\": \"OrderTrackingAttributes\",\n \"content\": {\n \"title\": \"Your order is being prepared\",\n \"message\": \"Estimated delivery: 14:30\",\n \"content_state\": {\n \"status\": \"preparing\",\n \"eta\": \"2026-05-20T14:30:00Z\"\n }\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.com/api/v1/live-activity/start","description":"

This request actually starts an activity that was prepared via /register.

\n\n

Insider One acts as a proxy for the content: all values in the content field are passed directly into the Apple push payload.

\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_idThe ID returned by /registerStringYes
activity_typeSame as in register; iOS ActivityAttributes class nameStringYes
contentLive activity contentObjectYes
titleLive activity titleStringYes
messageLive activity body/secondary messageStringYes
content_stateKey/value map that exactly matches the ContentState struct in the iOS applicationObjectYes
attributesOptional APNS attributes (advanced usage)ObjectNo
target_devicesIf left empty, broadcasts to all eligible devices in the segmentArrayNo
insider_idInsider IDStringYes
udidUnique device IDStringYes
\n
\n

Sample body

\n

Below is a sample request body.

\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"OrderTrackingAttributes\",\n  \"content\": {\n    \"title\": \"Your order is being prepared\",\n    \"message\": \"Estimated delivery: 14:30\",\n    \"content_state\": {\n      \"status\": \"preparing\",\n      \"eta\": \"2026-05-20T14:30:00Z\"\n    }\n  }\n}\n\n
\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"OrderTrackingAttributes\",\n  \"content\": {...},\n  \"target_devices\": [\n    {\n      \"insider_id\": \"user-123\",\n      \"udid\": \"abc-device-1\"\n    },\n    {\n      \"insider_id\": \"user-456\",\n      \"udid\": \"def-device-2\"\n    }\n  ]\n}\n\n
\n

Body examples

\n

Below are /start body examples for the 3 activities in the SDK demo app. All enum cases and content_state field names match the iOS classes exactly.

\n

Order is being prepared

\n
{\n  \"activity_id\": \"<activity_id from register response>\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"content\": {\n    \"title\": \"Your order is being prepared\",\n    \"message\": \"Courier on the way — will pick up shortly\",\n    \"content_state\": {\n      \"status\": \"pickup\",\n      \"etaMinutes\": 45\n    },\n    \"attributes\": {\n      \"courierName\": \"John D.\"\n    }\n  }\n}\n\n
\n

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/start-order-activity\" (1).png=\"\" width=\"130\" height=\"238\">

\n

Workout warmup phase

\n
{\n  \"activity_id\": \"<activity_id from register response>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"title\": \"Workout started\",\n    \"message\": \"Running · warmup phase\",\n    \"content_state\": {\n      \"phase\": \"warmup\",\n      \"elapsedSeconds\": 0,\n      \"calories\": 0\n    },\n    \"attributes\": {\n      \"workoutType\": \"Running\"\n    }\n  }\n}\n\n
\n\n\n

The match's first half kicked off

\n
{\n  \"activity_id\": \"<activity_id from register response>\",\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"content\": {\n    \"title\": \"Match started\",\n    \"message\": \"Home FC 0 - 0 Away FC\",\n    \"content_state\": {\n      \"homeScore\": 0,\n      \"awayScore\": 0,\n      \"period\": \"first_half\",\n      \"minute\": 1\n    },\n    \"attributes\": {\n      \"homeTeam\": \"Home FC\",\n      \"awayTeam\": \"Away FC\"\n    }\n  }\n}\n\n
\n\n\n

Critical rules

\n

Idempotency: A second /start is rejected

\n

A second /start call for the same activity_id unconditionally returns 409 ALREADY_STARTED. Even if the first call hit a network error or timeout, the activity is considered \"locked\" on the server side.

\n
{\n  \"error\": \"activity already started\",\n  \"code\": \"ALREADY_STARTED\"\n}\n\n
\n
\n

<p >Do not retry /start after a timeout. The activity may already be locked. To restart the same segment, call /end first, then run a fresh /register + /start flow.</p>

\n
\n

Proxy behavior

\n

Content responsibility lies with the customer. Insider One passes the values inside the content as-is to the Apple push payload:

\n\n

Insider is not liable for any user-experience issues caused by wrong, missing, or inappropriate content.

\n

content_state enum matching

\n

All values inside content_state must be compatible with the ContentState struct in the iOS application. In particular for enum-typed fields:

\n\n

iOS side example

\n
enum OrderStatus: String, Codable {\n    case preparing\n    case onTheWay\n    case delivered\n}\n\n
\n

Correct on the API side

\n
{ \"status\": \"onTheWay\" }\n\n
\n

Wrong (device crash or silent failure)

\n
{ \"status\": \"on_the_way\" }\n{ \"status\": \"ontheway\" }\n{ \"status\": \"OnTheWay\" }\n\n
\n

Must be registered first

\n

If the activity is not present on Insider's side at the time of /start (not registered or already ended), 404 NOT_FOUND is returned. The flow must run in the correct order:

\n

/register → get activity_id → /start

\n

Sample responses

\n

Success response 200

\n
{\n  \"status\": \"success\",\n  \"sessions_triggered\": 850\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
sessions_triggeredIntThe number of push messages published to Apple (= number of devices notified)
\n

sessions_triggered indicates the push has been handed off to Apple.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["api","v1","live-activity","start"],"host":["live-activity","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2532d72f-44e5-4908-80c7-e2aaeff9bbf8"},{"name":"/update live activities","id":"4e2347f0-c07e-43b7-b6f9-3610bf8b731f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"activity_type\": \"OrderTrackingAttributes\",\n \"content\": {\n \"title\": \"Your order is being prepared\",\n \"message\": \"Estimated delivery: 14:30\",\n \"content_state\": {\n \"status\": \"preparing\",\n \"eta\": \"2026-05-20T14:30:00Z\"\n }\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.com/api/v1/live-activity/update","description":"

This request updates the content of an activity that was started via /start.

\n\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_idThe ID returned by /registerStringYes
activity_typeSame as in register; iOS ActivityAttributes class nameStringYes
contentLive activity contentObjectYes
titleLive activity titleStringYes
messageLive activity body/secondary messageStringYes
content_stateKey/value map that exactly matches the ContentState struct in the iOS applicationObjectYes
\n
\n

Sample body

\n

Below is a sample request body.

\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"OrderTrackingAttributes\",\n  \"content\": {\n    \"title\": \"Your order is being prepared\",\n    \"message\": \"Estimated delivery: 14:30\",\n    \"content_state\": {\n      \"status\": \"preparing\",\n      \"eta\": \"2026-05-20T14:30:00Z\"\n    }\n  }\n}\n\n
\n

Body examples

\n

/update body examples are for the three activities in the SDK demo app. The attributes block is often omitted on /update calls. A content_state change is sufficient.

\n

Delivery stage transitions

\n
// Courier set off\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"status\": \"in_transit\", \"etaMinutes\": 30 }\n  }\n}\n\n
\n
// Out for delivery\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"status\": \"out_for_delivery\", \"etaMinutes\": 10 }\n  }\n}\n\n
\n
// Almost at your door\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"status\": \"out_for_delivery\", \"etaMinutes\": 1 }\n  }\n}\n\n
\n

Workout phase transitions

\n
// Warmup → active\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"phase\": \"active\", \"elapsedSeconds\": 600, \"calories\": 80 }\n  }\n}\n\n
\n
// Active → paused\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"phase\": \"paused\", \"elapsedSeconds\": 900, \"calories\": 120 }\n  }\n}\n\n
\n
// Paused → active again\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"phase\": \"active\", \"elapsedSeconds\": 1200, \"calories\": 170 }\n  }\n}\n\n
\n
// Cooldown\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"phase\": \"cooldown\", \"elapsedSeconds\": 1650, \"calories\": 230 }\n  }\n}\n\n
\n

Match’s score/period changes

\n
// 1-0 (35th minute)\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"homeScore\": 1, \"awayScore\": 0, \"period\": \"first_half\", \"minute\": 35 }\n  }\n}\n\n
\n
// Half time\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"homeScore\": 1, \"awayScore\": 0, \"period\": \"half_time\", \"minute\": 45 }\n  }\n}\n\n
\n
// 2-1 (70th minute)\n{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"content\": {\n    \"content_state\": { \"homeScore\": 2, \"awayScore\": 1, \"period\": \"second_half\", \"minute\": 70 }\n  }\n}\n\n
\n

Every time /update is called, the live activity is re-rendered on the device.

\n

If any field or enum value inside content_state does not match the ContentState schema in the iOS application, Apple's decoder on the device cannot update the existing activity, and the activity remains stuck in a loading state. For example, the field name might be misspelled, an enum case might be botched in camelCase/snake_case conversion, or a type might not match.

\n

Insider One does not detect this situation. Your API call still returns 200 OK, and the sessions_triggered counter increases, but the activity does not update on the device. The error only surfaces on the device, visually to the user.

\n

Mitigations:

\n\n

Critical rules

\n

SDK sync gate

\n

After the push is sent with /start, the live activity opens on the device, and Apple produces a new push token for that activity. The Insider SDK synchronizes this token in the background. Until this rotation completes, /update messages cannot reach the device.

\n

Behavior is as follows:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SituationResult
All target devices are synced.Pushes go to all of them. 200 OK, skipped_not_synced is not returned.
Some are synced, some are not.Pushes go to the synced ones. 200 OK + skipped_not_synced: N
All target devices are unsynced.412 PUSH_TOKEN_NOT_SYNCED. No push is sent.
\n
// All targets unsynced\n{\n  \"error\": \"push tokens are not synced yet\",\n  \"code\": \"PUSH_TOKEN_NOT_SYNCED\"\n}\n\n
\n

Timing of /update after /start: Do not send /update immediately after /start. Apple's token rotation and the SDK's sync can take several seconds. Typical buffer 2-5 seconds, but it can be longer on backgrounded devices.

\n

Unlimited updates

\n

There is no upper bound on /update calls for the same activity_id (apart from rate limits). As long as the activity remains in STARTED state (i.e., until /end is called), you can send as many updates as you like.

\n

Content responsibility

\n

Same rules as /start apply.

\n\n

The activity keeps living

\n

/update does not end the activity. The state remains STARTED; the activity_id is unchanged; the record on Insider One's end is not deleted. To end the activity, call /end.

\n

Update on a non-started activity

\n

Sending /update to an activity that was /register-ed but not yet /start-ed is not a 404. The activity exists on Insider One's end. However, because no live activity has been opened on the devices yet, the push does not reach them: targets that have not become visible on-device are counted in skipped_not_synced; if all are in this state, 412 PUSH_TOKEN_NOT_SYNCED is returned.

\n

Correct flow: /start first, then /update. Trying /update without /start is meaningless.

\n

Sample responses

\n

Success response 200

\n
{\n  \"status\": \"success\",\n  \"sessions_triggered\": 845,\n  \"skipped_not_synced\": 5\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
sessions_triggeredIntThe number of push messages published to Apple (= number of devices notified)
skipped_not_syncedInt (omitempty)Number of devices skipped because the SDK has not yet synced the token. Only returned when > 0.
\n

sessions_triggered indicates the push has been handed off to Apple.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["api","v1","live-activity","update"],"host":["live-activity","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4e2347f0-c07e-43b7-b6f9-3610bf8b731f"},{"name":"/end live activities","id":"6a3696fe-d59b-4003-9ed4-4eb862adf1dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"b","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"activity_type\": \"OrderTrackingAttributes\",\n \"content\": {\n \"title\": \"Delivered ✓\",\n \"message\": \"Your order has been delivered successfully.\",\n \"content_state\": {\n \"status\": \"delivered\",\n \"deliveredAt\": \"2026-05-20T14:32:00Z\"\n }\n }\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.com/api/v1/live-activity/end","description":"

This request ends an activity started via /start.

\n\n

/end does not physically remove the activity from the device. Insider One only delivers the final content and clears its own state. The activity on the device disappears according to Apple's stale-after/dismissal-date rules, or when the user manually swipes it away.

\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_idThe ID returned by /registerStringYes
activity_typeSame as in register; iOS ActivityAttributes class nameStringYes
contentLive activity contentObjectYes
titleLive activity titleStringYes
messageLive activity body/secondary messageStringYes
content_stateKey/value map that exactly matches the ContentState struct in the iOS applicationObjectYes
\n
\n

Sample body

\n

Below is a sample request body.

\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"OrderTrackingAttributes\",\n  \"content\": {\n    \"title\": \"Delivered ✓\",\n    \"message\": \"Your order has been delivered successfully.\",\n    \"content_state\": {\n      \"status\": \"delivered\",\n      \"deliveredAt\": \"2026-05-20T14:32:00Z\"\n    }\n  }\n}\n\n
\n

Body examples

\n

Since /end is the final push, content represents the final state; the attributes block may be resent as well.

\n

Delivery delivered

\n
{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"content\": {\n    \"title\": \"Order delivered\",\n    \"message\": \"Enjoy!\",\n    \"content_state\": {\n      \"status\": \"delivered\",\n      \"etaMinutes\": 0\n    },\n    \"attributes\": {\n      \"courierName\": \"Yusuf K.\"\n    }\n  }\n}\n\n
\n

Workout finished

\n
{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"WorkoutActivityAttributes\",\n  \"content\": {\n    \"title\": \"Workout completed\",\n    \"message\": \"30 min · 250 kcal\",\n    \"content_state\": {\n      \"phase\": \"finished\",\n      \"elapsedSeconds\": 1800,\n      \"calories\": 250\n    },\n    \"attributes\": {\n      \"workoutType\": \"Running\"\n    }\n  }\n}\n\n
\n

Match ended

\n
{\n  \"activity_id\": \"<activity_id>\",\n  \"activity_type\": \"MatchActivityAttributes\",\n  \"content\": {\n    \"title\": \"Match ended\",\n    \"message\": \"Home FC 2 - 1 Away FC\",\n    \"content_state\": {\n      \"homeScore\": 2,\n      \"awayScore\": 1,\n      \"period\": \"full_time\",\n      \"minute\": 90\n    },\n    \"attributes\": {\n      \"homeTeam\": \"Home FC\",\n      \"awayTeam\": \"Away FC\"\n    }\n  }\n}\n\n
\n

The /end call sends the final push; the device shows this message until the stale-after period expires or the user dismisses it.

\n

Critical rules

\n

Irreversible: dead state

\n

After /end is called successfully:

\n\n

You cannot resurrect the activity. To start fresh, create a new activity with /register.

\n
// Response of a second /end call\n{\n  \"error\": \"activity not found\",\n  \"code\": \"NOT_FOUND\"\n}\n\n
\n

Not physically removed from the device

\n

The /end call only delivers the final content to the device. On the device, the live activity:

\n\n
\n

<p >The content you send with /end should represent the final state (\"Completed\", \"Finished\", \"Cancelled\"). This is the last view the user sees until they dismiss the activity.</p>

\n
\n

SDK sync gate still applies

\n

Like /update, /end sends pushes only to synced devices:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SituationBehavior
All target devices are synced.Final push goes to all of them: 200 OK
Some are synced, some are not.Pushes go to the synced ones. 200 OK + skipped_not_synced: N. The activity is still deleted.
All target devices are unsynced.412 PUSH_TOKEN_NOT_SYNCED: No push is sent, the activity is not deleted.
\n

If you receive 412 PUSH_TOKEN_NOT_SYNCED, the activity is still alive. Wait a short while and retry, or accept that the devices are offline and let the ends_at TTL force-close it.

\n

Content responsibility

\n

Like /start and /update, /end is a proxy:

\n\n

Sample responses

\n

Success response 200

\n
{\n  \"status\": \"success\",\n  \"sessions_triggered\": 845,\n  \"skipped_not_synced\": 5\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
sessions_triggeredIntThe number of final push messages delivered to Apple
skipped_not_syncedInt (omitempty)The number of devices that did not receive the final message because their token had not synced
\n

After the response arrives, the activity is deleted on Insider One's end. A second /end call returns 404; this is expected behavior.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["api","v1","live-activity","end"],"host":["live-activity","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6a3696fe-d59b-4003-9ed4-4eb862adf1dc"},{"name":"/add-users","id":"2aebdaeb-2334-41fe-9522-b28af6d7eb86","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"activity_type\": \"DeliveryActivityAttributes\",\n \"insider_ids\": [\n \"user-901\",\n \"user-902\",\n \"user-903\"\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.com/api/v1/live-activity/add-users","description":"

This request adds new insider_ids to the segment of an activity previously created with /register:

\n\n

ends_at is not part of the request. The activity TTL was fixed at /register time, and /add-users does not touch it.

\n

This endpoint can be used only while the activity is in REGISTERED state. Once /start is called the segment is frozen and any /add-users call is rejected with 409 ALREADY_STARTED.

\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_idThe ID returned by /registerStringYes
activity_typeMust be exactly (case-sensitive) the same as the ActivityAttributes Swift class name in the iOS application.StringYes
insider_idsTarget user IDs. Must contain between 1 and 10,000 elements.String[]Yes
\n
\n

The insider_ids upper bound is config-driven (REGISTER_MAX_INSIDER_IDS, default 10,000).

\n

Sample body

\n

Below is a sample body for a request.

\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"insider_ids\": [\n    \"user-901\",\n    \"user-902\",\n    \"user-903\"\n  ]\n}\n\n
\n

Below is a typical usage:

\n

T − 1 hour: /register is called for customers with active orders (Delivery activity_type). The activity is in the REGISTERED state.

\n

T − 30 min + 5 min: Freed stock is assigned to a new order → the partner calls POST /add-users and the new customer's insider_id is added to the segment.

\n

T + 0: The partner calls /start → the new customer receives the \"Your order is being prepared\" push together with the rest.

\n

Sample responses

\n

Success response 200

\n

/add-users uses the same schema as /register. The counters reflect only the insider_ids submitted in this call (not the full activity segment).

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"matched\": 3,\n  \"added\": 3,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": {\n    \"push_permission_disabled\": 0,\n    \"unsupported_platform\": 0,\n    \"unsupported_os_version\": 0,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  }\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
activity_idStringEcho for the customer to correlate the response with the request
matchedIntThe number of unique eligible insiders (= added + refreshed)
addedIntThe number of newly added devices
refreshedIntThe number of previously registered devices whose metadata was refreshed
removedIntDevices that used to be eligible but no longer are
skippedObjectDistribution of devices filtered out by eligibility checks, by reason
\n

Partial response

\n

Like /register, /add-users can return a partial response if a portion of the profile lookup on large segments fails transiently.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 950,\n  \"added\": 950,\n  \"refreshed\": 0,\n  \"removed\": 0,\n  \"skipped\": { ... },\n  \"partial\": true,\n  \"unprocessed_insider_id_count\": 50\n}\n\n
\n

GDPR-filtered insiders may still appear in the gdpr_denied_details field.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["api","v1","live-activity","add-users"],"host":["live-activity","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2aebdaeb-2334-41fe-9522-b28af6d7eb86"},{"name":"/remove-users","id":"9a828839-3b23-4876-91c0-06e4efbcf5ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Api-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"activity_type\": \"DeliveryActivityAttributes\",\n \"insider_ids\": [\n \"user-12\",\n \"user-77\"\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://live-activity.api.useinsider.com/api/v1/live-activity/remove-users","description":"

This request bulk-removes the devices matching the given insider_ids from the segment of an activity previously created with /register:

\n\n

Unlike /add-users, /remove-users does not perform any eligibility filtering or profile lookup; it only deletes from the segment. Therefore, the partial, gdpr_denied_details, and unprocessed_insider_id_count fields never appear in the response.

\n

This endpoint can be used only while the activity is in REGISTERED state. Once /start is called the segment is frozen and any /remove-users call is rejected with 409 ALREADY_STARTED.

\n

Body parameters

\n

Below are the parameters for the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
activity_idThe ID returned by /registerStringYes
activity_typeMust be exactly (case-sensitive) the same as the ActivityAttributes Swift class name in the iOS application.StringYes
insider_idsTarget user IDs. Must contain between 1 and 10,000 elements.String[]Yes
\n
\n

Sample body

\n

Below is a sample body for a request.

\n
{\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"activity_type\": \"DeliveryActivityAttributes\",\n  \"insider_ids\": [\n    \"user-12\",\n    \"user-77\"\n  ]\n}\n\n
\n

Below is a typical usage:

\n

T − 1 hour: /register is called for customers with active orders (Delivery activity_type). The activity is in the REGISTERED state.

\n

T − 30 min: A customer cancels their order → the partner calls POST /remove-users and the devices belonging to that insider_id are removed from the segment.

\n

T + 0: The partner calls /start → no push is sent to the canceling customer.

\n

Sample responses

\n

Success response 200

\n

/add-users uses the same schema as /register. In practice, only removed and activity_id carry meaningful values. The other counters stay zero. partial, gdpr_denied_details, and unprocessed_insider_id_count fields never appear in the response.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"matched\": 0,\n  \"added\": 0,\n  \"refreshed\": 0,\n  \"removed\": 2,\n  \"skipped\": {\n    \"push_permission_disabled\": 0,\n    \"unsupported_platform\": 0,\n    \"unsupported_os_version\": 0,\n    \"push_to_start_token_missing\": 0,\n    \"user_not_found\": 0\n  }\n}\n\n
\n

Below are the fields that return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeDescription
statusStringAlways \"success\"
activity_idStringEcho for the customer to correlate the response with the request
removedIntThe number of devices actually removed from the segment. Since a single insider may have multiple devices in the segment, removed can be larger than the submitted insider_ids count; IDs that are not present contribute 0.
matched/added/refreshedIntAlways 0. /remove-users does not use these metrics.
skippedObjectAll fields are 0. Eligibility filtering does not run.
\n

When no devices are removed

\n

If none of the submitted insider_ids are present in the segment, the response is still 200 OK with removed: 0.

\n
{\n  \"status\": \"success\",\n  \"activity_id\": \"uuid\",\n  \"matched\": 0, \"added\": 0, \"refreshed\": 0, \"removed\": 0,\n  \"skipped\": { \"push_permission_disabled\": 0, \"unsupported_platform\": 0,\n               \"unsupported_os_version\": 0, \"push_to_start_token_missing\": 0,\n               \"user_not_found\": 0 }\n}\n\n
\n

This is not an error; the endpoint is idempotent.

\n

Error responses

\n

Refer to Error Codes for error codes and retry strategies.

\n

Limitations

\n\n

Refer to Limitations and Liability for details.

\n","urlObject":{"protocol":"https","path":["api","v1","live-activity","remove-users"],"host":["live-activity","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9a828839-3b23-4876-91c0-06e4efbcf5ba"}],"id":"2a1069f1-5eb2-464c-9400-52caee394cab","description":"

Mobile Live Activities exposes Apple's Live Activity framework to Insider One customers through a SaaS API. For dynamic on-device notifications (e.g., live match scores, package tracking, flight status, and navigation), the customer sends start/update/end commands from its own backend to the Insider API; Insider One acts as a proxy for the content and delivers it to the device via Apple. Rendering on the device happens via Apple's ActivityKit framework; the content schema and rendering responsibility belong entirely to the customer application.

\n

Two integration flows are supported:

\n\n
https://live-activity.api.useinsider.com\n\n

Integration overview

\n

You will follow these four main steps to complete the integration:

\n

1. Renew your API key

\n

Your existing Insider API key must be renewed. After renewal, the key becomes authorized for Live Activity. Contact the Insider One team for details.

\n

2. Activate the Live Activity product

\n

The product must be activated on your account. Contact the Insider One team for activation. Activation permanently consumes 1 unit of your active orchestration limit.

\n

3. Integrate the SDK

\n

iOS 17.2+ for the Push-to-Start flow, iOS b for the SDK-First flow. Token collection/synchronization is handled by the SDK automatically.

\n

4. API flow

\n\n

Keep in mind before production

\n\n

Prerequisites and Account Activation

\n

API key renewal

\n

Your existing Insider API key is not automatically authorized for Live Activities endpoints. You need to renew your key to use Live Activities. After renewal, the key comes pre-authorized for Live Activities.

\n

Action: Contact the Insider One team to request a key renewal.

\n

All calls made with an unrenewed key are rejected with the following response:

\n
HTTP/1.1 401 Unauthorized\n(no body)\n\n

Product activation

\n

To use the Live Activities product, it must be activated on your account for the target application (customer app).

\n

Action: Contact the Insider One team for activation.

\n

Behavior of Live Activities calls for an inactive application:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Endpoint classBehavior
Customer endpoints (/register, /start, /update, /end, /add-users, /remove-users)403 LIVE_ACTIVITY_DISABLED
SDK endpoints (called automatically from the device)Silently dropped
\n

AOO (Active orchestration) limit

\n

Every Insider One account has a fixed AOO budget (default 20). Activating the Live Activities product consumes 1 unit from this budget.

\n
\n

This consumption is permanent. Even if you disable the product later, your AOO counter does not go back up. Disabling only stops the SDK token collection flow; the consumed budget is not refunded.

\n
\n

Check before activation:

\n

Currently used AOO: 19/20
Will Live Activities be activated? → +1 → 20/20 (limit reached)

\n

Contact the Insider One team for AOO management.

\n

Post-activation verification: lap attribute

\n

After the product becomes active, the custom attribute consumed from the AOO budget becomes visible in your Insider One account. To verify it:

\n

1. Go to the Components > Attributes & Events in your Insider One account panel.

\n

2. Filter by lap. If lap appears in the list as a custom attribute, AOO activation has succeeded.

\n
\n

This is not a functional requirement, but a post-activation verification step. If lap does not appear, contact the Insider One team.

\n
\n\n\n

APNS Certificate

\n

For Insider One to send push notifications to devices, the customer must have uploaded the .p8 APNS certificate to Insider One.

\n

The accepted format is .p8 (Apple sign-in key).

\n

Certificate upload

\n

Upload your certificates following these instructions.

\n

Select the correct environment for your build target and upload:

\n\n
\n
\n

A certificate uploaded under the wrong environment is rejected by Apple; pushes do not reach the device.

\n\n\n

Required conditions

\n\n
\n

Certificates you upload to Insider One are not stored in plain form, they are kept securely with the necessary encryption applied on the server side. They are decrypted only at push send time for immediate use.

\n
\n

Missing/wrong certificate

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorCause
412 APNS_CERT_MISSINGCertificate not uploaded or iOS push not enabled
412 APNS_CERT_TYPE_UNSUPPORTEDUploaded certificate is not .p8 (e.g. .p12)
\n

These errors can surface on all customer endpoints.

\n

SDK integration and iOS version matrix

\n

Integration of the Insider One’s iOS SDK into your application is mandatory for Live Activities. The minimum iOS version depends on which flow you use:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FlowMinimum iOSDescription
Push-to-Start (API-driven)17.2+Customer calls /register → /start → /update* → /end. Insider One collects push-to-start tokens from devices and starts the activity from the server.
SDK-First (device-started)16.1+The device application starts the Live Activities itself. The Insider One’s Mobile SDK collects the token; the customer can manage the activity via the API using /update and /end.
\n

What the SDK does in both flows:

\n\n

Validity period in the SDK-first flow

\n

The validity period of a device-collected live activities on Insider One's side is 1 week. If /end is not called within this period, Insider One does not retain additional data for that activity.

\n
\n

Devices whose token collection has not yet been completed by the SDK are seen as ineligible devices by customer endpoints and are filtered out. On newly installed applications, this may take a few seconds.

\n
\n

In-App Live Activities token collection setting

\n

For the Insider One’s Mobile SDK to collect tokens from the device, the Live Activities feature must be enabled in your application. In the SDK demo app, this is done as follows. In your own application, you would enable the feature with a similar configuration (e.g., an in-app settings screen or directly via an SDK init parameter):

\n

This setting opens Live Activities at the user level in the SDK demo app; in a real integration, the customer may surface a toggle to the user based on their application's needs, or enable the feature directly. When the toggle is off, the SDK does not collect tokens; customer endpoints do not consider these devices eligible.

\n\n\n\n\n

activity_type matching

\n

The activity_type value you send in API calls must be exactly the same (case-sensitive) as the ActivityAttributes Swift class name defined in your iOS application.

\n

iOS example

\n
struct OrderTrackingAttributes: ActivityAttributes {\n    public struct ContentState: Codable, Hashable {\n        var status: String\n        var eta: Date\n    }\n    var orderId: String\n}\n\n
\n

In the API call

\n
{\n  \"activity_type\": \"OrderTrackingAttributes\",\n  ...\n}\n\n
\n
\n
\n

If the type name does not match, Apple fails silently on the device. The push is sent but the Live Activities is not rendered. Insider One cannot detect this mismatch.

\n

Prerequisite checklist

\n

Before going to production, verify that all of the following items are completed:

\n\n

Request/Response Format

\n

All customer endpoints share common request/response conventions. Beyond endpoint-specific schemas, this page documents the format and behavior that applies to every call.

\n
https://live-activity.api.useinsider.com\n\n

All customer endpoints live under the /api/v1/live-activity/ prefix.

\n

Headers

\n

Required headers on customer endpoints are as follows:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderValueDescription
Content-Typeapplication/jsonBody in JSON format
X-Api-KeyYour Insider API key. It must be renewed for Live Activities.
\n

The token collection/synchronization flows the Insider One’s Mobile SDK runs in the background use a different auth model and are not called directly by the customer.

\n

Request body

\n\n

Success response

\n

Successful responses return with HTTP 200. Every endpoint has its own response schema. The common field is as follows:

\n
{\n  \"status\": \"success\",\n  ...\n}\n\n
\n

status is always \"success\" in success responses.

\n

Error response envelope

\n

All error responses use the following standard structure:

\n
{\n  \"error\": \"Human-readable message\",\n  \"code\": \"MACHINE_READABLE_CODE\",\n  \"skipped\": { ... },\n  \"gdpr_denied_details\": [ ... ]\n}\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldTypeAvailability
errorStringYes - Short, human-readable description
codeStringYes (for sentinel errors) - Fixed code for programmatic handling
skippedObjectNo - Only on NO_ELIGIBLE_DEVICE errors, breakdown of filtered devices
gdpr_denied_detailsArrayNo - Only on /register responses, if any GDPR-filtered insiders exist
\n
\n
\n

Some 401 and 503 responses may have an empty body when returned directly by Insider One's authorization layer. In that case, only look at the HTTP status code.

\n

Authentication errors

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SituationHTTPBody
X-Api-Key header is missing.401None
X-Api-Key is invalid or rejected.401None
Insider One authorization layer is temporarily unreachable.503None
API key is not authorized for the Live Activities product.401None
\n

All 401/503 responses return an empty body. Only the HTTP status code is meaningful. To resolve, renew your API key.

\n

Rate limit

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KnobValue
Limit1,000 requests/minute
WindowIndependent counter per identity (API key) + path + method
Overflow behavior429 Too Many Requests (no body)
\n

Your rate limit buckets are separate per endpoint:

\n\n

On overflow, apply a short-lived exponential backoff on the client. No retry header is returned. If the flow remains stuck, contact the Insider One team.

\n

Server-side errors

\n

If a transient error occurs on Insider One's side, refer to the following options.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SituationHTTPCode
Transient error on Insider One's side502UPSTREAM_UNAVAILABLE
Insider One authorization layer is temporarily unreachable.503None
\n
\n

<p >Retry is safe on idempotent endpoints (/register, /update). /start and /end are not idempotent. Check the lifecycle rules before retrying.</p>

\n
\n

Keep in mind

\n\n

Activities Lifecycle and States

\n

Two distinct flows are supported for Live Activities. This page defines the state transitions, the differences between the flows, and which step can be called after which.

\n

Integration flows

\n

Push-to-start flow (API-driven)

\n

The customer triggers the whole flow from its own backend. iOS 17.2+ is mandatory.

\n
                           update (unlimited)\n                                    ⤴\n                                    │\n[REGISTERED] ──/start──▶ [STARTED] ─┴──/update──▶ [STARTED]\n   │ ▲                       │\n   │ │                       │ /end\n   │ │ /add-users            ▼\n   │ │ /remove-users      [DEAD]\n   │ │ (only                  │\n   │ │  before /start)        │  /start, /update, /end  ──▶ 404 NOT_FOUND\n   │ └────────────             │\n   └── /start requires the activity to have been /register-ed first\n\n

SDK-first flow (Device-started)

\n

The device application opens the Live Activities itself; the Insider One’s Mobile SDK collects the token and forwards it to Insider together with the activity_type. iOS 16.1+ is sufficient.

\n
(SDK automatic)\n[device app opens Live Activities] ──▶ [STARTED] record is created on Insider One\n                                                       │\n                                            ┌──────────┼──────────┐\n                                            │          │          │\n                                          /update   /update      /end\n                                            │          │          │\n                                            ▼          ▼          ▼\n                                       [STARTED]  [STARTED]    [DEAD]\n\n

In this flow, /register and /start are not called. When the first token record arrives from the device, the activity automatically enters the STARTED state.

\n

The customer can call /update and /end for this activity.

\n

The record on Insider One's side lives for 1 week. If /end is not called within this period, Insider One does not retain additional data for that activity.

\n

States

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StateDescription
REGISTERED(Push-to-Start only) Created via /register. /start is not called yet. A record exists on Insider One's side, but no push has been sent. /add-users and /remove-users can be called in this state.
STARTEDThe activity is active. Pushes have begun flowing to devices. You can call /update as many times as you want.
DEAD/end was called or the validity period has expired. The record on Insider One's side has been deleted. No further operation is possible with the same activity_id.
\n

Steps

\n

Push-to-start flow

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StepPrecondition (state)EffectWhether it can be called again
POST /register-The activity is created (REGISTERED), the segment is recorded, and the device token collection is triggered. The activity has not started yet.Yes. Each call returns a new activity_id.
POST /add-userActivity must be in the REGISTERED state.New insider_ids are added to the segment; eligibility filters apply.Yes, unlimited before start
POST /remove-usersActivity must be in the REGISTERED state.Devices matching insider_ids are removed from the segment. Idempotent, non-matching IDs are silently skipped.Yes, unlimited before start
POST /startActivity must be in the REGISTERED stateThe activity transitions to STARTED; a start push is sent to eligible devices. After this point /add-users and /remove-users cannot be used.No. A second /start for the same activity_id returns 409 ALREADY_STARTED.
POST /updateActivity must be in the STARTED state, and≥1 device must be synchronizedAn update push is sent; state does not change.Yes, as often as you want
POST /endActivity must be in the STARTED state, ≥1 device must be synchronizedA final push is sent, the record on Insider One's side is deleted, and the activity transitions to DEAD.No, afterwards 404 NOT_FOUND.
\n

SDK-first flow

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StepPreconditionEffect
Device app starts a Live Activities + SDK forwards to Insider OneSDK integrated, iOS 16.1+A STARTED record is created on Insider One's side; the validity period is 1 week.
POST /updateActivity STARTED, token present on the deviceContent is updated; no sync gate wait.
POST /endActivity STARTEDThe final push is sent; the record is deleted.
\n

Critical lifecycle rules

\n

/start is not idempotent (Push-to-start)

\n

A second /start call for the same activity_id is unconditionally rejected with 409 ALREADY_STARTED. Even if the first call hit a network error or timeout, the activity is considered \"locked\" on the server side.

\n

🔁 Retry strategy: If a /start call times out, do NOT call it again. First check the activity's status (if necessary, call /end and start clean).

\n

/end is irreversible

\n

Once /end returns successfully, the record on Insider One's side is deleted. Every subsequent call with the same activity_id returns 404 NOT_FOUND.

\n

⛔ If you want to start the same segment again, you must create a new activity with /register. The activity_id cannot be reused.

\n

/end does not physically remove the activity from the device

\n

The /end call delivers the final push message to the device and then clears all state on Insider One's side. The live activity on the device disappears according to Apple's stale-after / dismissal-date rules — Insider One does not force-remove the activity from the device screen.

\n

This means your /end message should represent the final state (e.g., package \"Delivered\", match \"Ended\"). The user sees this final content until they dismiss the activity or the stale-after period expires.

\n

/add-users and /remove-users only before /start (Push-to-start)

\n

Once the activity transitions to STARTED, the segment is frozen. Users cannot be added to or removed from a started activity. These endpoints can only be used while the activity is in REGISTERED state.

\n

📌 For schema and error code details, see add-users and remove-users.

\n

SDK sync gate (for /update and /end, push-to-start flow)

\n

The push that is sent via /start starts a new live activity on the device. Apple produces a new token for this activity, and the SDK synchronizes it to Insider One. Until this rotation completes, /update and /end messages cannot reach the device.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SituationBehavior
Some devices are synchronized, some are not.Pushes go to the synchronized ones; the rest are counted in skipped_not_synced. 200 OK
All targeted devices are unsynchronized.412 PUSH_TOKEN_NOT_SYNCED
\n
\n

<p >The lifecycle completes within seconds on actively used devices; it may take longer on backgrounded devices. A 2-5 second buffer between /start and the first /update is recommended. In the SDK-first flow, no waiting is needed; the token is already on the device and /update works immediately.</p>

\n
\n

/register can be repeated for the same activity_type

\n

You can make multiple /register calls with the same activity_type; each returns a new activity_id. You track the number of your active activities yourself; there is no upper limit on the service side (apart from rate limits).

\n

Example case: Order delivery tracking

\n

The following scenario shows all endpoints of the Push-to-Start flow end-to-end on DeliveryActivityAttributes available in the SDK demo app.

\n

An ecommerce customer wants to show the order preparation → courier on the way → delivery stages as a live notification on every customer's device.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TimeActionEndpointResultDevice view
T - 1 hourThe ordering customer segment is prepared.POST /registerEligible devices are collected, and activity_id is returned. Activity is REGISTERED.No push yet
T - 30 minA customer cancels their order.POST /remove-usersDevices belonging to that insider_id are removed from the segment.-
T - 30 min + 5 minFreed stock is assigned to another order.POST /add-usersThe new customer's devices are added to the segment.-
T + 0Order preparation begins.POST /start (status: \"pickup\")\"Your order is being prepared\" live activity push goes out. Transitions to STARTED. After this point /add-users and /remove-users cannot be used.
T + 15 minThe courier sets off.POST /update (status: \"in_transit\")\"Courier on the way\" update.
T + 35 minApproaching the addressPOST /update (status: \"out_for_delivery\")\"Out for delivery — at your door soon\" update.
T + 45 minDeliveredPOST /end (status: \"delivered\")\"Order delivered — enjoy!\" final message. The activity is deleted on Insider One's end; the live activity on the device disappears per Apple's rules.
\n

The same pattern applies to the other demo activities. For example, for Workout (training phase tracking) and Match (live score), the flow is identical. Only the content_state fields and enum values change.

\n","_postman_id":"2a1069f1-5eb2-464c-9400-52caee394cab"},{"name":"Send bulk app pushes","id":"b32a30ce-721c-4a99-8c4a-ff277bb3d9b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"campaign_name\": \"Insider API Demo\",\n \"segment_name\": \"Your segment name goes here\",\n \"title\": \"Your push notification title goes here\",\n \"content\": \"Your push content goes here.\",\n \"deeplink\": {\n \"your_deeplink_key\": \"value\",\n \"your_another_deeplink_key\": \"value\"\n },\n \"notification_image\": \"https://your_image_url.jpg\",\n \"android_sound\": \"Your custom sound name for Android goes here\",\n \"ios_sound\": \"Your custom sound name for iOS goes here\",\n \"test_push\": true,\n \"override_global_freq_cap\": true,\n \"advanced_push_items\": [\n {\n \"headline\": \"Title for the item 1\",\n \"description\": \"Description for the item 1\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n },\n {\n \"headline\": \"Title for the item 2\",\n \"description\": \"Description for the item 2\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n },\n {\n \"headline\": \"Title for the item 3\",\n \"description\": \"Description for the item 3\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n }\n ],\n \"preferred_type\": \"carousel\"\n}"},"url":"https://mobile.useinsider.com/api/v1/push/bulk","description":"

Bulk Push API is a service that sends push notifications to a predefined segment over the web using predefined web services.

\n

You can reach the analytics of your bulk push notifications sent via this API through Reports > Mobile App Analytics > Push API Campaigns on Inone.

\n

Body Parameters

\n

The following are the body parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
api_keyYour API Key. Refer to API Authentication Tokens to get your API key.StringYes
campaign_nameName of the push campaign.StringYes
segment_nameName of the segment the push notification is sent to. It should match with the segments on the Mobile Panel.StringYes
titleTitle of the push notification. For instance, it can be your App name.StringYes
contentContent of the push notification.StringYes
deeplinkKey/value pairs to be passed to the application in the push payload. The most common use of deep links is sending the user to the selected landing page when they open the push notification.ObjectNo
notification_imageURL of the image in the rich push notification. If advanced_push_items is in use, notification_image will not be displayed.StringNo
android_soundName of the custom sound file in your app to play a custom sound on Android devices.StringNo
ios_soundName of the custom sound file in your app to play a custom sound on iOS devices.StringNo
test_pushtrue will send the push notification only to the test devices.BooleanNo
advanced_push_itemsArray of Advanced Push Items object.ArrayNo
preferred_typeIt is required only to send Advanced Pushes. E.g. carousel, slider.StringNo
override_global_freq_cap
true will override global frequency capping limit.
BooleanNo
\n

Sample Body

\n

The following is a sample body to send bulk app push notification. Before sending the request, make sure to replace the values in your request body.

\n
{\n   \"api_key\":\"Your API Key goes here\",\n   \"campaign_name\":\"Insider API Demo\",\n   \"segment_name\":\"All People\",\n   \"title\":\"Your push notification title goes here\",\n   \"content\":\"Your push content goes here.\",\n   \"deeplink\":{\n      \"your_deeplink_key\":\"value\",\n      \"your_another_deeplink_key\":\"value\"\n   },\n   \"notification_image\":\"https://your_image_url.jpg\",\n   \"android_sound\":\"Your custom sound name for Android goes here\",\n   \"ios_sound\":\"Your custom sound name for iOS goes here\",\n   \"test_push\":true,\n   \"override_global_freq_cap\":true,\n   \"advanced_push_items\":[\n      {\n         \"headline\":\"Title for the item 1\",\n         \"description\":\"Description for the item 1\",\n         \"image_url\":\"https://your_image_url.jpg\",\n         \"deep_links\":{\n            \"your_deeplink_key\":\"value\"\n         }\n      },\n      {\n         \"headline\":\"Title for the item 2\",\n         \"description\":\"Description for the item 2\",\n         \"image_url\":\"https://your_image_url.jpg\",\n         \"deep_links\":{\n            \"your_deeplink_key\":\"value\"\n         }\n      },\n      {\n         \"headline\":\"Title for the item 3\",\n         \"description\":\"Description for the item 3\",\n         \"image_url\":\"https://your_image_url.jpg\",\n         \"deep_links\":{\n            \"your_deeplink_key\":\"value\"\n         }\n      }\n   ],\n   \"preferred_type\":\"carousel\"\n}\n\n
\n

Sample Responses

\n

200 Campaign Created Successfully

\n

The following response returns if the request is successful.

\n
{\n    \"response\": \"Campaign Created.\"\n}\n\n
\n

400 Invalid API Key

\n

The following response returns if the API Key is invalid.

\n
{\n    \"response\": \"No Partner Found With Api Key.\"\n}\n\n
\n

422 No Push Message Certificate

\n
{\n    \"response\": \"No Push Message Certificate is Provided.\"\n}\n
\n

Fail Records Messages

\n

The following are fail records that might return in the response.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinition
Error Creating CampaignSome parameters are missing in the campaign. You should have all the required parameters in your request.
No API Key ProvidedThe API key is a required parameter. You should have the API Key in your request.
No Title ProvidedPush notification title is a required parameter. You should add the push notification title to your request body.
No Content ProvidedPush content is a required parameter. You should add the content to your request body.
No Partner Found With API KeyThe API Key sent in the payload does not match the API key at Insider. You should get the correct API Key via Inone > Settings > Mobile App Settings > Integration.
Bad IPThe IP the push payload is sent from is not whitelisted.
No Segment MatchedThe segment name in the payload does not match any segments on Insider Dashboard.
AdvancedPushItems should contain at least 3, max. 6 items.If advanced_push_items key is in use in the request body, it should contain 3-6 items.
Preferred Type is Not Carousel or SliderIf preferred_type key is in use in the request body, it can either be carousel or slider.
Invalid Advanced Push PayloadAll the items for the Advanced Push Notification should have headline, description, image URL variables defined with image URLs using the HTTPS protocol.
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","v1","push","bulk"],"host":["mobile","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"83f37a14-87e1-4eb7-9b8c-451398a10b3a","name":"Send bulk app push to a test device","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"campaign_name\": \"My bulk push campaign\",\n \"segment_name\": \"App segment with attributes\",\n \"title\": \"This is my push title\",\n \"content\": \"This is my push content.\",\n \"deeplink\": {\n \"your_deeplink_key\": \"value\",\n \"your_another_deeplink_key\": \"value\"\n },\n \"notification_image\": \"https://notificationimage.useinsider.com\",\n \"test_push\": true,\n \"override_global_freq_cap\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.useinsider.com/api/v1/push/bulk"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 12 May 2023 08:47:35 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"1184","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=fu0Fs2s1wRxgTBPupBePhoDVdkEBKhJ6MLlFWsokTzs-1683881255-0-Ac5fNA8lPVx0X80bzhj9jQ7ft4glnrZN8QQI3xBl9g5maYWnih6aHtTIv2q/YCyZjUk9/YFkwGCzj+yr71RM2pw=; path=/; expires=Fri, 12-May-23 09:17:35 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c6165ccfef40811-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"response\": \"Test Push Send to Test Devices\"\n}"},{"id":"b6cbf462-ef30-43f0-9bb2-cb8cc332d3e6","name":"Send advanced bulk push to a segment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"campaign_name\": \"My advanced bulk push\",\n \"segment_name\": \"My segment for this app push\",\n \"title\": \"This is my title\",\n \"content\": \"This is my content.\",\n \"deeplink\": {\n \"your_deeplink_key1\": \"value1\",\n \"your_another_deeplink_key2\": \"value2\"\n },\n \"notification_image\": \"https://useinsiderimage.jpg\",\n \"advanced_push_items\": [\n {\n \"headline\": \"My headline 1\",\n \"description\": \"My description 1\",\n \"image_url\": \"https://useinsiderimageurl.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n },\n {\n \"headline\": \"My second headline\",\n \"description\": \"My second description\",\n \"image_url\": \"https://useinsiderimageurl2.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n },\n {\n \"headline\": \"My headline 3\",\n \"description\": \"My description 3\",\n \"image_url\": \"https://useinsiderimageurl3.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value\"\n }\n }\n ],\n \"preferred_type\": \"carousel\"\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.useinsider.com/api/v1/push/bulk"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 12 May 2023 12:17:50 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"184","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=DFE5fqnoNn2JtnjB0QuiAbcIMpv0pES4CDDDZHPJ3PM-1683893870-0-AXNN9RRPoZ+fxFBh73tbm3B5NbxzxmEriW5KsKkpWUvqZnGwLF3VuUNVy7Ua2Ev/isNQUEFl2bzQlJqOIPjSvmU=; path=/; expires=Fri, 12-May-23 12:47:50 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c6299d01f558275-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"response\": \"Campaign Created\"\n}"}],"_postman_id":"b32a30ce-721c-4a99-8c4a-ff277bb3d9b7"},{"name":"Send targeted app pushes","id":"d7f78aeb-9a0d-462d-9e90-5accdf844a2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"report_attributes\": [\n \"INSIDER.carrier\",\n \"INSIDER.idfa\",\n \"INSIDER.name\",\n \"INSIDER.surname\",\n \"INSIDER.gender\",\n \"INSIDER.age\",\n \"INSIDER.birthday\",\n \"INSIDER.email\",\n \"INSIDER.phone_number\",\n \"INSIDER.language\",\n \"INSIDER.email_optin\",\n \"INSIDER.sms_optin\",\n \"INSIDER.push_optin\",\n \"INSIDER.location_optin\",\n \"INSIDER.insider_id\",\n \"INSIDER.environment\",\n \"INSIDER.idfa\",\n \"INSIDER.device_token\",\n \"INSIDER.udid\",\n \"INSIDER.model\",\n \"INSIDER.carrier\",\n \"INSIDER.app_version\",\n \"INSIDER.os_version\",\n \"INSIDER.screen_width\",\n \"INSIDER.screen_height\",\n \"INSIDER.platform\",\n \"INSIDER.timezone\",\n \"INSIDER.device_language\",\n \"INSIDER.sdk_version\",\n \"INSIDER.last_ip\",\n \"INSIDER.package_name\",\n \"INSIDER.push_enabled\",\n \"INSIDER.location_enabled\"\n ],\n \"notifications\": [\n {\n \"identifiers\": {\n \"INSIDER.email\": \"sample@useinsider.com\",\n \"INSIDER.phone_number\": \"+65123456789\",\n \"INSIDER.uuid\": \"1234567890\"\n },\n \"camp_id\": 1,\n \"camp_name\": \"Your push notification campaign name goes here\",\n \"title\": \"Your push notification title goes here\",\n \"message\": \"Your push content goes here.\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"ttl\": 1,\n \"check_optin\": true,\n \"android\": {\n \"thread-id\": 1,\n \"sound\": \"sound_check\",\n \"deep_link\": {\n \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n }\n },\n \"ios\": {\n \"thread-id\": 1,\n \"badge\": 1,\n \"content-available\": false,\n \"mutable-content\": true,\n \"sound\": \"sound_check\",\n \"deep_link\": {\n \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n }\n }\n }\n ]\n}"},"url":"https://mobile.useinsider.com/api/v2/notification/user","description":"

You can use the Targeted Push API in various cases such as sending status update of an order from your ecommerce platform, or informing users of a sale on an item that was in their wishlist.

\n

You can reach the analytics of your targeted push notifications sent via this API through Reports > Mobile App Analytics > Push API Campaigns on Inone.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
api_keyYour API key. Refer to API Authentication Tokens to get your API key.StringYes
asyncTrue: The request is queued and HTTP 202 {\"message\":\"Async request accepted\"} returns. The notification send results are not in the response.
False (default): HTTP 200 returns send reports with success/error counts.
BooleanNo
notificationsThe array of notification object that includes the push dataArrayYes
identifiersThe object that contains the unique identifier of the user. The key can be an identifier such as email, phone_number, or uuid. E.g., \"phone_number\": \"+651234567890\".ObjectYes
camp_idID of the campaign that can be used to retrieve the statistics of the push notification via Statistics API. You can set any campaign ID.IntegerYes
camp_nameName of the push notificationStringYes
titleTitle of the push notificationStringYes
messageContent of the push notificationStringYes
image_urlURL of the image in rich push notificationsStringNo
GFC_enabledWhen set to true, the Targeted Push API enforces your pushed global frequency cap (GFC). Each successful API push increments the user’s GFC counter by one. If the user has already reached the GFC limit, the API blocks the send. The user is excluded, no message is sent, and the count is not incremented. The default value is set to false. Even if GFC_enabled is set to false, the user's counter is still incremented.BooleanNo
ttlExpiration time of the push notification in secondsIntegerNo
androidObject for Android detailsObjectNo
channel_idID of the channelIntegerNo
iosObject for iOS detailsObjectNo
thread_idID of the notification threadIntegerNo
deep_linkKey/value pairs to be passed to the application in the push payload. The most common use of deep links is sending the user to the selected landing page when they open the push notification.ObjectNo
soundName of the custom sound file in your app to play a custom soundStringNo
badgeBadge for iOSIntegerNo
content-available(iOS only) true sends the notifications with content--available=1, but the notification does not appear. This can be used to execute background tasks remotely.BooleanNo
mutable-content(iOS only) true sends the notification with mutable-content=1 and updates the current screen app pushes. This can be used to update app push notification content that was sent incorrectly on the user's screen.BooleanNo
\n
\n

<p >To add key-value pairs to the deep_link object, you can use the following deep link keys depending on its type:</p>

\n
\n\n

The URL in the value should always start with https://.

\n

Sample Body

\n

The following is a sample body to send targeted app push notifications.

\n
\n

camp_id allows you to list your app push notifications in the Message Center, and get campaign-based reporting of your Push API campaigns. When replacing the sample values in the payload, make sure to use a unique campaign ID value in the camp_id key.

\n
\n
{\n    \"api_key\": \"Your API Key goes here\",\n    \"report_attributes\": [\n        \"INSIDER.carrier\",\n        \"INSIDER.idfa\",\n        \"INSIDER.name\",\n        \"INSIDER.surname\",\n        \"INSIDER.gender\",\n        \"INSIDER.age\",\n        \"INSIDER.birthday\",\n        \"INSIDER.email\",\n        \"INSIDER.phone_number\",\n        \"INSIDER.language\",\n        \"INSIDER.email_optin\",\n        \"INSIDER.sms_optin\",\n        \"INSIDER.push_optin\",\n        \"INSIDER.location_optin\",\n        \"INSIDER.insider_id\",\n        \"INSIDER.environment\",\n        \"INSIDER.idfa\",\n        \"INSIDER.device_token\",\n        \"INSIDER.udid\",\n        \"INSIDER.model\",\n        \"INSIDER.carrier\",\n        \"INSIDER.app_version\",\n        \"INSIDER.os_version\",\n        \"INSIDER.screen_width\",\n        \"INSIDER.screen_height\",\n        \"INSIDER.platform\",\n        \"INSIDER.timezone\",\n        \"INSIDER.device_language\",\n        \"INSIDER.sdk_version\",\n        \"INSIDER.last_ip\",\n        \"INSIDER.package_name\"\n    ],\n    \"notifications\": [\n        {\n            \"identifiers\": {\n                \"INSIDER.email\": \"sample@mail.com\",\n                \"INSIDER.phone_number\": \"+65123456789\",\n                \"INSIDER.uuid\": \"1234567890\"\n            },\n            \"camp_id\": 1,\n            \"camp_name\": \"Your push notification campaign name goes here\",\n            \"title\": \"Your push notification title goes here\",\n            \"message\": \"Your push content goes here.\",\n            \"image_url\": \"https://your_image_url.jpg\",\n            \"ttl\": 1,\n            \"check_optin\": true,\n            \"android\": {\n                \"thread-id\": 1,\n                \"sound\": \"sound_check\",\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            },\n            \"ios\": {\n                \"thread-id\": 1,\n                \"badge\": 1,\n                \"content-available\": false,\n                \"mutable-content\": true,\n                \"sound\": \"sound_check\",\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            }\n        }\n    ]\n}\n\n
\n

Add advanced_push_payload in notifications if you would like to use advanced app pushes. The advanced_push_type value can be a carousel or slider.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDefinitionData TypeRequired
advanced_push_typeType of the advanced push: carousel or sliderStringYes
advanced_push_itemsDetails of the advanced pushArrayYes
image_urlURL of the image in rich push notificationsStringYes
deep_linksKey/value pairs to be passed to the application in the push payload. The most common use of deep links is sending the user to the selected landing page when they open the push notification.ObjectNo
descriptionDescription for your pushStringYes
headlineTitle for your pushStringYes
idID of your pushIntegerYes
\n
{\n    \"api_key\": \"Your API Key goes here\",\n    \"report_attributes\": [\n        \"INSIDER.carrier\",\n        \"INSIDER.idfa\",\n        \"INSIDER.name\",\n        \"INSIDER.surname\",\n        \"INSIDER.gender\",\n        \"INSIDER.age\",\n        \"INSIDER.birthday\",\n        \"INSIDER.email\",\n        \"INSIDER.phone_number\",\n        \"INSIDER.language\",\n        \"INSIDER.email_optin\",\n        \"INSIDER.sms_optin\",\n        \"INSIDER.push_optin\",\n        \"INSIDER.location_optin\",\n        \"INSIDER.insider_id\",\n        \"INSIDER.environment\",\n        \"INSIDER.idfa\",\n        \"INSIDER.device_token\",\n        \"INSIDER.udid\",\n        \"INSIDER.model\",\n        \"INSIDER.carrier\",\n        \"INSIDER.app_version\",\n        \"INSIDER.os_version\",\n        \"INSIDER.screen_width\",\n        \"INSIDER.screen_height\",\n        \"INSIDER.platform\",\n        \"INSIDER.timezone\",\n        \"INSIDER.device_language\",\n        \"INSIDER.sdk_version\",\n        \"INSIDER.last_ip\",\n        \"INSIDER.package_name\"\n    ],\n    \"notifications\": [\n        {\n            \"identifiers\": {\n                \"INSIDER.email\": \"example@gmail.com\",\n                \"INSIDER.phone_number\": \"+9059713551597135123\",\n                \"INSIDER.uuid\": \"5971351231234567\"\n            },\n            \"advanced_push_payload\": {\n                \"advanced_push_type\": \"carousel\",\n                \"advanced_push_items\": [\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value1\"\n                        },\n                        \"description\": \"Description for the item 1\",\n                        \"headline\": \"Title for the item 1\",\n                        \"id\": 1\n                    },\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value2\"\n                        },\n                        \"description\": \"Description for the item 2\",\n                        \"headline\": \"Title for the item 2\",\n                        \"id\": 2\n                    },\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value3\"\n                        },\n                        \"description\": \"Description for the item 3\",\n                        \"headline\": \"Title for the item 3\",\n                        \"id\": 3\n                    }\n                ]\n            },\n            \"camp_id\": 1,\n            \"camp_name\": \"Your push notification campaign name goes here\",\n            \"title\": \"Your push notification title goes here\",\n            \"message\": \"Your push content goes here\",\n            \"image_url\": \"https://your_image_url.jpg\",\n            \"ttl\": 1,\n            \"send_single_user\": true,\n            \"check_optin\": true,\n            \"android\": {\n                \"thread-id\": 1,\n                \"sound\": \"sound_check\",\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            },\n            \"ios\": {\n                \"thread-id\": 13,\n                \"badge\": 1,\n                \"content-available\": false,\n                \"mutable-content\": true,\n                \"sound\": \"sound_check\",\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            }\n        }\n    ]\n}\n\n
\n
\n

You can replace the advanced_push_payload.advanced_push_items[n].deep_links.your_deeplink_key with a custom deep link key, or use one of the following default keys: ins_dl_internal, ins_dl_external, ins_dl_url_scheme, or ins_dl_json.

\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request body has the report_attributes array.

\n
\n

insider_id represents the profile ID in user profiles.

\n
\n
{\n    \"successes\": [\n        {\n            \"INSIDER.age\": 37,\n            \"INSIDER.app_version\": \"4.0\",\n            \"INSIDER.birthday\": \"1982-11-13T23:00:00Z\",\n            \"INSIDER.carrier\": \"mycarrier\",\n            \"INSIDER.device_language\": \"en\",\n            \"INSIDER.device_token\": \"d07951020f3835bbc303084ecda3746170cfb5d696ddcc55b6\",\n            \"INSIDER.email\": \"sample@mail.com\",\n            \"INSIDER.email_optin\": true,\n            \"INSIDER.environment\": \"production\",\n            \"INSIDER.gender\": \"F\",\n            \"INSIDER.idfa\": \"AF3CCF3F-0V8E-6571-B296-E9BDFF7\",\n            \"INSIDER.insider_id\": \"940E4A98F309288AAC8C4\",\n            \"INSIDER.language\": \"en_US\",\n            \"INSIDER.last_ip\": null,\n            \"INSIDER.location_optin\": false,\n            \"INSIDER.model\": \"iPhone 11\",\n            \"INSIDER.name\": \"John Smith\",\n            \"INSIDER.os_version\": \"14.7.1\",\n            \"INSIDER.package_name\": \"com.useinsider.iGurmeV3\",\n            \"INSIDER.phone_number\": \"+65123456789\",\n            \"INSIDER.platform\": \"iOS\",\n            \"INSIDER.push_optin\": true,\n            \"INSIDER.screen_height\": null,\n            \"INSIDER.screen_width\": null,\n            \"INSIDER.sdk_version\": \"10.6.0-RN-4.0.0\",\n            \"INSIDER.sms_optin\": true,\n            \"INSIDER.surname\": \"Smith\",\n            \"INSIDER.timezone\": \"Europe/Helsinki\",\n            \"INSIDER.udid\": \"98BB170F5078F309288AAC8C4\"\n        }\n    ],\n    \"errors\": {}\n}\n\n
\n

The following response returns if the request body does not have the report_attributes array.

\n
{\n    \"successes\": [\n        {\n            \"INSIDER.device_token\": \"d07951020f3084ecd4d3deda3746170cfb5d69672c055b6\"\n        }\n    ],\n    \"errors\": {}\n}\n\n
\n

There might be cases where the request returns a 200 response but the app pushes cannot be sent to users. The following list displays the reasons for these cases.

\n

| noUserErr | \"NoUserFound\" |
| optOutErr | \"OptOut\" |
| unregisteredErr | \"Unregistered\" |
| userGloballyCappedErr | \"UserGloballyCapped\" |
| userGloballyCappedForInappErr | \"UserGloballyCappedForInapp\" |
| invalidCertificateErr | \"InvalidCertificate\" |

\n

400 Bad Request

\n

The following response returns if the request body does not have an identifier.

\n
{\n    \"error\": \"empty_insider_identifiers\",\n    \"message\": \"'insider_identifiers' object need to have at least one identifier\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the notifications array is empty.

\n
{\n  \"error\": \"invalid_notifications\",\n  \"message\": \"'notifications' is empty, add some notification objects\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the array has more than 20 objects.

\n
{\n  \"error\": \"invalid_notifications\",\n  \"message\": \"'notifications' can't have more than 20 objects\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the deep link is blacklisted.

\n
{\n  \"error\": \"blacklisted_deeplink\",\n  \"message\": \"deepLink can't contain 'aps' key\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the camp ID or channel ID is a negative integer.

\n
{\n  \"error\": \"negative_integer\",\n  \"message\": \"camp_id' and/or 'channel_id' must be greater than zero\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the advanced push type is invalid.

\n
{\n  \"error\": \"invalid_advanced_push_type\",\n  \"message\": \"'advanced_push_type' must be either Carousel or Slider\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the certificate is invalid.

\n
{\n  \"error\": \"invalid_certificate\",\n  \"message\": \"You do not have a validated certificate. Please check Certificate section under Insider's Settings.\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the API Key is either empty or incorrect.

\n
{\n    \"error\": \"bad_api_key\",\n    \"message\": \"'api_key' is either empty or wrong. You can get your API key from Insider Dashboard\"\n}\n\n
\n

Fail Records Messages

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinition
InvalidRegistration (Android)You should check the format of the registration passed to the server. Make sure it matches the registration token the client app receives from registering with FCM. Do not truncate or add additional characters.
NotRegistered (Android)User uninstalled the app and is no longer reachable.
MismatchSenderId (Android)Google Sender ID used in the integration and the FCM Server Key do not belong to the same parent Google Account.
BadDeviceToken (iOS)The application and the app environment do not match. One is in development and the other is in production environment.
DeviceTokenNotForTopic (iOS)Push notification certificate topic and the application package name do not match.
Unregistered (iOS)User uninstalled the app and is no longer reachable.
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","v2","notification","user"],"host":["mobile","useinsider","com"],"query":[{"disabled":true,"key":"","value":""}],"variable":[]}},"response":[{"id":"a79a82ee-90cb-4cd0-8a8f-d5d361daeff2","name":"No user found by uuid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"report_attributes\": [\n \"INSIDER.name\",\n \"INSIDER.birthday\",\n \"INSIDER.email\",\n \"INSIDER.phone_number\",\n \"INSIDER.email_optin\",\n \"INSIDER.sms_optin\",\n \"INSIDER.push_optin\",\n \"INSIDER.timezone\"\n ],\n \"notifications\": [\n {\n \"identifiers\": {\n \"INSIDER.uuid\": \"u1u2i3d4\"\n },\n \"camp_id\": 1,\n \"camp_name\": \"Black friday deals\",\n \"title\": \"20% off on all seasonal items\",\n \"message\": \"Place your order while stocks last!\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"ttl\": 1,\n \"check_optin\": true\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://mobile.useinsider.com/api/v2/notification/user","protocol":"https","host":["mobile","useinsider","com"],"path":["api","v2","notification","user"],"query":[{"key":"","value":null,"type":"text","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 15:23:06 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"15","enabled":true},{"key":"vary","value":"Accept-Encoding","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7ccec7142eac9c52-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"successes\": [],\n \"errors\": {\n \"NoUserFound\": [\n {\n \"INSIDER.uuid\": \"u1u2i3d4\"\n }\n ]\n }\n}"},{"id":"0fb3857c-5287-4e81-b042-70c838fc61f5","name":"Send targeted app push","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"report_attributes\": [\n \"INSIDER.carrier\",\n \"INSIDER.birthday\",\n \"INSIDER.email\",\n \"INSIDER.phone_number\",\n \"INSIDER.language\",\n \"INSIDER.email_optin\",\n \"INSIDER.sms_optin\",\n \"INSIDER.push_optin\",\n \"INSIDER.location_optin\",\n \"INSIDER.insider_id\",\n \"INSIDER.environment\",\n \"INSIDER.udid\",\n \"INSIDER.model\",\n \"INSIDER.app_version\",\n \"INSIDER.os_version\",\n \"INSIDER.platform\",\n \"INSIDER.timezone\",\n \"INSIDER.device_language\",\n \"INSIDER.sdk_version\"\n ],\n \"notifications\": [\n {\n \"identifiers\": {\n \"INSIDER.email\": \"sample@useinsider.com\"\n },\n \"camp_id\": 1,\n \"camp_name\": \"Black friday deals\",\n \"title\": \"20% off on seasonal items\",\n \"message\": \"Place your order while stocks last\",\n \"image_url\": \"https://image.useinsider\",\n \"ttl\": 1,\n \"check_optin\": true\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://mobile.useinsider.com/api/v2/notification/user","protocol":"https","host":["mobile","useinsider","com"],"path":["api","v2","notification","user"],"query":[{"key":"","value":null,"type":"text","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 16:03:08 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"190","enabled":true},{"key":"vary","value":"Accept-Encoding","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=XzrDxlppoYIZkrPSIEjv2BCqzcIjZXWtDhZ8uUDwmmY-1685030588-0-AecMSWt6tRNBoExHeZd3fpBF+/0182z5y6xN6es/MLETei5F+GmOQ8a1NfFE1E1iM+WUz3EBUr0z5CuUH8oDkNQ=; path=/; expires=Thu, 25-May-23 16:33:08 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7ccf01b8cc513aed-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"successes\": [\n {\n \"INSIDER.app_version\": \"10.0\",\n \"INSIDER.birthday\": null,\n \"INSIDER.carrier\": \"Turkcell\",\n \"INSIDER.device_language\": \"en\",\n \"INSIDER.email\": \"sample@useinsider.com\",\n \"INSIDER.email_optin\": true,\n \"INSIDER.environment\": \"production\",\n \"INSIDER.insider_id\": \"1234-5678-9012\",\n \"INSIDER.language\": \"en_US\",\n \"INSIDER.location_optin\": false,\n \"INSIDER.model\": \"iPhone 11\",\n \"INSIDER.os_version\": \"16.3\",\n \"INSIDER.phone_number\": \"+16102362339\",\n \"INSIDER.platform\": \"iOS\",\n \"INSIDER.push_optin\": true,\n \"INSIDER.sdk_version\": \"12.7.3-RN-5.5.0\",\n \"INSIDER.sms_optin\": true,\n \"INSIDER.timezone\": \"Europe/Istanbul\",\n \"INSIDER.udid\": \"u1u2i3d4\"\n }\n ],\n \"errors\": {}\n}"}],"_postman_id":"d7f78aeb-9a0d-462d-9e90-5accdf844a2e"},{"name":"Send advanced app pushes","id":"17be6356-3135-4cea-bd39-d262993bcdef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"report_attributes\": [\n \"INSIDER.carrier\",\n \"INSIDER.idfa\",\n \"INSIDER.name\",\n \"INSIDER.surname\",\n \"INSIDER.gender\",\n \"INSIDER.age\",\n \"INSIDER.birthday\",\n \"INSIDER.email\",\n \"INSIDER.phone_number\",\n \"INSIDER.language\",\n \"INSIDER.email_optin\",\n \"INSIDER.sms_optin\",\n \"INSIDER.push_optin\",\n \"INSIDER.location_optin\",\n \"INSIDER.insider_id\",\n \"INSIDER.environment\",\n \"INSIDER.idfa\",\n \"INSIDER.device_token\",\n \"INSIDER.udid\",\n \"INSIDER.model\",\n \"INSIDER.carrier\",\n \"INSIDER.app_version\",\n \"INSIDER.os_version\",\n \"INSIDER.screen_width\",\n \"INSIDER.screen_height\",\n \"INSIDER.platform\",\n \"INSIDER.timezone\",\n \"INSIDER.device_language\",\n \"INSIDER.sdk_version\",\n \"INSIDER.last_ip\",\n \"INSIDER.package_name\",\n \"INSIDER.push_enabled\",\n \"INSIDER.location_enabled\"\n ],\n \"notifications\": [\n {\n \"identifiers\": {\n \"INSIDER.email\": \"sample@useinsider.com\",\n \"INSIDER.phone_number\": \"+6559713551597135123\",\n \"INSIDER.uuid\": \"5971351231234567\"\n },\n \"advanced_push_payload\": {\n \"advanced_push_type\": \"carousel\",\n \"advanced_push_items\": [\n {\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value1\"\n },\n \"description\": \"Description for the item 1\",\n \"headline\": \"Title for the item 1\",\n \"id\": 1\n },\n {\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value2\"\n },\n \"description\": \"Description for the item 2\",\n \"headline\": \"Title for the item 2\",\n \"id\": 2\n },\n {\n \"image_url\": \"https://your_image_url.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value3\"\n },\n \"description\": \"Description for the item 3\",\n \"headline\": \"Title for the item 3\",\n \"id\": 3\n }\n ]\n },\n \"camp_id\": 1,\n \"camp_name\": \"Your push notification campaign name goes here\",\n \"title\": \"Your push notification title goes here\",\n \"message\": \"Your push content goes here\",\n \"image_url\": \"https://your_image_url.jpg\",\n \"ttl\": 1,\n \"check_optin\": true,\n \"android\": {\n \"thread-id\": 1,\n \"sound\": \"sound_check\",\n \"deep_link\": {\n \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n }\n },\n \"ios\": {\n \"thread-id\": 13,\n \"badge\": 1,\n \"deliver_silently\": true,\n \"mutable-content\": true,\n \"sound\": \"sound_check\",\n \"content-available\": true,\n \"deep_link\": {\n \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n }\n }\n }\n ]\n}"},"url":"https://mobile.useinsider.com/api/v2/notification/user","description":"

You can use this endpoint in various cases such as sending status update of an order from your ecommerce platform, or informing users of a sale on an item that was in their wishlist.

\n

You can reach the analytics of your advanced push notifications sent via this API through Reports > Mobile App Analytics > Push API Campaigns on Inone.

\n

Body Parameters

\n

The following are the body parameters you need to use in your request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
api_keyYour API key. Refer to API Authentication Tokens to get your API key.StringYes
report_attributesContains information of the users who have been notified. This information is displayed on request.ArrayNo
notificationsThe array of notification object that includes the push dataArrayYes
identifiersThe object that contains the unique identifier of the user. The key can be an identifier such as email, phone_number or uuid. E.g. \"phone_number\": \"+651234567890\".ObjectYes
advanced_push_payloadPayload details for advanced pushObjectYes
advanced_push_typeType of the advanced pushStringYes
advanced_push_itemsDetails of the advanced pushArrayYes
image_urlURL of the image in rich push notificationsStringYes
deep_linksKey/value pairs to be passed to the application in the push payload. The most common use of deep links is sending the user to the selected landing page when they open the push notification.ObjectNo
descriptionDescription for your itemStringYes
headlineTitle for your itemStringYes
idID of your itemIntegerYes
camp_idID of the campaign that can be used to retrieve the statistics of the push notification via Statistics API.IntegerYes
camp_nameName of the push notificationStringYes
titleTitle of the push notificationStringYes
messageContent of the push notificationStringYes
image_urlURL of the image in rich push notificationsStringYes
ttlExpiration time of the push notification in secondsIntegerNo
check_optintrue shows the optin delivery count information in the API response. false does not show the count.BooleanNo
androidObject for Android detailsObjectNo
iosObject for iOS detailsObjectNo
thread-idID of the notification threadIntegerNo
badgeBadge for iOSIntegerNo
deliver_silently(iOS only) true sends the notifications with content--available=1 but notification does not show up. This can be used to execute background tasks remotely.BooleanNo
soundCustom sound name for iOSStringNo
deep_linkKey/value pairs to be passed to the application in the push payload. The most common use of deep links is sending the user to the selected landing page when they open the push notification.ObjectNo
\n

To add key-value pairs to the deep_link object, you can use the following deep link keys depending on its type:

\n\n

The URL in the value should always start with https://.

\n
\n

You can replace the advanced_push_payload.advanced_push_items[n].deep_links.your_deeplink_key with a custom deep link key, or use one of the following default keys: ins_dl_internal, ins_dl_external, ins_dl_url_scheme, or ins_dl_json.

\n
\n

Sample Body

\n

The following is a sample body to send advanced app push notifications.

\n
\n

camp_id allows you to list your app push notifications in the Message Center, and get campaign-based reporting of your Push API campaigns. When replacing the sample values in the payload, make sure to use a unique campaign ID value in the camp_id key.

\n
\n
{\n    \"api_key\": \"Your API Key goes here\",\n    \"report_attributes\": [\n        \"INSIDER.carrier\",\n        \"INSIDER.idfa\",\n        \"INSIDER.name\",\n        \"INSIDER.surname\",\n        \"INSIDER.gender\",\n        \"INSIDER.age\",\n        \"INSIDER.birthday\",\n        \"INSIDER.email\",\n        \"INSIDER.phone_number\",\n        \"INSIDER.language\",\n        \"INSIDER.email_optin\",\n        \"INSIDER.sms_optin\",\n        \"INSIDER.push_optin\",\n        \"INSIDER.location_optin\",\n        \"INSIDER.insider_id\",\n        \"INSIDER.environment\",\n        \"INSIDER.idfa\",\n        \"INSIDER.device_token\",\n        \"INSIDER.udid\",\n        \"INSIDER.model\",\n        \"INSIDER.carrier\",\n        \"INSIDER.app_version\",\n        \"INSIDER.os_version\",\n        \"INSIDER.screen_width\",\n        \"INSIDER.screen_height\",\n        \"INSIDER.platform\",\n        \"INSIDER.timezone\",\n        \"INSIDER.device_language\",\n        \"INSIDER.sdk_version\",\n        \"INSIDER.last_ip\",\n        \"INSIDER.package_name\"\n    ],\n    \"notifications\": [\n        {\n            \"identifiers\": {\n                \"INSIDER.email\": \"example@gmail.com\",\n                \"INSIDER.phone_number\": \"+9059713551597135123\",\n                \"INSIDER.uuid\": \"5971351231234567\"\n            },\n            \"advanced_push_payload\": {\n                \"advanced_push_type\": \"carousel\",\n                \"advanced_push_items\": [\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value1\"\n                        },\n                        \"description\": \"Description for the item 1\",\n                        \"headline\": \"Title for the item 1\",\n                        \"id\": 1\n                    },\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value2\"\n                        },\n                        \"description\": \"Description for the item 2\",\n                        \"headline\": \"Title for the item 2\",\n                        \"id\": 2\n                    },\n                    {\n                        \"image_url\": \"https://your_image_url.jpg\",\n                        \"deep_links\": {\n                            \"your_deeplink_key\": \"value3\"\n                        },\n                        \"description\": \"Description for the item 3\",\n                        \"headline\": \"Title for the item 3\",\n                        \"id\": 3\n                    }\n                ]\n            },\n            \"camp_id\": 1,\n            \"camp_name\": \"Your push notification campaign name goes here\",\n            \"title\": \"Your push notification title goes here\",\n            \"message\": \"Your push content goes here\",\n            \"image_url\": \"https://your_image_url.jpg\",\n            \"ttl\": 1,\n            \"check_optin\": true,\n            \"android\": {\n                \"thread-id\": 1,\n                \"sound\": \"sound_check\",\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            },\n            \"ios\": {\n                \"thread-id\": 13,\n                \"badge\": 1,\n                \"deliver_silently\": true,\n                \"mutable-content\": true,\n                \"sound\": \"sound_check\",\n                \"content-available\": true,\n                \"deep_link\": {\n                    \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n                }\n            }\n        }\n    ]\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"successes\": [\n        {\n            \"INSIDER.carrier\": \"Mybrand\",\n            \"INSIDER.device_token\": \"1a2b3c4d5e6f\",\n            \"INSIDER.email\": \"sample@mail.com\",\n            \"INSIDER.phone_number\": \"+651234567891\",\n        }\n    },\n    \"errors\": {\n        \"NoUserFound\": [\n            {\n                \"INSIDER.email\": \"sample2@mail.com\"\n            }\n        ]\n    }\n}\n\n
\n

There might be cases where the request returns a 200 response but the app pushes cannot be sent to users. The following list displays the reasons for these cases.

\n

| noUserErr | \"NoUserFound\" |
| optOutErr | \"OptOut\" |
| unregisteredErr | \"Unregistered\" |
| userGloballyCappedErr | \"UserGloballyCapped\" |
| userGloballyCappedForInappErr | \"UserGloballyCappedForInapp\" |
| invalidCertificateErr | \"InvalidCertificate\" |

\n

400 Bad Request

\n

The following response returns if the payload is invalid.

\n
{\n    \"error\": \"invalid_payload\"\n    \"message\": \"Can't parse payload, check your keys and data types\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the notifications array is empty.

\n
{\n  \"error\": \"invalid_notifications\",\n  \"message\": \"'notifications' is empty, add some notification objects\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the array has more than 20 objects.

\n
{\n  \"error\": \"invalid_notifications\",\n  \"message\": \"'notifications' can't have more than 20 objects\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the deep link is blacklisted.

\n
{\n  \"error\": \"blacklisted_deeplink\",\n  \"message\": \"deepLink can't contain 'aps' key\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the camp ID or channel ID is a negative integer.

\n
{\n  \"error\": \"negative_integer\",\n  \"message\": \"camp_id' and/or 'channel_id' must be greater than zero\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the advanced push type is invalid.

\n
{\n  \"error\": \"invalid_advanced_push_type\",\n  \"message\": \"'advanced_push_type' must be either Carousel or Slider\"\n}\n\n
\n

400 Bad Request

\n

The following response returns if the certificate is invalid.

\n
{\n  \"error\": \"invalid_certificate\",\n  \"message\": \"You do not have a validated certificate. Please check Certificate section under Insider's Settings.\"\n}\n\n
\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","v2","notification","user"],"host":["mobile","useinsider","com"],"query":[{"disabled":true,"key":"","value":""}],"variable":[]}},"response":[{"id":"c6cf74bd-d9ea-4b23-9aa1-0b43c5c7650f","name":"Send advanced app push","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\",\n \"report_attributes\": [\n \"INSIDER.birthday\",\n \"INSIDER.email\",\n \"INSIDER.phone_number\",\n \"INSIDER.language\",\n \"INSIDER.model\",\n \"INSIDER.device_language\",\n \"INSIDER.sdk_version\"\n ],\n \"notifications\": [\n {\n \"identifiers\": {\n \"INSIDER.email\": \"sample@useinsider.com\"\n },\n \"advanced_push_payload\": {\n \"advanced_push_type\": \"carousel\",\n \"advanced_push_items\": [\n {\n \"image_url\": \"https://useinsider.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value1\"\n },\n \"description\": \"Carousel image 1\",\n \"headline\": \"Title for the image 1\",\n \"id\": 1\n },\n {\n \"image_url\": \"https://useinsider.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value2\"\n },\n \"description\": \"Carousel image 2\",\n \"headline\": \"Title for the image 2\",\n \"id\": 2\n },\n {\n \"image_url\": \"https://useinsider.jpg\",\n \"deep_links\": {\n \"your_deeplink_key\": \"value3\"\n },\n \"description\": \"Carousel image 3\",\n \"headline\": \"Title for the image 3\",\n \"id\": 3\n }\n ]\n },\n \"camp_id\": 1,\n \"camp_name\": \"New arrivals\",\n \"title\": \"Check out our newest items\",\n \"message\": \"Place your order while stocks last\",\n \"image_url\": \"https://useinsider.jpg\",\n \"ttl\": 1,\n \"check_optin\": true,\n \"ios\": {\n \"thread-id\": 13,\n \"badge\": 1,\n \"deliver_silently\": true,\n \"mutable-content\": true,\n \"sound\": \"sound_check\",\n \"content-available\": true,\n \"deep_link\": {\n \"ins_dl_internal\": \"https://www.deeplink.useinsider\"\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://mobile.useinsider.com/api/v2/notification/user","protocol":"https","host":["mobile","useinsider","com"],"path":["api","v2","notification","user"],"query":[{"key":"","value":null,"type":"text","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 16:14:19 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"182","enabled":true},{"key":"vary","value":"Accept-Encoding","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7ccf121c79cb1ffe-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"successes\": [\n {\n \"INSIDER.birthday\": null,\n \"INSIDER.device_language\": \"en\",\n \"INSIDER.email\": \"sample@useinsider.com\",\n \"INSIDER.language\": \"en_US\",\n \"INSIDER.model\": \"iPhone 11\",\n \"INSIDER.phone_number\": \"+16102362339\",\n \"INSIDER.sdk_version\": \"12.7.3-RN-5.5.0\"\n }\n ],\n \"errors\": {}\n}"}],"_postman_id":"17be6356-3135-4cea-bd39-d262993bcdef"},{"name":"Get Message Center data","id":"5aaeed2e-6ac3-4785-97f9-aff8485bfa18","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INSIDER-API-KEY","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"Email\": \"j.doe@mail.com\"\n },\n \"start_date\": 1633068172,\n \"end_date\": 2143433430,\n \"limit\": 100\n}"},"url":"https://mobile.useinsider.com/api/message_center/v1","description":"

This API allows you to get the push notifications of any type delivered to your users during a defined time interval, including the push notifications delivered in Architect journeys.

\n

Body Parameters

\n

Before sending the request, make sure to replace the values in your request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
identifiersUser's identifier information. Identifiers can be Email, Phone Number, UUID (unique user ID), or a custom identifier. The identifiers need to be written in the mentioned letter cases in the request, while the custom attribute needs to be written in the attribute_name format.ObjectYes
start_dateStart date of the timeline push notifications are delivered within, in timestamp format.IntegerYes
end_dateEnd date of the timeline push notifications are delivered within, in timestamp format.IntegerYes
limitNumber of push notifications you can get in one request. The value can be between1-100.IntegerYes
\n

Sample Body

\n

The following is a sample body to get your message center data.

\n
{\n  \"identifiers\": {\n    \"Email\": \"j.doe@mail.com\"\n  },\n  \"start_date\": 1633068172,\n  \"end_date\": 2143433430,\n  \"limit\": 100\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following sample response returns for a successful request with a limit of 3.

\n
[\n    {\n        \"camp_id\": 650,\n        \"camp_type\": \"Single Push\",\n        \"created_at\": \"2023-01-23T18:10:17Z\",\n        \"deep_links\": {\n            \"Page\": \"Cart\",\n            \"category\": \"insider_int_push\",\n            \"mutable-content\": \"1\"\n        },\n        \"message\": \"This is my message\",\n        \"title\": \"This is my title\",\n        \"variant_id\": 1907\n    },\n    {\n        \"camp_id\": 101,\n        \"camp_type\": \"Recurring Push\",\n        \"created_at\": \"2023-01-18T21:00:21Z\",\n        \"deep_links\": {\n            \"MyKey01\": \"MyValue01\"\n        },\n        \"message\": \"New women's clothing has launched...\",\n        \"title\": \"Don't forget about me!\",\n        \"variant_id\": 898\n    },\n    {\n        \"camp_id\": 132,\n        \"camp_type\": \"Recurring Push\",\n        \"created_at\": \"2023-01-18T21:00:20Z\",\n        \"deep_links\": {\n            \"Page\": \"Cart\",\n            \"MyKey02\": \"MyValue02\"\n        },\n        \"message\": \"Your favorite items are waiting for you. \",\n        \"title\": \"Retail\",\n        \"variant_id\": 1122\n    }\n]\n\n
\n

400 Bad Request

\n

The following sample response returns for a request where the start date is greater than the end date.

\n
bad payload\n\n

400 Bad Request

\n

The following sample response returns for a request where the limit is greater than 100.

\n
limit should be between 1 and 100.\n\n

401 Unauthorized

\n

A request with an invalid API key will return a 401 Unauthorized response.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","message_center","v1"],"host":["mobile","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"23540cb2-3f6c-4003-9aeb-fa2b134e14a7","name":"Request message center pushes","originalRequest":{"method":"POST","header":[{"key":"X-INSIDER-API-KEY","value":"","description":"This key is required to authorize your request.","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"identifiers\": {\n \"Email\": \"{emailAddress]\"\n },\n \"start_date\": 1678727330,\n \"end_date\": 1683824930,\n \"limit\": 3\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.useinsider.com/api/message_center/v1"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 11 May 2023 17:18:23 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"x-envoy-upstream-service-time","value":"18","enabled":true},{"key":"vary","value":"Accept-Encoding","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c5c14b258bb81e2-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"[\n {\n \"camp_id\": 897,\n \"camp_type\": \"Single Push\",\n \"created_at\": \"2023-05-10T19:08:39Z\",\n \"deep_links\": {\n \"key1\": \"value1\"\n },\n \"image_url\": \"https://imageurl.useinsider.com\",\n \"message\": \"This is my message!\",\n \"title\": \"This is my title\",\n \"variant_id\": 1943\n },\n {\n \"camp_id\": 896,\n \"camp_type\": \"Single Push\",\n \"created_at\": \"2023-05-09T22:10:56Z\",\n \"deep_links\": {\n \"key2\": \"value2\"\n },\n \"image_url\": \"https://imageurl.useinsider.com\",\n \"message\": \"This is my great message\",\n \"title\": \"This is my amazing title\",\n \"variant_id\": 1941\n },\n {\n \"camp_id\": 894,\n \"camp_type\": \"Single Push\",\n \"created_at\": \"2023-05-08T23:55:45Z\",\n \"deep_links\": {\n \"key3\": \"value3\"\n },\n \"message\": \"This is my message\",\n \"title\": \"This is my title\",\n \"variant_id\": 1937\n }\n]"}],"_postman_id":"5aaeed2e-6ac3-4785-97f9-aff8485bfa18"},{"name":"Get inapp campaign details","id":"509686f3-84ba-447c-99df-7582c815561b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-KEY","value":"","description":"

This key is required to authorize your request.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"created_between\": {\n \"from\": \"2025-01-16\",\n \"to\": \"2025-04-15\"\n }\n}"},"url":"https://mobile.api.useinsider.com/v1/details/inapp","description":"

This API allows you to retrieve detailed information about your app template campaigns. The campaigns in the App Templates, App Survey, App Template from Push, and Architect journeys can return in the response if available.

\n

You can either:

\n\n

Body Parameters

\n

Before sending the request, make sure to replace the values in your request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData Type
inapp_idThe ID of the app templateInteger
created_betweenThe dates between which the campaigns are createdObject
fromThe start date of the date rangeString
toThe end date of the date rangeString
\n

Sample Body

\n

Before sending the request, make sure to replace the values in your request body. Below is an example for the created_between parameter.

\n
{\n  \"created_between\": {\n    \"from\": \"2025-01-16\",\n    \"to\": \"2025-04-15\"\n  }\n}\n\n
\n

Below is an example for the inapp_id parameter.

\n
{\n  \"inapp_id\": 1434\n}\n
\n

Sample Responses

\n

The following are some example responses you might receive for your request.

\n

200 OK

\n

The following is a sample response for the created_between parameter.

\n
{\n  \"data\": [\n    {\n      \"inapp_id\": 2,\n      \"linked_push_id\": 3,\n      \"linked_push_type\": \"conversion\",\n      \"name\": \"My campaign\",\n      \"created_by\": \"test@useinsider.com\",\n      \"status\": \"passive\",\n      \"is_inapp_from_push\": true,\n      \"is_inapp_from_architect\": false,\n      \"created_at\": \"2025-01-01T15:08:55Z\",\n      \"start_date\": \"2024-01-01T15:08:56Z\",\n      \"updated_at\": \"2023-01-05T15:08:55Z\",\n      \"end_date\": \"2024-01-01T15:08:57Z\",\n      \"variations\": [\n        {\n          \"variation_id\": 1,\n          \"percentage\": 50,\n          \"variation_name\": \"Variant A\",\n          \"type\": \"wheelOfFortune\"\n        },\n        {\n          \"variation_id\": 2,\n          \"percentage\": 50,\n          \"variation_name\": \"Control Group\",\n          \"type\": \"wheelOfFortune\"\n        }\n      ],\n      \"tags\": [\n        \"tagName2\"\n      ]\n    },\n    {\n      \"inapp_id\": 3,\n      \"name\": \"Our campaign\",\n      \"created_by\": \"test@useinsider.com\",\n      \"status\": \"draft\",\n      \"is_inapp_from_push\": false,\n      \"is_inapp_from_architect\": false,\n      \"created_at\": \"2025-01-02T15:08:55Z\",\n      \"start_date\": \"2024-01-01T15:08:56Z\",\n      \"updated_at\": \"2023-01-05T15:08:55Z\",\n      \"end_date\": \"2024-01-01T15:08:57Z\",\n      \"variations\": [\n        {\n          \"variation_id\": 3,\n          \"percentage\": 50,\n          \"variation_name\": \"Variant A\",\n          \"type\": \"wheelOfFortune\"\n        },\n        {\n          \"variation_id\": 4,\n          \"percentage\": 50,\n          \"variation_name\": \"Control Group\",\n          \"type\": \"wheelOfFortune\"\n        }\n      ],\n      \"tags\": [\n        \"tagName3\"\n      ]\n    },\n    {\n      \"inapp_id\": 4,\n      \"journey_id\": 15,\n      \"name\": \"This campaign\",\n      \"created_by\": \"test@useinsider.com\",\n      \"status\": \"active\",\n      \"is_inapp_from_push\": false,\n      \"is_inapp_from_architect\": true,\n      \"created_at\": \"2025-01-03T15:08:55Z\",\n      \"start_date\": \"2024-01-01T15:08:56Z\",\n      \"updated_at\": \"2023-01-05T15:08:55Z\",\n      \"variations\": [\n        {\n          \"variation_id\": 5,\n          \"percentage\": 50,\n          \"variation_name\": \"Variant A\",\n          \"type\": \"wheelOfFortune\"\n        }\n      ]\n    }\n  ]\n}\n\n
\n

The following is a sample response for the inapp_id parameter.

\n
{\n  \"data\": [\n    {\n      \"inapp_id\": 2,\n      \"name\": \"My campaign\",\n      \"linked_push_id\": 3,\n      \"linked_push_type\": \"conversion\",\n      \"created_at\": \"2024-01-01T15:08:55Z\",\n      \"created_by\": \"test@useinsider.com\",\n      \"status\": \"passive\",\n      \"is_inapp_from_push\": true,\n      \"is_inapp_from_architect\": false,\n      \"start_date\": \"2024-01-01T15:08:56Z\",\n      \"end_date\": \"2024-01-01T15:08:57Z\",\n      \"updated_at\": \"2023-01-05T15:08:55Z\",\n      \"variations\": [\n        {\n          \"variation_id\": 1,\n          \"percentage\": 50,\n          \"variation_name\": \"Variant A\",\n          \"type\": \"wheelOfFortune\"\n        },\n        {\n          \"variation_id\": 2,\n          \"percentage\": 50,\n          \"variation_name\": \"Control Group\",\n          \"type\": \"wheelOfFortune\"\n        }\n      ],\n      \"tags\": [\n        \"tagName2\"\n      ]\n    }\n  ]\n}\n
\n

400 Bad Request

\n

he following is a sample response for a request where the API key is missing.

\n
{\n  \"error\": \"No api key provided\"\n}\n\n
\n

400 Bad Request

\n

The following is a sample response for a request where the payload is invalid.

\n
{\n  \"error\": \"invalid request payload\"\n}\n\n
\n

400 Bad Request

\n

The following is a sample response for a request where the required parameter is missing.

\n
{\n  \"error\": \"either 'inapp_id' or 'created_between' must be provided\"\n}\n
\n

400 Bad Request

\n

The following is a sample response for a request where the payload has both parameters while it requires only one.

\n
{\n  \"error\": \"provide either 'inapp_id' or 'created_between', not both\"\n}\n
\n

400 Bad Request

\n

The following is a sample response for a request where the date format is incorrect for the from parameter.

\n
{\n  \"error\": \"invalid date format for 'from'; expected format is YYYY-MM-DD\"\n}\n
\n

400 Bad Request

\n

The following is a sample response for a request where the date format is incorrect for the to parameter.

\n
{\n  \"error\": \"invalid date format for 'to'; expected format is YYYY-MM-DD\"\n}\n
\n

400 Bad Request

\n

The following is a sample response for a request where the to date is not greater than or equal to the from date.

\n
{\n  \"error\": \"'to' date must be after or equal to 'from' date\"\n}\n
\n

400 Bad Request

\n

The following is a sample response for a request where the date range exceeds 90 days.

\n
{\n  \"error\": \"date range must not exceed 90 days\"\n}\n
\n

404 Not Found

\n

The following is a sample response for a request where no inapp is found.

\n
{\n  \"error\": \"inapp not found\"\n}\n
\n

403 Forbidden

\n

The following is a sample response for a request where the API key is invalid.

\n
{\n  \"error\": \"Invalid api key\"\n}\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","details","inapp"],"host":["mobile","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"509686f3-84ba-447c-99df-7582c815561b"},{"name":"Upload FCM certificate","id":"293c82f0-a929-4c5e-ba58-a926fbc0bd8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-API-KEY","value":"1a2b3c4d5e6f","type":"text"}],"body":{"mode":"raw","raw":"{\n \"type\": \"service_account\",\n \"project_id\": \"certificate-id\",\n \"private_key_id\": \"01ab23cd45ef\",\n \"private_key\": \"REDACTED_PRIVATE_KEY_EXAMPLE\\n\",\n \"client_email\": \"firebase-admin-abc123@insider-sdk.iam.gserviceaccount.com\",\n \"client_id\": \"1234567890\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/firebase-admin-abc123-%insider-sdk.iam.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.api.useinsider.com/v1/settings/certificate/firebase","description":"

This API allows you to upload your FCM certificate to Insider without visiting the Inone panel. With this API, you can upload or change your certificate.

\n","urlObject":{"protocol":"https","path":["v1","settings","certificate","firebase"],"host":["mobile","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"293c82f0-a929-4c5e-ba58-a926fbc0bd8b"}],"id":"e742c647-5f61-4519-85c8-cefbb480977a","description":"

With these APIs, you can send bulk, targeted, and advanced app pushes, and get Message Center data.

\n","_postman_id":"e742c647-5f61-4519-85c8-cefbb480977a"},{"name":"SMS APIs","item":[{"name":"Transactional SMS","item":[{"name":"Send transactional Single SMS","id":"83224693-8a3e-42f8-90b1-1427e520c354","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"content\": \"This is SMS body.\",\n \"to\": \"+105555555555\",\n \"callback\": \"http://callback.url\",\n \"sendAt\" : \"2024-03-30T11:30:27Z\",\n \"uniqueArgs\": {\n \"additionalProp1\": \"string\",\n \"additionalProp2\": \"string\",\n \"additionalProp3\": \"string\"\n },\n \"settings\": {\n \"urlExcludeProtocol\": true,\n \"urlShorteningDomain\": \"insdr.io\",\n \"urlShorteningStatus\": true,\n \"urlTrackingStatus\": true,\n \"smartEncoding\": true\n }\n}"},"url":"https://sms.useinsider.com/v1/send","description":"

This API enables you to send targeted transactional SMS to your users. You can trigger these SMS messages once a user takes a specific action on your platform.

\n

You can use transactional SMS messages to:

\n\n

Use Cases

\n

You can send transactional SMS messages for:

\n\n

Body Parameters

\n

You need to use the following parameters in the request body.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
toPhone NumberStringYes
contentContent of the SMSStringYes
unique_argsUnique arguments of transactional SMS used for tracking purposesObjectNo
callbackThe endpoint that you define to receive the webhook events. If the response does not return a 200 (Success) code, the Insider system will respond with \"Callback URL value is not valid\".URLNo
settings.UrlShorteningStatusFor using the URL shortening for status in your messages.BooleanNo
settings.UrlShorteningDomainFor using the URL shortening for your domain in your messages. e.g. insdr.ioStringNo
settings.UrlTrackingStatusFor using the URL click tracking in your messages. If you do not add this parameter to the payload, the default version will not provide usage. If you do not open urlTracking and if you do not have Insider Tag integration on the related link’s webpage you will see clickthrough metric under the analytics page as zero.BooleanNo
settings.UrlExcludeProtocolFor excluding URL protocol (e.g., 'http://' or 'https://')BooleanNo
sendAtSpecifies the desired date and time at which the SMS message should be sent. For example: datetime=2006-01-02T15:04:05Z
This parameter is valid only for Twilio and Sinch partners.
StringNo
\n

SMS Status Callback

\n

The current status of your SMS messages is provided to you through the API URL you specify in the callback parameter while they are being sent. If you don't respond to code between 200 and 300, the system retries the request 10 times. The retry policy process is as follows:

\n\n

Sample Body

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your sms content.

\n
{\n    \"content\": \"This is SMS body.\",\n    \"to\": \"+105555555555\",\n    \"callback\": \"http://callback.url\",\n    \"sendAt\" : \"2024-03-30T11:30:27Z\",\n    \"uniqueArgs\": {\n        \"additionalProp1\": \"string\",\n        \"additionalProp2\": \"string\",\n        \"additionalProp3\": \"string\"\n    },\n    \"settings\": {\n        \"urlShorteningDomain\": \"insdr.io\",\n        \"urlShorteningStatus\": true,\n        \"urlTrackingStatus\": true\n    }\n}\n\n
\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n

Sample Responses

\n

Accepted

\n

This response indicates that your request was successfully completed.

\n
{\n    \"message\": \"Accepted\",\n    \"messageId\": \"sms-a1234567-b123-c123-d123-e123f123456\"\n}\n\n
\n

SMS Sent

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"sent\",\n  \"partCount\": 1\n}\n\n
\n

SMS Delivered

\n

This response indicates that your request was successfully completed.

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"delivered\"\n}\n\n
\n

SMS Undelivered

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"undelivered\",\n  \"reason\": {\n        \"message\": \"Soft Bounce\",\n        \"code\": 1404\n    }\n}\n\n
\n

SMS Dropped

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"failed\",\n  \"reason\": {\n    \"message\": \"Invalid Phone Number\",\n    \"code\": 1500\n  },\n  \"partCount\": 1\n}\n\n
\n

SMS Scheduled

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"scheduled\",\n  \"sendAt\": \"2006-01-02T15:04:05Z\",\n  \"partCount\": 1\n}\n\n
\n

SMS Sent

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"sent\",\n  \"sendAt\": \"2006-01-02T15:04:05Z\",\n  \"partCount\": 1\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["sms","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"83224693-8a3e-42f8-90b1-1427e520c354"},{"name":"Send Transactional Bulk SMS","id":"49dd98a2-58b9-4a29-8920-8883c062fea2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. If needed to test Transactional SMS, please request an API key from Insider team.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+905555555555\",\n \"content\": \"This is SMS body.\",\n \"callback\": \"http://callback.url\",\n \"settings\": {\n \"urlExcludeProtocol\": true,\n \"urlShorteningDomain\": \"insdr.io\",\n \"urlShorteningStatus\": true,\n \"urlTrackingStatus\": true,\n \"smartEncoding\": true\n },\n \"uniqueArgs\": {\n \"additionalProp1\": \"string\",\n \"additionalProp2\": \"string\",\n \"additionalProp3\": \"string\"\n }\n },\n {\n \"phoneNumber\": \"90 (555) 55\",\n \"content\": \"This is SMS body.\",\n \"callback\": \"http://callback.url\",\n \"settings\": {\n \"urlExcludeProtocol\": true,\n \"urlShorteningDomain\": \"insdr.io\",\n \"urlShorteningStatus\": true,\n \"urlTrackingStatus\": true,\n \"smartEncoding\": true \n },\n \"uniqueArgs\": {\n \"additionalProp1\": \"string\",\n \"additionalProp2\": \"string\",\n \"additionalProp3\": \"string\"\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://sms.useinsider.com/v1/sendMultipleMessage","description":"

This API enables you to send targeted transactional SMS to your users. You can trigger these SMS messages once a user takes a specific action on your platform.

\n

You can use transactional SMS messages to:

\n\n

Use Cases

\n

You can send transactional SMS messages for:

\n\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
toPhone NumberStringYes
contentContent of the SMSStringYes
unique_argsUnique arguments of transactional SMS used for tracking purposesObjectNo
callbackThe endpoint that you define to receive the webhook eventsURLNo
settings.UrlShorteningStatusFor using the URL shortening for status in your messages.BooleanNo
settings.UrlShorteningDomainFor using the URL shortening for your domain in your messages. e.g. insdr.ioStringNo
settings.UrlTrackingStatusFor using the URL click tracking in your messages. If you do not add this parameter to the payload, the default version will not provide usage. If you do not open urlTracking and if you do not have Insider Tag integration on the related link’s webpage you will see clickthrough metric under the analytics page as zero.BooleanNo
settings.UrlExcludeProtocolFor excluding URL protocol (e.g., 'http://' or 'https://')BooleanNo
sendAtSpecifies the desired date and time at which the SMS message should be sent. For example: datetime=2006-01-02T15:04:05Z
This parameter is valid only for Twilio and Sinch partners.
StringNo
\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your SMS content. 

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
{\n  \"messages\": [\n    {\n      \"phoneNumber\": \"+905555555555\",\n      \"content\": \"This is SMS body.\",\n      \"callback\": \"http://callback.url\",\n      \"settings\": {\n        \"urlShorteningDomain\": \"insdr.io\",\n        \"urlShorteningStatus\": true,\n        \"urlTrackingStatus\": true\n      },\n      \"uniqueArgs\": {\n        \"additionalProp1\": \"string\",\n        \"additionalProp2\": \"string\",\n        \"additionalProp3\": \"string\"\n      }\n    },\n    {\n      \"phoneNumber\": \"90 (555) 55\",\n      \"content\": \"This is SMS body.\",\n      \"callback\": \"http://callback.url\",\n      \"settings\": {\n        \"urlShorteningDomain\": \"insdr.io\",\n        \"urlShorteningStatus\": true,\n        \"urlTrackingStatus\": true\n      },\n      \"uniqueArgs\": {\n        \"additionalProp1\": \"string\",\n        \"additionalProp2\": \"string\",\n        \"additionalProp3\": \"string\"\n      }\n    }\n  ]\n}\n
\n

Sample Callback Responses

\n

SMS Accepted

\n
{\n    \"message\": \"Accepted\",\n    \"messageIds\": [\n        {\n            \"phoneNumber\": \"+905555555555\",\n            \"messageSid\": \"sms-a1234567-b123-c123-d123-e123f123456\"\n        }\n    ],\n    \"errors\": [\n        {\n            \"field\": \"messages[1].phoneNumber\",\n            \"error\": \"This field must be a valid phone number.\"\n        }\n    ]\n}\n\n
\n

SMS Sent

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"sent\",\n  \"partCount\": 1\n}\n\n
\n

SMS Delivered

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"delivered\"\n}\n\n
\n

SMS Undelivered

\n
{\n  \"id\": \"sms-a1234567-b123-c123-d123-e123f123456\",\n  \"uniqueArgs\": {\n    \"additionalProp1\": \"string\",\n    \"additionalProp2\": \"string\",\n    \"additionalProp3\": \"string\"\n  },\n  \"event\": \"undelivered\",\n  \"reason\": {\n        \"message\": \"Soft Bounce\",\n        \"code\": 1404\n    }\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","sendMultipleMessage"],"host":["sms","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"49dd98a2-58b9-4a29-8920-8883c062fea2"}],"id":"5809920b-5aeb-4994-bdc0-f5d5b5cbf5e4","_postman_id":"5809920b-5aeb-4994-bdc0-f5d5b5cbf5e4","description":""},{"name":"OTP for SMS","item":[{"name":"Create a channel","id":"38887388-5129-40eb-bb79-92b19ce0187a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"sms\",\n \"brandName\": \"YourBrand\"\n}"},"url":"https://verify.useinsider.com/v1/channel/create","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your own websites or apps, you can trigger it on login pages, payment pages, and more.

\n

In this regard, in order to send OTP codes, you must create a channel for your brand just once. Creating a channel, you will have predefined templates for 10 languages by default.

\n

To be able to use the Verify API:

\n
    \n
  1. Both SMS & Transactional SMS Products should be enabled in Insider's InOne Panel.

    \n
  2. \n
  3. SMS Integration should be finalized and you should be able to receive a test message from the Insider's InOnePanel.

    \n
  4. \n
\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. Currently it is SMS only.StringYesoneof:sms
brandNameYour brand name defines your OTP SMS content in pre-defined templates.StringYesmin:3 max:30 characters
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'https://verify.useinsider.com/v1/channel/create' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"sms\",\n    \"brandName\": \"YourBrandName\"\n}'\n\n
\n

Sample Responses

\n

201 CREATED

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field must be one of these:sms\",\n            \"field\": \"channel\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"channel already exists\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","create"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"38887388-5129-40eb-bb79-92b19ce0187a"},{"name":"Update a channel","id":"8183cec6-032e-4119-8a7b-4db08130457f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"sms\",\n \"brandName\": \"YOURBRAND\"\n}"},"url":"https://verify.useinsider.com/v1/channel/update","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your own websites or apps, you can trigger it on login pages, payment pages, and more.

\n

After you create a channel for your brand, you can edit and update it later.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. Currently it is SMS only.StringYesoneof:sms
brandNameYour brand name defines your OTP SMS content in pre-defined templates.StringYesmin:3 max:30 characters
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/channel/update' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"sms\",\n    \"brandName\": \"YourBrand\"\n}'\n\n
\n

Sample Responses

\n

202 ACCEPTED

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field must be one of these:sms\",\n            \"field\": \"channel\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"channel already exists\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","update"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"8183cec6-032e-4119-8a7b-4db08130457f"},{"name":"List OTP templates","id":"6f5fb37c-4623-47e5-8094-f5ff6857e039","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"url":"https://verify.useinsider.com/v1/channel/list","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel.

\n

After you create a channel for your brand, you can list its templates later.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. Currently it is SMS only.StringYesoneof:sms
brandNameYour brand name defines your OTP SMS content in pre-defined templates.StringYesmin:3 max:30 characters
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/template/list' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************'\n\n
\n

Sample Responses

\n

200 OK

\n

This response indicates that your request was successfully completed.

\n
{\n    \"templates\": {\n        \"sms\": [\n            {\n                \"locale\": \"de\",\n                \"text\": \"Ihr {brandName} Bestätigungscode lautet: {code}\"\n            },\n            {\n                \"locale\": \"en\",\n                \"text\": \"Your {brandName} verification code is: {code}\"\n            },\n            {\n                \"locale\": \"es\",\n                \"text\": \"Su código de verificación de {brandName} es: {code}\"\n            },\n            {\n                \"locale\": \"fr\",\n                \"text\": \"Votre code de vérification {brandName} est: {code}\"\n            },\n            {\n                \"locale\": \"it\",\n                \"text\": \"Il tuo codice di verifica {brandName} è: {code}\"\n            },\n            {\n                \"locale\": \"ja\",\n                \"text\": \"あなたの{brandName}確認コードは: {code}です\"\n            },\n            {\n                \"locale\": \"nl\",\n                \"text\": \"Uw {brandName} verificatiecode is: {code}\"\n            },\n            {\n                \"locale\": \"pt\",\n                \"text\": \"Seu código de verificação {brandName} é: {code}\"\n            },\n            {\n                \"locale\": \"ru\",\n                \"text\": \"Ваш проверочный код {brandName}: {code}\"\n            },\n            {\n                \"locale\": \"tr\",\n                \"text\": \"{brandName} doğrulama kodunuz: {code}\"\n            }\n        ]\n    }\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","list"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6f5fb37c-4623-47e5-8094-f5ff6857e039"},{"name":"Update OTP templates","id":"e46c66c3-bfd0-40e2-8258-c00468cf19d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"sms\",\n \"locale\": \"en\",\n \"text\": \"Your {brandName} verification code is: {code}\"\n}"},"url":"https://verify.useinsider.com/v1/channel/update","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel.

\n

After you create a channel for your brand, you can edit and update its templates later.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. Currently it is SMS only.StringYesoneof:sms
localeDetermines the language/locale in which the OTP code message will be sent.StringYesoneof:de en es fr it ja nl pt ru tr
textDefines the template text that will be used for generating OTP code messages.StringYesmax:100
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/template/update' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"sms\",\n    \"locale\": \"en\",\n    \"text\": \"Your {brandName} verification code is: {code}\"\n}'\n\n
\n

Sample Responses

\n

202 ACCEPTED

\n

This response indicates that your request was successfully completed.

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field is required\",\n            \"field\": \"text\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

409 CONFLICT

\n
{\n    \"errors\": [\n        {\n            \"message\": \"no changes detected\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVICE ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","update"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e46c66c3-bfd0-40e2-8258-c00468cf19d0"},{"name":"Generate OTP codes","id":"c0439909-d233-407d-b123-2df10f222d86","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"sms\",\n \"to\": \"+905XXXXXXXXX\"\n}"},"url":"https://verify.useinsider.com/v1/channel/generate","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your own websites or apps, you can trigger it on login pages, payment pages, and more.

\n

After you create your channel for your brand and update the templates, you need to perform the generate action for your OTP.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. Currently it is SMS only.StringYesoneof:sms
toSpecifies the destination phone number in E.164 format to which the OTP code will be sent.StringYese164
localeDetermines the language/locale in which the OTP code message will be sent.StringNo (Default: en)oneof:de en es fr it ja nl pt ru tr
ttlSpecifies the Time-To-Live (TTL) duration for the OTP code, i.e., the time window within which the OTP code is valid. Measured in seconds.IntegerNo (Default: 180)min:60 max:600
code-lengthSpecifies the length of the OTP code to be generated. The code length must be between 4 and 8 digits.IntegerNo (Default: 4)min:4 max:8
custom-codeIf provided, allows you to specify a custom OTP code instead of generating one.IntegerNomin:1000 max:99999999
max-attemptsSets the maximum number of allowed OTP verification attempts. If the verification fails after reaching this limit, further attempts might be denied.IntegerNo (Default: 3)min:1 max:10
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'https://verify.useinsider.com/v1/generate' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"sms\",\n    \"to\": \"+905XXXXXXXXX\"\n}'\n\n
\n

Sample Responses

\n

202 ACCEPTED

\n

This response indicates that your request was successfully completed.

\n
{\n    \"channel\": \"sms\",\n    \"dateCreated\": \"2023-07-28T14:40:41Z\",\n    \"dateUpdated\": \"2023-07-28T14:40:41Z\",\n    \"locale\": \"en\",\n    \"maxAttempts\": 3,\n    \"ttl\": 180\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"channel information must be a valid phone number for sms\",\n            \"field\": \"to\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","generate"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c0439909-d233-407d-b123-2df10f222d86"},{"name":"Verify OTP codes","id":"486830d8-24f8-4ac2-accd-d629cd6ca9b9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"to\": \"+905XXXXXXXXX\",\n \"code\": 1234\n}"},"url":"https://verify.useinsider.com/v1/check","description":"

The Verify API enables you to generate, send, and verify OTP codes for the SMS channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your own websites or apps, you can trigger it on login pages, payment pages, and more.

\n

After you create your channel for your brand and update the templates, you need to perform the verify action for your OTP.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
toSpecifies the destination phone number in E.164 format to which the OTP code will be sent.StringYese164
codeRepresents the OTP code provided for verification. The code length must be between 4 and 8 digits.IntegerNo (Default: 4)min:4 max:8
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/check' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data \n    \"to\": \"+905XXXXXXXXX\",\n    \"code\": 1234\n}'\n\n
\n

Sample Responses

\n

202 ACCEPTED

\n

This response indicates that your request was successfully completed.

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 BAD REQUEST

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid code\"\n        }\n    ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

404 NOT FOUND

\n
{\n    \"errors\": [\n        {\n            \"message\": \"code not found\",\n            \"field\": \"code\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

429 TOO MANY REQUESTS

\n
{\n    \"errors\": [\n        {\n            \"message\": \"maximum attempts exceeded\",\n            \"field\": \"code\"\n        }\n    ]\n}\n\n
\n

500 INTERNAL SERVER ERROR

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","check"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"486830d8-24f8-4ac2-accd-d629cd6ca9b9"}],"id":"eb556608-f363-4bec-a0df-4237fb14719d","_postman_id":"eb556608-f363-4bec-a0df-4237fb14719d","description":""}],"id":"507c8912-2010-4fdd-b71b-f674c148493a","description":"

With this API, you can send targeted transactional SMS to your users.

\n","_postman_id":"507c8912-2010-4fdd-b71b-f674c148493a"},{"name":"WhatsApp APIs","item":[{"name":"Transactional API","item":[{"name":"Send transactional WhatsApp template message","id":"68b1b6d8-f6c9-41a6-b539-fb1c9f108b12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.tink5Fi************.UZsBeR8**************************0rXedDKWc5YE","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"{{TEMPLATE_NAME}}\",\n \"language\": {\n \"code\": \"{{TEMPLATE_LANGUAGE_CODE}}\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{PARAMETER_VALUE}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"0\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"1\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"1\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"2\"\n }\n ]\n }\n ]\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

Transactional WhatsApp API enables you to send targeted transactional WhatsApp messages to your users. You can trigger these WhatsApp messages once a user takes a specific action on your platform.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “template” for this message type.StringYes
nameTemplate name to be sentStringYes
languageObjectYes
codeTemplate languageStringYes
message variable componentsArrayYes
typebodyStringYes
parametersArrayYes
typetextStringYes
textParameter valueStringYes
button componentsArrayYes
typebuttonStringYes
sub_typeQuick_reply, URL, PHONE_NUMBERStringYes
indexStringYes
parametersArrayYes
typepayloadStringYes
payloadPayload valueStringYes
\n

Note: Meta doesn't support adding emojis on button ID.

\n

Sample Body

\n

The following is a sample body to send transactional WhatsApp messages.

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.*****************' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"{{TEMPLATE_NAME}}\",\n                    \"language\": {\n                        \"code\": \"{{TEMPLATE_LANGUAGE_CODE}}\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"body\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"{{PARAMETER_VALUE}}\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"1\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"1\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"2\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you want to use CTA (Call To Action), you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'x-ins-auth-key: INS.kjQu-+bL4HpeZqvgr1j0.d4IVgHl9GcE+_eaKxNA3P8M3q8-emrO3-zalg9GSF29mK+Jz5k' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"mert_masterfile_media_with_button\",\n                    \"language\": {\n                        \"code\": \"en\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://inshoppingcart.com/seleniumautomation/wp-content/uploads/2018/08/cap-2.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com?abc=sha\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"url\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you don't want to use CTA, you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.tiNlcL284J8dwCpfoqdR.gpyLwFG-0fSHPS9+kZYNsI-D2IWFNjlaRDlXJrZjx2_ZPTP37I' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"7_image_header_no_button_copy\",\n                    \"language\": {\n                        \"code\": \"fi\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://image.useinsider.com/vikingsankara/media/whatsapp-business/11521/83rbBaWO7H63VmACSXiZ1716506118.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"shahla\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"68b1b6d8-f6c9-41a6-b539-fb1c9f108b12"},{"name":"Send transactional WhatsApp text message","id":"6f75f19d-1090-45a8-9adf-a0042b64bc2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"text\",\n \"text\": {\n \"preview_url\": true,\n \"body\": \"Example Message\"\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

Overview

\n

This API enables you to send targeted transactional WhatsApp messages to your users. You can send only text content in this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single requestArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “text” for this message type.StringYes
textThis object contains the properties of the text message.ObjectYes
preview_urlAllows for URL previews in text messages. This field is optional if not including a URL in your message. Values: false (default), true.BooleanNo
bodyThe text message's text can contain URLs that begin with http:// or https:// and formatting. The maximum length is 4096 characters.StringYes
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**********************' \\\n--data '{\n   \"messages\": [\n       {\n           \"phoneNumber\": \"+1**********\",\n           \"message\": {\n               \"type\": \"text\",\n               \"text\": {\n                   \"preview_url\": true,\n                   \"body\": \"Example Message\"\n               }\n           }\n       }\n   ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6f75f19d-1090-45a8-9adf-a0042b64bc2e"},{"name":"Send transactional WhatsApp media message (Image)","id":"fe3c36ca-f456-45f9-a86b-21b36d6364fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"image\",\n \"image\": {\n \"link\": \"{{IMAGE_URL}}\",\n \"caption\": \"Media Message (Image)\"\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

This API enables you to send targeted transactional WhatsApp messages to your users. You can send media and text content in this message type

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single requestArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “image” for this message type.StringYes
imageA media object of type image. Captions not supported when used in a media template.ObjectYes
linkThe protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Supported file types are image/jpeg, image/png. Max: 5 MB.URLYes if there is no id.
idThe media object ID. Do not use this field when the message type is set to text.URLYes if there is no link.
captionDescribes the specified image media.StringNo
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fe3c36ca-f456-45f9-a86b-21b36d6364fe"},{"name":"Send transactional WhatsApp media message (Document)","id":"12882f68-0a59-4038-a1e5-05f27ee102cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"document\",\n \"audio\": {\n \"link\": \"{{DOCUMENT_LINK}}\",\n \"caption\": \"{{DOCUMENT_DESCRIPTION}}\",\n \"filename\": \"{{DOCUMENT_NAME}}\"\n\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

This API enables you to send targeted transactional WhatsApp messages to your users. You can send only document content in this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single requestArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “document” for this message type.StringYes
documentA media object of type document.ObjectYes
link

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Supported file types:

- text/plain, 
- application/pdf, 
- application/vnd.ms-powerpoint, 
- application/msword, 
- application/vnd.ms-excel,
- application/vnd.openxmlformats-officedocument.wordprocessingml.document,
- application/vnd.openxmlformats-officedocument.presentationml.presentation,
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Max 100 MB.

URLYes if there is no id.
id

The media object ID. Do not use this field when the message type is set to text.

URLYes if there is no link.
captionDescribes the specified image media.StringNo
filenameName of the file.
StringNo
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[{"disabled":true,"key":"Content","value":""}],"variable":[]}},"response":[],"_postman_id":"12882f68-0a59-4038-a1e5-05f27ee102cf"},{"name":"Send transactional WhatsApp media message (Location)","id":"85f8a563-849e-4c61-a1b6-ba6f885480f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"location\",\n \"location\": {\n \"longitude\": \"11.1111111\",\n \"latitude\": \"11.1111111\",\n \"name\": \"{{ADDRESS_NAME}}\",\n \"address\": \"{{FULL_ADDRESS}}\"\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

This API enables you to send targeted transactional WhatsApp messages to your users. You can send media and text content in this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request
ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “location” for this message type.StringYes
locationA location object of type location.
ObjectYes
longitude


Longitude of the location.

URLYes if there is no id.
Latitude


Latitude of the location

URLYes if there is no link.
nameName of the location.
StringNo
addressAddress of the location. Only displayed if name is present.
StringNo
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"85f8a563-849e-4c61-a1b6-ba6f885480f1"},{"name":"Send transactional WhatsApp message with button reply","id":"ff13b8d3-ebf2-4ff6-9f11-c6a637f8569c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"interactive\",\n \"interactive\": {\n \"type\": \"button\",\n \"header\": {\n \"type\": \"text\",\n \"text\": \"HEADER_TEXT\"\n },\n \"body\": {\n \"text\": \"BUTTON_TEXT\"\n },\n \"action\": {\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"reply\": {\n \"id\": \"UNIQUE_BUTTON_ID_1\",\n \"title\": \"BUTTON_TITLE_1\"\n }\n },\n {\n \"type\": \"reply\",\n \"reply\": {\n \"id\": \"UNIQUE_BUTTON_ID_2\",\n \"title\": \"BUTTON_TITLE_2\"\n }\n }\n ]\n }\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/send","description":"

This API enables you to send targeted transactional WhatsApp messages to your users. You can send media and text content in this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single requestArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “interactive” for this message type.StringYes
interactiveAn interactive object. The components of each interactive object generally follow a consistent pattern: header, body, footer, and action.ObjectYes
type (in interactive)Must be a “button” for this message type.StringYes
header




ObjectNo
type

The header type you would like to use. Supported values are:

- text: Used for List Messages, Reply Buttons, and Multi-Product Messages.
- video: Used for Reply Buttons.
- image: Used for Reply Buttons.
- document: Used for Reply Buttons.

StringYes
textText for the header. Formatting allows emojis, but not markdown. Maximum length is 60 characters.StringYes if the type is text.
imageContains the media object for this imageStringYes if the type is image.
linkRequired when the type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The file types are image/jpeg, image/png. Max 5 MB.StringYes if there is no id.
id

Required when the type is audio, document, image, sticker, or video and you are not using a link.

URLYes is there is no link.
captionDescribes the specified image, document, or  video media. Do not  use with audio or sticker media.StringNo
audio
ObjectYes if the type is audio.
linkRequired when the type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The file types are audio/mp4, audio/mpeg, audio/amr, audio/ogg. Max 16 MB.URLYes if there is no id.
idRequired when the type is audio, document, image, sticker, or video and you are not using a link.URLYes is there is no link.
document
ObjectYes is the type is document.
link

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The File Types are:

- text/plain, 
- application/pdf, 
- application/vnd.ms-powerpoint, 
- application/msword, 
- application/vnd.ms-excel,
- application/vnd.openxmlformats-officedocument.wordprocessingml.document,
- application/vnd.openxmlformats-officedocument.presentationml.presentation,
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Max 100 MB.

URLYes if there is no id.
idRequired when the type is audio, document, image, sticker, or video and you are not using a link.
URLYes if there is no link.
captionDescribes the specified image, document, or video media. Do not use with audio or sticker media.
StringNo
filenameDescribes the filename for the specific document. Use only with document media.
StringNo
video
ObjectYes if the type is video.
linkRequired when type is audio, document, image, sticker, or video and you are not using an uploaded media ID. File Types are video/mp4, video/3gp. Max 16 MB.
URLYes if there is no id.
idRequired when type is audio, document, image, sticker, or video and you are not using a link.
URLYes if there is no link.
captionDescribes the specified image, document, or video media. Do not use with audio or sticker media.
StringNo
bodyThe body object contains the following field: textstring – Required if body is present. The content of the message. Emojis and markdown are supported. Maximum length: 1024 characters
ObjectYes
textThe content of the message.StringYes
action
ObjectYes
buttonsYou can use Min:1, Max:3 buttons.ArrayYes
typeMust be a “reply” for this message type.
StringYes
reply
ObjectYes
idId of the button.
StringYes
titleTitle of the button
StringYes
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n
\n

401 Unauthorized

\n

If you use the wrong key, you will see the following error.

\n
{\n    \"message\": \"unauthorized\"\n}\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ff13b8d3-ebf2-4ff6-9f11-c6a637f8569c"},{"name":"Send Transactional WhatsApp Messages with OAuth 2.0","id":"cf8b4ddb-b193-4aaa-8b7b-f0c96789708d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n \"from\": \"+901212121212\",\n \"messages\": [{\n \"phone_number\": \"+901111111111\",\n \"user_id\": \"user-uuid-123\",\n \"message\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"welcome_message\",\n \"language\": {\n \"code\": \"tr\"\n },\n \"components\": [{\n \"type\": \"body\",\n \"parameters\": [{\n \"type\": \"text\",\n \"text\": \"Ahmet\"\n }]\n }]\n }\n }\n }]\n}","options":{"raw":{"language":"json"}}},"url":"https://gw.useinsider.com/api/wa/v2/transactional/messages/send","description":"

WhatsApp Transactional API v2 is a REST API that enables your systems to send transactional messages through the WhatsApp Business Platform.

\n

Note: To send transactional WhatsApp messages using OAuth 2.0, you must first generate an OAuth 2.0 credential. For step-by-step instructions, refer to OAuth 2.0 Credentials.

\n

Note: Before sending Transactional WhatsApp template messages, make sure you create your template in InOne first. Refer to Create a WhatsApp Business Standard Template on InOne for step-by-step guidance.

\n

Refer to the visual below for an example of how a transactional WhatsApp template message is displayed.

\n\n\n

Sample Request

\n
{\n    \"from\": \"+905551234567\",\n    \"messages\": [{\n        \"phone_number\": \"+905559876543\",\n        \"user_id\": \"user-uuid-123\",\n        \"message\": {\n            \"type\": \"template\",\n            \"template\": {\n                \"name\": \"welcome_message\",\n                \"language\": {\n                    \"code\": \"tr\"\n                },\n                \"components\": [{\n                    \"type\": \"body\",\n                    \"parameters\": [{\n                        \"type\": \"text\",\n                        \"text\": \"Ahmet\"\n                    }]\n                }]\n            }\n        }\n    }]\n}\n\n
\n

Main Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
fromstringYesSender’s WhatsApp phone number (in E.164 format)
messagesarrayYesList of messages to be sent (minimum 1 message)
url_shortener_configobjectNoURL shortening settings
url_shortener_config.statusbooleanNoEnable/disable URL shortening
url_shortener_config.domainstringNoDomain name for shortening
unique_argsobjectNoCustom parameters (key–value map)
remove_tracking_paramsbooleanNoRemove tracking parameters
\n

Messages Array Parameters

\n

Each element in the messages array contains:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
phone_numberstringYesThe recipient's phone number in international E.164 format (e.g., +905551234567).
user_idstringNoA unique identifier for the user within the partner's system, used for cross-platform tracking.
messageobjectYesThe core payload containing the message content (see Message Object details below).
reply_typestringNoDefines the automated response category. Values: first, second, third, other.
unique_argsobjectNoA key–value map for passing custom metadata specific to this individual message.
\n

Message Object Structure

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
typestringYesMessage type: template, text, image, video, document, audio, location, sticker, interactive.
templateobjectConditionalTemplate message (required if type=template).
textobjectConditionalText message (required if type=text).
.........Other media types follow the same logic.
contextobjectNoInformation about the message being replied to (reply-to message).
\n

Template Messages

\n

Used to send template messages. Templates must be pre-created and approved in the Meta Business Manager.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
namestringYesTemplate name (must be defined in Meta).
languageobjectYesTemplate language settings.
language.codestringYesLanguage code (ISO 639-1, e.g., tr, en, ar).
language.policystringNoLanguage policy: deterministic (default) or fallback.
componentsarrayNoTemplate components (for parameters).
\n

Component Types

\n

Templates can include the following component types:

\n

Header Component

\n

The header component corresponds to the template's header section.

\n
{\n    \"type\": \"header\",\n    \"parameters\": [{\n        \"type\": \"text\",\n        \"text\": \"Değişken başlık değeri\"\n    }]\n} \n\n
\n

To use a media header, you can use the request below.

\n
{\n    \"type\": \"header\",\n    \"parameters\": [{\n        \"type\": \"image\",\n        \"image\": {\n            \"link\": \"https://example.com/image.jpg\"\n        }\n    }]\n}\n\n
\n
\n

Header parameter types can be text, image, video and document.

\n
\n

Body Component

\n

Body component is the main text section of the template.

\n
{\n    \"type\": \"body\",\n    \"parameters\": [{\n        \"type\": \"text\",\n        \"text\": \"Ahmet Yılmaz\"\n    }, {\n        \"type\": \"text\",\n        \"text\": \"12345\"\n    }]\n}\n\n
\n

Button Component

\n

The main text section of the template.

\n
{\n    \"type\": \"button\",\n    \"sub_type\": \"url\",\n    \"index\": \"0\",\n    \"parameters\": [{\n        \"type\": \"text\",\n        \"text\": \"PROMO2024\"\n    }]\n}\n\n
\n

To add buttons to the template, use the request below.

\n
{\n    \"type\": \"button\",\n    \"sub_type\": \"url\",\n    \"index\": \"0\",\n    \"parameters\": [{\n        \"type\": \"text\",\n        \"text\": \"PROMO2024\"\n    }]\n}\n\n
\n

To add CTA (Call-to-Action) links to your template, use the request below.

\n
{\n    \"type\": \"button\",\n    \"sub_type\": \"url\",\n    \"index\": \"0\",\n    \"parameters\": [{\n        \"type\": \"text\",\n        \"cta_link\": \"?code=SUMMER2024\"\n    }]\n}\n\n
\n
\n

Button sub_types are url and quick_reply.

\n
\n

Carousel Component

\n

Carousel template (product catalog cards).

\n
{\n  \"type\": \"carousel\",\n  \"cards\": [\n    {\n      \"card_index\": 0,\n      \"components\": [\n        {\n          \"type\": \"header\",\n          \"parameters\": [\n            {\n              \"type\": \"image\",\n              \"image\": {\n                \"link\": \"https://example.com/product1.jpg\"\n              }\n            }\n          ]\n        },\n        {\n          \"type\": \"body\",\n          \"parameters\": [\n            {\n              \"type\": \"text\",\n              \"text\": \"Ürün 1 Adı\"\n            },\n            {\n              \"type\": \"text\",\n              \"text\": \"999.99 TL\"\n            }\n          ]\n        },\n        {\n          \"type\": \"button\",\n          \"sub_type\": \"url\",\n          \"index\": \"0\",\n          \"parameters\": [\n            {\n              \"type\": \"text\",\n              \"text\": \"product-1-slug\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"card_index\": 1,\n      \"components\": [\n        {\n          \"type\": \"header\",\n          \"parameters\": [\n            {\n              \"type\": \"image\",\n              \"image\": {\n                \"link\": \"https://example.com/product2.jpg\"\n              }\n            }\n          ]\n        },\n        {\n          \"type\": \"body\",\n          \"parameters\": [\n            {\n              \"type\": \"text\",\n              \"text\": \"Ürün 2 Adı\"\n            },\n            {\n              \"type\": \"text\",\n              \"text\": \"1299.99 TL\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n\n
\n
\n

Carousel template can contain a maximum of 10 cards (card_index: 0-9).

\n
\n

Limited Time Offer (LTO) Component

\n
{\n  \"type\": \"limited_time_offer\",\n  \"parameters\": [\n    {\n      \"type\": \"limited_time_offer\",\n      \"limited_time_offer\": {\n        \"expiration_time_ms\": 1640000000000\n      }\n    }\n  ]\n}\n\n
\n

Coupon Code Component

\n
{\n  \"type\": \"button\",\n  \"sub_type\": \"copy_code\",\n  \"index\": \"0\",\n  \"parameters\": [\n    {\n      \"type\": \"coupon_code\",\n      \"coupon_code\": \"SUMMER2024\"\n    }\n  ]\n}\n\n
\n

Flow Button Component (For WhatsApp Flows)

\n
{\n  \"type\": \"button\",\n  \"sub_type\": \"flow\",\n  \"index\": \"0\",\n  \"parameters\": [\n    {\n      \"type\": \"action\",\n      \"action\": {\n        \"flow_token\": \"unique-flow-token\",\n        \"flow_action_data\": {\n          \"user_id\": \"12345\",\n          \"product_id\": \"SKU-123\"\n        }\n      }\n    }\n  ]\n}\n\n
\n

Text Message

\n

Used to send plain text messages (typically for conversational use).

\n

Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
bodystringYesMessage text (maximum 4096 characters).
preview_urlbooleanNoDisplay URL preview (default: false).
\n
{\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"Merhaba! Siparişiniz hazırlanıyor.\",\n    \"preview_url\": false\n  }\n}\n\n
\n

Image Message

\n

Used to send images.

\n

Image Object

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalImage URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
captionstringNoImage caption (maximum 1024 characters).
\n

Image Message with Link

\n
{\n  \"type\": \"image\",\n  \"image\": {\n    \"link\": \"https://example.com/image.jpg\",\n    \"caption\": \"Product Image\"\n  }\n}\n\n
\n

Image Message with Media ID

\n
{\n  \"type\": \"image\",\n  \"image\": {\n    \"id\": \"1234567890\",\n    \"caption\": \"Uploaded Image\"\n  }\n}\n\n
\n

Supported formats for image messages are JPEG, PNG. The maximum size is 5 MB.

\n
\n

Video Message

\n

Used to send videos.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalVideo URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
captionstringNoVideo caption (maximum 1024 characters).
\n
{\n  \"type\": \"video\",\n  \"video\": {\n    \"link\": \"https://example.com/video.mp4\",\n    \"caption\": \"Product video\"\n  }\n}\n\n
\n
\n

Supported formats for video messages are MP4 and 3GPP. The maximum size is 16 MB.

\n
\n

Document Message

\n

Used to send documents/files.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalDocument URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
filenamestringNoFilename (to be displayed).
captionstringNoDocument caption (maximum 1024 characters).
\n
{\n  \"type\": \"document\",\n  \"document\": {\n    \"link\": \"https://example.com/invoice.pdf\",\n    \"filename\": \"Fatura-12345.pdf\",\n    \"caption\": \"Sipariş faturanız\"\n  }\n}\n\n
\n
\n

Supported formats for document messages are PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT and CSV. The maximum size is 100 MB.

\n
\n

Audio Message

\n

Used to send audio files.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalAudio URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
\n
{\n  \"type\": \"audio\",\n  \"audio\": {\n    \"link\": \"https://example.com/audio.mp3\"\n  }\n}\n\n
\n
\n

Supported formats for audio messages are AAC, M4A, AMR, MP3 and OGG OPUS. The maximum size is 16 MB.

\n
\n

Location Message

\n

Used to send location/map coordinates.

\n

Location Object

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
latitudestringYesLatitude coordinate.
longitudestringYesLongitude coordinate.
namestringNoLocation name.
addressstringNoLocation address.
\n
{\n  \"type\": \"location\",\n  \"location\": {\n    \"latitude\": \"41.0082\",\n    \"longitude\": \"28.9784\",\n    \"name\": \"İstanbul\",\n    \"address\": \"İstanbul, Türkiye\"\n  }\n}\n\n
\n

Sticker Message

\n

Used to send stickers.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalSticker URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
\n
{\n  \"type\": \"sticker\",\n  \"sticker\": {\n    \"link\": \"https://example.com/sticker.webp\"\n  }\n}\n\n
\n
\n

Supported format for sticker messages is WebP (static or animated) The maximum size is 100 KB (static), 500 KB (animated).

\n
\n

Interactive Message

\n

Used to send interactive messages (buttons, lists, products, flows).

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
typestringYesInteractive type: button, list, product, product_list, flow, catalog_message, cta_url.
headerobjectNoMessage header.
bodyobjectYesMessage main body.
body.textstringYesMessage text (maximum 1024 characters).
footerobjectNoMessage footer.
footer.textstringYesFooter text (maximum 60 characters).
actionobjectYesInteractive action definition.
\n

Interactive Header

\n
{\n  \"header\": {\n    \"type\": \"text\",\n    \"text\": \"Başlık metni\"\n  }\n}\n\n
\n

Media Header

\n
{\n  \"header\": {\n    \"type\": \"image\",\n    \"image\": {\n      \"link\": \"https://example.com/header.jpg\"\n    }\n  }\n}\n\n
\n
\n

Header types can be text, image, video, document.

\n
\n

Interactive Action Types

\n
    \n
  1. Button Action - Reply buttons (maximum 3 buttons)
  2. \n
\n
{\n  \"action\": {\n    \"buttons\": [\n      {\n        \"type\": \"reply\",\n        \"reply\": {\n          \"id\": \"btn_yes\",\n          \"title\": \"Evet\"\n        }\n      },\n      {\n        \"type\": \"reply\",\n        \"reply\": {\n          \"id\": \"btn_no\",\n          \"title\": \"Hayır\"\n        }\n      }\n    ]\n  }\n}\n\n
\n
\n

Button title can be a maximum 20 characters.

\n
\n
    \n
  1. List Action - Selection list (maximum 10 rows)
  2. \n
\n
{\n  \"action\": {\n    \"button\": \"Seçenekleri Gör\",\n    \"sections\": [\n      {\n        \"title\": \"Kategori 1\",\n        \"rows\": [\n          {\n            \"id\": \"row_1\",\n            \"title\": \"Seçenek 1\",\n            \"description\": \"Seçenek açıklaması\"\n          },\n          {\n            \"id\": \"row_2\",\n            \"title\": \"Seçenek 2\",\n            \"description\": \"Diğer seçenek\"\n          }\n        ]\n      }\n    ]\n  }\n}\n\n
\n
    \n
  1. Product Action - Single product display
  2. \n
\n
{\n  \"action\": {\n    \"catalog_id\": \"123456789\",\n    \"product_retailer_id\": \"SKU-12345\"\n  }\n}\n\n
\n
    \n
  1. { \"action\": { \"catalog_id\": \"123456789\", \"sections\": [ { \"title\": \"Öne Çıkan Ürünler\", \"product_items\": [ { \"product_retailer_id\": \"SKU-001\" }, { \"product_retailer_id\": \"SKU-002\" } ] } ] }}JSONCopy

    \n
  2. \n
  3. { \"action\": { \"name\": \"flow\", \"parameters\": { \"flow_message_version\": \"3\", \"flow_token\": \"unique-token\", \"flow_id\": \"123456789\", \"flow_cta\": \"Form Doldur\", \"flow_action\": \"navigate\", \"flow_action_payload\": { \"screen\": \"FORM_SCREEN\", \"data\": { \"user_id\": \"12345\" } } } }}JSONCopy

    \n
  4. \n
  5. { \"action\": { \"name\": \"cta_url\", \"parameters\": { \"display_text\": \"Web Siteyi Ziyaret Et\", \"url\": \"https://example.com\" } }}JSONCopy

    \n
  6. \n
  7. { \"action\": { \"name\": \"catalog_message\", \"parameters\": { \"thumbnail_product_retailer_id\": \"SKU-FEATURED\" } }}JSONCopy

    \n
  8. \n
  9. { \"action\": { \"cards\": [ { \"card_index\": 0, \"type\": \"carousel\", \"header\": { \"type\": \"image\", \"image\": { \"link\": \"https://example.com/product1.jpg\" } }, \"body\": { \"text\": \"Ürün 1 - 999 TL\" }, \"action\": { \"name\": \"cta_url\", \"parameters\": { \"display_text\": \"Satın Al\", \"url\": \"https://example.com/product/1\" } } } ] }}JSONCopy

    \n
  10. \n
\n

Context Object

\n

Used to reply to a specific message.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeRequiredDescription
linkstringConditionalSticker URL (HTTP/HTTPS, mandatory if id is missing).
idstringConditionalUploaded media ID (mandatory if link is missing).
\n
{\n  \"type\": \"text\",\n  \"context\": {\n    \"message_id\": \"wamid.HBgLOTA5NTU1MTIzNDU2NxUCABIYIDNBMzQwRjg2...\"\n  },\n  \"text\": {\n    \"body\": \"Teşekkür ederiz!\"\n  }\n}\n\n
\n

Sample Responses

\n

Response Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterTypeDescription
keysarrayUnique keys generated for each message. Used in webhook callbacks.
\n

200 OK - Success Response

\n
{\n  \"keys\": [\n    \"whatsapp-550e8400-e29b-41d4-a716-446655440000\"\n  ]\n}\n\n
\n

400 Bad Request

\n
{\n  \"message\": \"Failed to validate request.\",\n  \"error\": {\n    \"message\": \"Failed to validate request.\",\n    \"code\": \"2001\"\n  }\n}\n\n
\n

400 Bad Request - Validation

\n
{\n  \"message\": \"Failed to validate request.\",\n  \"error\": {\n    \"message\": \"Failed to validate request.\",\n    \"code\": \"2002\"\n  }\n}\n\n
\n

400 Bad Request - Send Failed

\n
{\n  \"message\": \"Message could not be sent.\",\n  \"detail\": \"There is no active provider.\",\n  \"error\": {\n    \"message\": \"Message could not be sent.\",\n    \"code\": \"2003\"\n  }\n}\n\n
\n

Error Codes

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2001400The request body could not be decoded.
2002400The request body failed validation.
2003400The message could not be sent due to a provider error or an internal system issue.
\n

Media Operation Errors

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2017400Provider not found or upload error
2018400Error retrieving media information
2019400Media download error
INVALID_FILE400Invalid file or file could not be read
\n

System Errors

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
HTTP StatusDescription
503 Service UnavailableThe system is currently in maintenance mode
\n
","urlObject":{"protocol":"https","path":["api","wa","v2","transactional","messages","send"],"host":["gw","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Sender’s WhatsApp phone number (in E.164 format)

\n","type":"text/plain"},"key":"from","value":null},{"disabled":true,"description":{"content":"

List of messages to be sent (minimum 1 message)

\n","type":"text/plain"},"key":"messages","value":null},{"disabled":true,"description":{"content":"

URL shortening settings

\n","type":"text/plain"},"key":"url_shortener_config","value":null},{"disabled":true,"description":{"content":"

Enable/disable URL shortening

\n","type":"text/plain"},"key":"url_shortener_config.status","value":null},{"disabled":true,"description":{"content":"

Domain name for shortening

\n","type":"text/plain"},"key":"url_shortener_config.domain","value":null},{"disabled":true,"description":{"content":"

Custom parameters (key–value map)

\n","type":"text/plain"},"key":"unique_args","value":null},{"disabled":true,"description":{"content":"

Remove tracking parameters

\n","type":"text/plain"},"key":"remove_tracking_params","value":null}],"variable":[]}},"response":[],"_postman_id":"cf8b4ddb-b193-4aaa-8b7b-f0c96789708d"},{"name":"Update Transactional WhatsApp Webhook Settings with OAuth 2.0","id":"ac7181d7-a787-4da1-8e6d-f05de52c2751","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://gw.useinsider.com/api/wa/v2/transactional/settings","description":"

You can use this API to update webhooks and other settings for transactional WhatsApp messages.

\n
\n

<p >The system supports two grant types for OAuth2 authentication:</p>

\n
\n\n

Client Credentials Request

\n
curl -X POST \"https://gw.useinsider.com/api/wa/v2/transactional/settings\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer your_access_token\" \\\n  -d '{\n    \"webhook_url\": \"https://partner.example.com/webhooks/transactional\",\n    \"from\": \"+1234567890\",\n    \"auth_type\": \"oauth2\",\n    \"oauth2\": {\n      \"grant_type\": \"client_credentials\",\n      \"token_url\": \"https://oauth.partner.com/oauth/token\",\n      \"client_id\": \"your_client_id\",\n      \"client_secret\": \"your_client_secret\",\n      \"scopes\": [\n        \"webhook.write\"\n      ],\n      \"expires_in\": 3600\n    }\n  }'\n\n
\n

Refresh Token Request

\n
curl -X POST \"https://gw.useinsider.com/api/wa/v2/transactional/settings\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer your_access_token\" \\\n  -d '{\n    \"webhook_url\": \"https://partner.example.com/webhooks/transactional\",\n    \"from\": \"+1234567890\",\n    \"auth_type\": \"oauth2\",\n    \"oauth2\": {\n      \"grant_type\": \"refresh_token\",\n      \"token_url\": \"https://oauth.partner.com/oauth/token\",\n      \"client_id\": \"your_client_id\",\n      \"client_secret\": \"your_client_secret\",\n      \"refresh_token\": \"your_refresh_token\",\n      \"scopes\": [\n        \"webhook.write\"\n      ],\n      \"expires_in\": 3600\n    }\n  }'\n\n
\n

Error Codes

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2010400The settings request body could not be decoded.
2011400The settings request body failed validation.
2012400An error occurred while saving the settings.
2020400The webhook URL failed validation.
\n
","urlObject":{"protocol":"https","path":["api","wa","v2","transactional","settings"],"host":["gw","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ac7181d7-a787-4da1-8e6d-f05de52c2751"}],"id":"b372dca2-db95-473c-a3ea-f6832e596cc5","_postman_id":"b372dca2-db95-473c-a3ea-f6832e596cc5","description":""},{"name":"Conversational API","item":[{"name":"Send Conversational WhatsApp Message Template","id":"20a89760-d574-4fb2-b238-8235f97f2a42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"{{TEMPLATE_NAME}}\",\n \"language\": {\n \"code\": \"{{TEMPLATE_LANGUAGE_CODE}}\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{PARAMETER_VALUE}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"0\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"1\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"1\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"2\"\n }\n ]\n }\n ]\n }\n }\n }\n ]\n}"},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. To create a conversational flow, one of the ways is to integrate a bot to reply to users' WhatsApp messages.

\n

The Conversational API is designed for WhatsApp Bot connection.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
fromUse only if you are using multiple phone numbers. If you have only one phone number, you do not need to add this.StringNo
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “template” for this message type.StringYes
nameTemplate name to be sentStringYes
languageObjectYes
codeTemplate languageStringYes
policyIt must be deterministic.StringYes
message variable componentsArrayYes
typebodyStringYes
body parametersArrayYes
typetextStringYes
textParameter valueStringYes
button componentsArrayYes
typebuttonStringYes
sub_typeQuick_reply, URL, PHONE_NUMBERStringYes
indexStringYes
parametersArrayYes
typepayloadStringYes
payloadPayload valueStringYes
\n

Sample Body

\n

You can use the below sample request if you want to use the quick reply buttons:

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************************' \\\n--data '{\n    \"from\": \"{{PHONE_NUMBER}}\", //Example: +112312312\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"{{TEMPLATE_NAME}}\",\n                    \"language\": {\n                        \"code\": \"{{TEMPLATE_LANGUAGE_CODE}}\",\n                        \"policy\": \"deterministic\",\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"body\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"{{PARAMETER_VALUE}}\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"1\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"1\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"2\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you want to use CTA (Call To Action), you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'x-ins-auth-key: INS.kjQu-+bL4HpeZqvgr1j0.d4IVgHl9GcE+_eaKxNA3P8M3q8-emrO3-zalg9GSF29mK+Jz5k' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"mert_masterfile_media_with_button\",\n                    \"language\": {\n                        \"code\": \"en\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://inshoppingcart.com/seleniumautomation/wp-content/uploads/2018/08/cap-2.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com?abc=sha\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"url\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you don't want to use CTA, you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.tiNlcL284J8dwCpfoqdR.gpyLwFG-0fSHPS9+kZYNsI-D2IWFNjlaRDlXJrZjx2_ZPTP37I' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"7_image_header_no_button_copy\",\n                    \"language\": {\n                        \"code\": \"fi\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://image.useinsider.com/vikingsankara/media/whatsapp-business/11521/83rbBaWO7H63VmACSXiZ1716506118.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"shahla\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"20a89760-d574-4fb2-b238-8235f97f2a42"},{"name":"Send Conversational WhatsApp Carousel Template Message","id":"6c2ad034-0ac0-4d73-a9db-c1152f5a83d1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"from\": \"{{FROM}}\",\n \"messages\": [\n {\n \"phoneNumber\": \"{{TO}}\",\n \"message\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"{{TEMPLATE_NAME}}\",\n \"language\": {\n \"code\": \"{{LANG_CODE}}\",\n \"policy\": \"deterministic\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{BODY_1}}\"\n }\n ]\n },\n {\n \"type\": \"carousel\",\n \"cards\": [\n {\n \"card_index\": 0,\n \"components\": [\n {\n \"type\": \"header\",\n \"parameters\": [\n {\n \"type\": \"image\",\n \"image\": {\n \"id\": \"{{IMG_ID_1}}\"\n }\n }\n ]\n },\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{CARD_TEXT_1}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"0\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"{{PAYLOAD_1}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"url\",\n \"index\": \"1\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{URL_1}}\"\n }\n ]\n }\n ]\n },\n {\n \"card_index\": 1,\n \"components\": [\n {\n \"type\": \"header\",\n \"parameters\": [\n {\n \"type\": \"image\",\n \"image\": {\n \"id\": \"{{IMG_ID_2}}\"\n }\n }\n ]\n },\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{CARD_TEXT_2}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"quick_reply\",\n \"index\": \"0\",\n \"parameters\": [\n {\n \"type\": \"payload\",\n \"payload\": \"{{PAYLOAD_2}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"url\",\n \"index\": \"1\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{URL_2}}\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. To create a conversational flow, one of the ways is to integrate a bot to reply to users' WhatsApp messages.

\n

The Conversational API is designed for connection with WhatsApp bots.

\n

When creating a new template in either marketing or utility categories, you can select the Carousel template type. This feature enables the creation of multi-card messages, with each card displaying unique content, images, and interactive buttons. Carousel templates offer an engaging way to showcase multiple options or pieces of information within a single message, making it easier to capture user attention and encourage interaction.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
componentsDefines the dynamic sections of the message, such as the body, header, or buttons, for customization.ArrayYes
typeSpecifies the type of each component (e.g., body, header, button, carousel).StringYes
cardsRepresents a collection of interactive cards, each containing its own components like headers, body texts, and buttons.ArrayYes
card_indexIdentifies the position of a specific card in the carousel, starting from 0.StringYes
componentsNested within each card, this array defines the individual elements of the card. Common components are header (e.g., for an image), body (e.g., for text), and button (for actions like quick replies or URLs).ArrayYes
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************************' \\\n--data '{\n \"from\": \"{{FROM}}\",\n \"messages\": [\n   {\n     \"phoneNumber\": \"{{TO}}\",\n     \"message\": {\n       \"type\": \"template\",\n       \"template\": {\n         \"name\": \"{{TEMPLATE_NAME}}\",\n         \"language\": {\n           \"code\": \"{{LANG_CODE}}\",\n           \"policy\": \"deterministic\"\n         },\n         \"components\": [\n           {\n             \"type\": \"body\",\n             \"parameters\": [\n               {\n                 \"type\": \"text\",\n                 \"text\": \"{{BODY_1}}\"\n               }\n             ]\n           },\n           {\n             \"type\": \"carousel\",\n             \"cards\": [\n               {\n                 \"card_index\": 0,\n                 \"components\": [\n                   {\n                     \"type\": \"header\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"image\",\n                         \"image\": {\n                           \"id\": \"{{IMG_ID_1}}\"\n                         }\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"body\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"text\",\n                         \"text\": \"{{CARD_TEXT_1}}\"\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"button\",\n                     \"sub_type\": \"quick_reply\",\n                     \"index\": \"0\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"payload\",\n                         \"payload\": \"{{PAYLOAD_1}}\"\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"button\",\n                     \"sub_type\": \"url\",\n                     \"index\": \"1\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"text\",\n                         \"text\": \"{{URL_1}}\"\n                       }\n                     ]\n                   }\n                 ]\n               },\n               {\n                 \"card_index\": 1,\n                 \"components\": [\n                   {\n                     \"type\": \"header\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"image\",\n                         \"image\": {\n                           \"id\": \"{{IMG_ID_2}}\"\n                         }\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"body\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"text\",\n                         \"text\": \"{{CARD_TEXT_2}}\"\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"button\",\n                     \"sub_type\": \"quick_reply\",\n                     \"index\": \"0\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"payload\",\n                         \"payload\": \"{{PAYLOAD_2}}\"\n                       }\n                     ]\n                   },\n                   {\n                     \"type\": \"button\",\n                     \"sub_type\": \"url\",\n                     \"index\": \"1\",\n                     \"parameters\": [\n                       {\n                         \"type\": \"text\",\n                         \"text\": \"{{URL_2}}\"\n                       }\n                     ]\n                   }\n                 ]\n               }\n             ]\n           }\n         ]\n       }\n     }\n   }\n ]\n}\n'\n\n
\n

You can use the below sample request if you want to use the quick reply buttons:

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************************' \\\n--data '{\n    \"from\": \"{{PHONE_NUMBER}}\", //Example: +112312312\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"{{TEMPLATE_NAME}}\",\n                    \"language\": {\n                        \"code\": \"{{TEMPLATE_LANGUAGE_CODE}}\",\n                        \"policy\": \"deterministic\",\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"body\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"{{PARAMETER_VALUE}}\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"1\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"quick_reply\",\n                            \"index\": \"1\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"payload\",\n                                    \"payload\": \"2\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you want to use CTA (Call To Action), you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'x-ins-auth-key: INS.kjQu-+bL4HpeZqvgr1j0.d4IVgHl9GcE+_eaKxNA3P8M3q8-emrO3-zalg9GSF29mK+Jz5k' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"mert_masterfile_media_with_button\",\n                    \"language\": {\n                        \"code\": \"en\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://inshoppingcart.com/seleniumautomation/wp-content/uploads/2018/08/cap-2.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com?abc=sha\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"url\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"https://vikingsankara.com\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

If you don't want to use CTA, you can use the below sample request:

\n
curl --location 'https://whatsapp.useinsider.com/v1/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.tiNlcL284J8dwCpfoqdR.gpyLwFG-0fSHPS9+kZYNsI-D2IWFNjlaRDlXJrZjx2_ZPTP37I' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+994558964184\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"7_image_header_no_button_copy\",\n                    \"language\": {\n                        \"code\": \"fi\",\n                        \"policy\": \"deterministic\"\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"header\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"image\",\n                                    \"image\": {\n                                        \"link\": \"https://image.useinsider.com/vikingsankara/media/whatsapp-business/11521/83rbBaWO7H63VmACSXiZ1716506118.jpg\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"body\",\n                            \"sub_type\": \"\",\n                            \"index\": \"\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"shahla\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6c2ad034-0ac0-4d73-a9db-c1152f5a83d1"},{"name":"Send Conversational WhatsApp Text Message","id":"ae9fabe7-857d-40f2-8a3e-fcb2e3e44e6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"text\",\n \"text\": {\n \"preview_url\": true,\n \"body\": \"Example Message\"\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. One way to create a conversational flow is to integrate a bot to reply to users' WhatsApp messages. 

\n

You can only send text content using this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be “text” for this message type.StringYes
textThis object contains the properties of the text message.ObjectYes
preview_urlAllows for URL previews in text messages. Optional if not including a URL in your message. The default value is false.BooleanNo
bodyThe text of the text message which can contain URLs beginning with http:// or https:// and formatting. The maximum length is 4096 characters.StringYes
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data '{\n   \"messages\": [\n       {\n           \"phoneNumber\": \"+1**********\",\n           \"message\": {\n               \"type\": \"text\",\n               \"text\": {\n                   \"preview_url\": true,\n                   \"body\": \"Example Message\"\n               }\n           }\n       }\n   ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ae9fabe7-857d-40f2-8a3e-fcb2e3e44e6d"},{"name":"Send Conversational WhatsApp OTP Message","id":"5bfccfef-25c6-4fc1-825e-7efb4c347bb9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"{{PHONE_NUMBER}}\",\n \"message\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"{{OTP_TEMPLATE_NAME}}\",\n \"language\": {\n \"code\": \"en\",\n \"policy\": \"deterministic\",\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{OTP_CODE}}\"\n }\n ]\n },\n {\n \"type\": \"button\",\n \"sub_type\": \"url\",\n \"index\": \"0\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"{{OTP_CODE}}\"\n }\n ]\n }\n ]\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. One way to create a conversational flow is to integrate a bot to reply to users' WhatsApp messages.

\n

To use an OTP template, you must have your own OTP system. Then, you must create the OTP template from the Meta system.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be “template” for this message type.StringYes
nameTemplate name to be sentStringYes
languageObjectYes
codeTemplate languageStringYes
policyIt must be deterministic.StringYes
message variable componentsArrayYes
typebodyStringYes
body parametersArrayYes
typetextStringYes
textMust be the OTP codeStringYes
button componentsArrayYes
typebuttonStringYes
sub_typeMust be URLStringYes
indexStringYes
parametersArrayYes
typetextStringYes
textMust be the OTP codeStringYes
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'x-ins-auth-key: INS.**************' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"{{PHONE_NUMBER}}\",\n            \"message\": {\n                \"type\": \"template\",\n                \"template\": {\n                    \"name\": \"{{OTP_TEMPLATE_NAME}}\",\n                    \"language\": {\n                        \"code\": \"en\",\n                        \"policy\": \"deterministic\",\n                    },\n                    \"components\": [\n                        {\n                            \"type\": \"body\",\n                            \"parameters\": [\n                                {\n                                    \"type\": \"text\",\n                                    \"text\": \"{{OTP_CODE}}\"\n                                }\n                            ]\n                        },\n                        {\n                            \"type\": \"button\",\n                            \"sub_type\": \"url\",\n                            \"index\": \"0\",\n                            \"parameters\": [\n                            {\n                                \"type\": \"text\",\n                                \"text\": \"{{OTP_CODE}}\"\n                            }\n                            ]\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5bfccfef-25c6-4fc1-825e-7efb4c347bb9"},{"name":"Send Conversational WhatsApp Media Message (Image)","id":"c5801b74-5449-44e4-8ac1-233ce28d8fe2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"image\",\n \"image\": {\n \"link\": \"{{IMAGE_URL}}\",\n \"caption\": \"Media Message (Image)\"\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. One way to create a conversational flow is to integrate a bot to reply to users' WhatsApp messages.

\n

You can send media and text content using this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be an “image” for this message type.StringYes
imageA media object of type image. Captions not supported when used in a media template.ObjectYes
linkThe protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Supported file types are image/jpeg, image/png. Max: 5 MB.URLYes if there is no id.
idThe media object ID. Do not use this field when the message type is set to text.URLYes if there is no link.
captionDescribes the specified image media.StringNo
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"image\",\n                \"image\": {\n                    \"link\": \"{{IMAGE_URL}}\",\n                    \"caption\": \"Media Message (Image)\"\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c5801b74-5449-44e4-8ac1-233ce28d8fe2"},{"name":"Send Conversational WhatsApp Media Message (Document)","id":"0cd6f38d-1a46-4f41-b775-73230c8044ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"document\",\n \"audio\": {\n \"link\": \"{{DOCUMENT_LINK}}\",\n \"caption\": \"{{DOCUMENT_DESCRIPTION}}\",\n \"filename\": \"{{DOCUMENT_NAME}}\"\n\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. To create a conversational flow, one of the ways is to integrate a bot to reply to users' WhatsApp messages.

\n

You can send only document content in this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “document” for this message type.StringYes
imageA media object of type image. Captions not supported when used in a media template.ObjectYes
linkThe protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Supported file types are:

- text/plain, 

- application/pdf, 

- application/vnd.ms-powerpoint, 

- application/msword, 

- application/vnd.ms-excel,

- application/vnd.openxmlformats-officedocument.wordprocessingml.document,

- application/vnd.openxmlformats-officedocument.presentationml.presentation,

- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet


Max 100 MB.
URLYes if there is no id.
idThe media object ID. Do not use this field when the message type is set to text.URLYes if there is no link.
captionDescribes the specified image media.StringNo
filenameName of the file.StringNo
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"document\",\n                \"audio\": {\n                    \"link\": \"{{DOCUMENT_LINK}}\",\n                    \"caption\": \"{{DOCUMENT_DESCRIPTION}}\",\n                    \"filename\": \"{{DOCUMENT_NAME}}\"\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0cd6f38d-1a46-4f41-b775-73230c8044ee"},{"name":"Send Conversational WhatsApp Media Message (Location)","id":"49b02a46-c4a3-4e73-8c66-8f53ebc57f12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"location\",\n \"location\": {\n \"longitude\": \"11.1111111\",\n \"latitude\": \"11.1111111\",\n \"name\": \"{{ADDRESS_NAME}}\",\n \"address\": \"{{FULL_ADDRESS}}\"\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. To create a conversational flow, one of the ways is to integrate a bot to reply to users' WhatsApp messages. 

\n

You can send media and text content in this message type. 

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single requestArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be a “location” for this message type.StringYes
locationA location object of type locationObjectYes
longitudeLongitude of the locationURLYes
latitudeLatitude of the locationURLYes
nameName of the locationStringNo
addressAddress of the location. Only displayed if the name is present.StringNo
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"location\",\n                \"location\": {\n                    \"longitude\": \"11.1111111\",\n                    \"latitude\": \"11.1111111\",\n                    \"name\": \"{{ADDRESS_NAME}}\",\n                    \"address\": \"{{FULL_ADDRESS}}\"\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"49b02a46-c4a3-4e73-8c66-8f53ebc57f12"},{"name":"Send Conversational WhatsApp Message with Button Reply","id":"dec30b4b-3dfc-4a11-941f-aaa055264af9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"messages\": [\n {\n \"phoneNumber\": \"+1**********\",\n \"message\": {\n \"type\": \"interactive\",\n \"interactive\": {\n \"type\": \"button\",\n \"header\": {\n \"type\": \"text\",\n \"text\": \"HEADER_TEXT\"\n },\n \"body\": {\n \"text\": \"BUTTON_TEXT\"\n },\n \"action\": {\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"reply\": {\n \"id\": \"UNIQUE_BUTTON_ID_1\",\n \"title\": \"BUTTON_TITLE_1\"\n }\n },\n {\n \"type\": \"reply\",\n \"reply\": {\n \"id\": \"UNIQUE_BUTTON_ID_2\",\n \"title\": \"BUTTON_TITLE_2\"\n }\n }\n ]\n }\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://whatsapp.useinsider.com/v1/conversational/send","description":"

The WhatsApp Marketing product provides conversational messages, allowing users to initiate conversations with businesses after the business has sent an initial message. One way to create a conversational flow is to integrate a bot to reply to users' WhatsApp messages.

\n

You can send media and text content using this message type.

\n

You can send this message type if the user has sent a message to your number in the last 24 hours.

\n

Body parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ColumnDescriptionData TypeRequired
messagesAll messages are contained in the messages key. You can send multiple messages with a single request.ArrayYes
phoneNumberPhone number for the person you want to send a message to.StringYes
messageMessage objectObjectYes
typeMust be “interactive” for this message type.StringYes
interactiveAn interactive object. The components of each interactive object generally follow a consistent pattern: header, body, footer, and action.ObjectYes
type (in interactive)Must be a “button” for this message type.StringYes
header-ObjectNo
typeThe header type you would like to use. Supported values are:

- text: Used for List Messages, Reply Buttons, and Multi-Product Messages.

- video: Used for Reply Buttons.

- image: Used for Reply Buttons.

- document: Used for Reply Buttons.
StringYes
textText for the header. Formatting allows emojis, but not markdown. Maximum length is 60 characters.StringYes if the type is text.
imageContains the media object for this imageStringYes if the type is image.
linkRequired when the type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The file types are image/jpeg, and image/png. Max 5 MB.StringYes if there is no id.
idRequired when the type is audio, document, image, sticker, or video and you are not using a link.URLYes is there is no link.
captionDescribes the specified image, document, or video media. Do not use with audio or sticker media.StringNo
audio-ObjectYes if the type is audio.
linkRequired when the type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The file types are audio/mp4, audio/mpeg, audio/amr, audio/ogg. Max 16 MB.URLYes if there is no id.
idRequired when the type is audio, document, image, sticker, or video and you are not using a link.URLYes is there is no link.
document-ObjectYes is the type is document.
linkRequired when type is audio, document, image, sticker, or video and you are not using an uploaded media ID. The File Types are:

- text/plain, 

- application/pdf, 

- application/vnd.ms-powerpoint, 

- application/msword, 

- application/vnd.ms-excel,

- application/vnd.openxmlformats-officedocument.wordprocessingml.document,

- application/vnd.openxmlformats-officedocument.presentationml.presentation,

- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet


Max 100 MB.
URLYes if there is no id.
idRequired when the type is audio, document, image, sticker, or video and you are not using a link.URLYes if there is no link.
captionDescribes the specified image, document, or video media. Do not use with audio or sticker media.StringNo
filenameDescribes the filename for the specific document. Use only with document media.StringNo
video-ObjectYes if the type is video.
linkRequired when type is audio, document, image, sticker, or video and you are not using an uploaded media ID. File Types are video/mp4, video/3gp. Max 16 MB.URLYes if there is no id.
idRequired when type is audio, document, image, sticker, or video and you are not using a link.URLYes if there is no link.
captionDescribes the specified image, document, or video media. Do not use with audio or sticker media.StringNo
bodyThe body object contains the following field: textstring – Required if the body is present. The content of the message. Emojis and markdowns are supported. Maximum length: 1024 characters.ObjectYes
textThe content of the message.StringYes
action-ObjectYes
buttonsYou can use Min:1, and Max:3 buttons.ArrayYes
typeMust be “reply” for this message type.StringYes
reply-ObjectYes
idId of the button.StringYes
titleTitle of the buttonStringYes
\n

Sample Example

\n

Sample Request

\n
curl --location 'https://whatsapp.useinsider.com/v1/conversational/send' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.**************************' \\\n--data '{\n    \"messages\": [\n        {\n            \"phoneNumber\": \"+1**********\",\n            \"message\": {\n                \"type\": \"interactive\",\n                \"interactive\": {\n                    \"type\": \"button\",\n                    \"header\": {\n                        \"type\": \"text\",\n                        \"text\": \"HEADER_TEXT\"\n                    },\n                    \"body\": {\n                        \"text\": \"BUTTON_TEXT\"\n                    },\n                    \"action\": {\n                        \"buttons\": [\n                            {\n                                \"type\": \"reply\",\n                                \"reply\": {\n                                    \"id\": \"UNIQUE_BUTTON_ID_1\",\n                                    \"title\": \"BUTTON_TITLE_1\"\n                                }\n                            },\n                            {\n                                \"type\": \"reply\",\n                                \"reply\": {\n                                    \"id\": \"UNIQUE_BUTTON_ID_2\",\n                                    \"title\": \"BUTTON_TITLE_2\"\n                                }\n                            }\n                        ]\n                    }\n                }\n            }\n        }\n    ]\n}'\n\n
\n

Sample Responses

\n

One key information will be returned for each message to be sent. This key will be added to all events related to the message.

\n
{\n    \"keys\": [\n        \"whatsapp-*************************\"\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","conversational","send"],"host":["whatsapp","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"dec30b4b-3dfc-4a11-941f-aaa055264af9"},{"name":"Send Conversational WhatsApp Messages with OAuth 2.0","id":"cea9d131-42d5-4abb-b9be-833a64e90c65","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n \"from\": \"+111111111\",\n \"messages\": [\n {\n \"phone_number\": \"+1234567890\",\n \"user_id\": \"user-uuid-123\",\n \"message\": {\n \"type\": \"text\",\n \"text\": {\n \"body\": \"Hello! How can I help you?\",\n \"preview_url\": false\n }\n }\n }\n ]\n}","options":{"raw":{"language":"json"}}},"url":"https://gw.useinsider.com/api/wa/v2/conversational/messages/send","description":"

WhatsApp Transactional API v2 is a REST API that enables your systems to send conversational messages through the WhatsApp Business Platform.

\n
\n
\n

To send conversational WhatsApp messages using OAuth 2.0, you must first generate an OAuth 2.0 credential. For step-by-step instructions, refer to OAuth 2.0 Credentials.

\n
\n
\n

Before sending Conversational WhatsApp template messages, make sure you create your template in InOne first. Refer to Create a WhatsApp Business Standard Template on InOne for step-by-step guidance.

\n

Refer to the visual below for an example of how a conversational WhatsApp template message is displayed.

\n\n\n

Sample Request

\n

Use the request below to send conversational messages via WhatsApp. In addition to templates, message types such as text and media can be sent.

\n
{\n  \"from\": \"+111111111\",\n  \"messages\": [\n    {\n      \"phone_number\": \"+1234567890\",\n      \"user_id\": \"user-uuid-123\",\n      \"message\": {\n        \"type\": \"text\",\n        \"text\": {\n          \"body\": \"Hello! How can I help you?\",\n          \"preview_url\": false\n        }\n      }\n    }\n  ]\n}\n\n
\n

Body Parameters

\n

This endpoint shares the same parameters as the Transactional WhatsApp Messages with OAuth 2.0. The primary distinction is that conversational message types, such as text, image, video, document, audio, location, and interactive, are available for the message.type field.

\n

Sample Responses

\n

200 OK

\n

This code indicates that the request has been completed.

\n
{\n    \"keys\": [\n        \"whatsapp-660e8400-e29b-41d4-a716-446655440001\"]\n}\n\n
\n

Error Codes

\n

These endpoints return the same error codes as the Transactional WhatsApp Messages with OAuth 2.0 (2001, 2002, 2003).

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2001400The request body could not be decoded.
2002400The request body failed validation.
2003400The message could not be sent due to a provider error or an internal system issue.
\n

Media Operation Errors

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2017400Provider not found or upload error
2018400Error retrieving media information
2019400Media download error
INVALID_FILE400Invalid file or file could not be read
\n

System Errors

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
HTTP StatusDescription
503 Service UnavailableThe system is currently in maintenance mode
\n
","urlObject":{"protocol":"https","path":["api","wa","v2","conversational","messages","send"],"host":["gw","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Sender’s WhatsApp phone number (in E.164 format)

\n","type":"text/plain"},"key":"from","value":null},{"disabled":true,"description":{"content":"

List of messages to be sent (minimum 1 message)

\n","type":"text/plain"},"key":"messages","value":null},{"disabled":true,"description":{"content":"

URL shortening settings

\n","type":"text/plain"},"key":"url_shortener_config","value":null},{"disabled":true,"description":{"content":"

Enable/disable URL shortening

\n","type":"text/plain"},"key":"url_shortener_config.status","value":null},{"disabled":true,"description":{"content":"

Domain name for shortening

\n","type":"text/plain"},"key":"url_shortener_config.domain","value":null},{"disabled":true,"description":{"content":"

Custom parameters (key–value map)

\n","type":"text/plain"},"key":"unique_args","value":null},{"disabled":true,"description":{"content":"

Remove tracking parameters

\n","type":"text/plain"},"key":"remove_tracking_params","value":null}],"variable":[]}},"response":[],"_postman_id":"cea9d131-42d5-4abb-b9be-833a64e90c65"},{"name":"Update Conversational WhatsApp Webhook Settings with OAuth 2.0","id":"61ac4b66-fde2-4c49-aa61-71df8f818fd1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://gw.useinsider.com/api/wa/v2/conversational/settings","description":"

This endpoint helps you update the webhook URL and other relevant settings for conversational messages.

\n

The system supports two grant types for OAuth2 authentication:

\n\n

Client Credentials Request

\n
curl -X POST \"https://gw.useinsider.com/api/wa/v2/conversational/settings\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer your_access_token\" \\\n  -d '{\n    \"webhook_url\": \"https://partner.example.com/webhooks/conversational\",\n    \"from\": \"+1234567890\",\n    \"auth_type\": \"oauth2\",\n    \"oauth2\": {\n      \"grant_type\": \"client_credentials\",\n      \"token_url\": \"https://oauth.partner.com/oauth/token\",\n      \"client_id\": \"your_client_id\",\n      \"client_secret\": \"your_client_secret\",\n      \"scopes\": [\n        \"webhook.write\"\n      ],\n      \"expires_in\": 3600\n    }\n  }'\n\n
\n

Refresh Token Request

\n
curl -X POST \"https://gw.useinsider.com/api/wa/v2/conversational/settings\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer your_access_token\" \\\n  -d '{\n    \"webhook_url\": \"https://partner.example.com/webhooks/conversational\",\n    \"from\": \"+1234567890\",\n    \"auth_type\": \"oauth2\",\n    \"oauth2\": {\n      \"grant_type\": \"refresh_token\",\n      \"token_url\": \"https://oauth.partner.com/oauth/token\",\n      \"client_id\": \"your_client_id\",\n      \"client_secret\": \"your_client_secret\",\n      \"refresh_token\": \"your_refresh_token\",\n      \"scopes\": [\n        \"webhook.write\"\n      ],\n      \"expires_in\": 3600\n    }\n  }'\n\n
\n

Error Codes

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeHTTP StatusDescription
2010400The settings request body could not be decoded.
2011400The settings request body failed validation.
2012400An error occurred while saving the settings.
2020400The webhook URL failed validation.
\n
","urlObject":{"protocol":"https","path":["api","wa","v2","conversational","settings"],"host":["gw","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"61ac4b66-fde2-4c49-aa61-71df8f818fd1"}],"id":"6e96d4ae-cd24-42fe-ae55-5d3c2d410f0c","description":"

The WhatsApp Marketing tool enables interactive messaging, allowing users to engage with businesses after the initial message. To ensure a seamless experience, businesses can integrate a bot to respond to WhatsApp messages. WhatsApp Conversational further enhances this by offering powerful two-way conversational messaging focused on end-to-end shopping experiences.

\n

Brands and retailers can use templates like product catalogs for browsing, category lists for product discovery, and detailed description cards for completing purchases, providing a comprehensive and engaging shopping experience through WhatsApp.

\n\n\n

You can refer to the image below to better understand how the system works:

\n","_postman_id":"6e96d4ae-cd24-42fe-ae55-5d3c2d410f0c"},{"name":"OTP for WhatsApp","item":[{"name":"Create a channel","id":"eb65bec0-0cb5-4d5a-9185-57c3b3ed3939","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"whatsapp\"\n}"},"url":"https://verify.useinsider.com/v1/channel/create","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel. In this regard, to send OTP codes, you must create a channel for your brand for once.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. It will be WhatsApp.StringYesoneof:whatsapp
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'https://verify.useinsider.com/v1/channel/create' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"whatsapp\"\n}'\n\n
\n

Sample Responses

\n

201 Created

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field must be one of these:whatsapp\",\n            \"field\": \"channel\"\n        }\n    ]\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"errors\": [\n        {\n            \"message\": \"channel already exists\"\n        }\n    ]\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","channel","create"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"eb65bec0-0cb5-4d5a-9185-57c3b3ed3939"},{"name":"Create an OTP Template","id":"5bf76c72-7370-45a0-b289-ca55f2a2a715","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"whatsapp\",\n \"locale\": \"tr\",\n \"templateName\": \"otp_template\"\n}","options":{"raw":{"language":"json"}}},"url":"https://verify.useinsider.com/v1/template/create","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel. Ensure that the provided template name exists and corresponds to the authentication template name you created through your WhatsApp Business Account.

\n

After you create a channel for your brand, you can create OTP templates.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code. It will be WhatsApp.StringYesoneof:whatsapp
localeDetermines the language/locale in which the OTP code message will be sent.StringYesoneof:pt af sq ar az bn bg ca zh_CN zh_HK zh_TW hr cs da nl en en_GB en_US et fil fi fr ka de el gu ha he hi hu id ga it ja kn kk rw_RW ko ky_KG lo lv lt mk ms ml mr nb fa pl pt_BR pt_PT pa ro ru sr sk sl es es_AR es_ES es_MX sw sv ta te th tr uk ur uz vi zu
templateNameThe template name that will be insertedStringYesThe template has to exist already.
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/template/create' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"whatsapp\",\n    \"locale\": \"tr\",\n    \"templateName\": \"otp_template\"\n}'\n\n
\n

Sample Responses

\n

202 Accepted

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field must be one of these:whatsapp\",\n            \"field\": \"text\"\n        }\n    ]\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

409 Conflict

\n
{\n    \"errors\": [\n        {\n            \"message\": \"no changes detected\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","template","create"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5bf76c72-7370-45a0-b289-ca55f2a2a715"},{"name":"Update OTP Templates","id":"f39f862b-7cf9-4eea-a508-1f741922b12e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"url":"https://verify.useinsider.com/v1/template/list","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel.

\n

After you create a channel for your brand, you can list its templates later.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/template/list' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************'\n\n
\n

Sample Responses

\n

200 OK

\n

This response indicates that your request was successfully completed.

\n
{\n    \"templates\": {\n        \"whatsapp\": [\n            {\n                \"locale\": \"en\",\n                \"text\": \"\",\n                \"templateName\": \"sample_otp_template_1\"\n            },\n            {\n                \"locale\": \"tr\",\n                \"text\": \"\",\n                \"templateName\": \"sample_otp_template_2\"\n            }\n        ]\n    }\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","template","list"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f39f862b-7cf9-4eea-a508-1f741922b12e"},{"name":"List OTP templates","id":"b032e139-a5f7-4872-b55d-2bdf7d692ea1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"url":"https://verify.useinsider.com/v1/template/list","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel.

\n

After you create a channel for your brand, you can list its templates later.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/template/list' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************'\n\n
\n

Sample Responses

\n

200 OK

\n

This response indicates that your request was successfully completed.

\n
{\n    \"templates\": {\n        \"whatsapp\": [\n            {\n                \"locale\": \"en\",\n                \"text\": \"\",\n                \"templateName\": \"sample_otp_template_1\"\n            },\n            {\n                \"locale\": \"tr\",\n                \"text\": \"\",\n                \"templateName\": \"sample_otp_template_2\"\n            }\n        ]\n    }\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","template","list"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b032e139-a5f7-4872-b55d-2bdf7d692ea1"},{"name":"Generate OTP codes","id":"d8b4b4f5-dff5-4b90-88e4-eb574f297d17","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"channel\": \"whatsapp\",\n \"locale\": \"tr\",\n \"to\": \"+905XXXXXXXXX\",\n \"ttl\": 600\n}"},"url":"https://verify.useinsider.com/v1/generate","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your own websites or apps, you can trigger it on login pages, payment pages, and more.

\n

After you create your channel for your brand and update the templates, you need to perform the generate action for your OTP.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
channelChannel that you will send the OTP code.StringYesoneof:whatsapp
toSpecifies the destination phone number in E.164 format to which the OTP code will be sent.StringYese164
localeDetermines the language/locale in which the OTP code message will be sent.StringNo (Default: en)oneof:pt af sq ar az bn bg ca zh_CN zh_HK zh_TW hr cs da nl en en_GB en_US et fil fi fr ka de el gu ha he hi hu id ga it ja kn kk rw_RW ko ky_KG lo lv lt mk ms ml mr nb fa pl pt_BR pt_PT pa ro ru sr sk sl es es_AR es_ES es_MX sw sv ta te th tr uk ur uz vi zu
ttlSpecifies the Time-To-Live (TTL) duration for the OTP code, i.e., the time window within which the OTP code is valid. Measured in seconds.IntegerNo (Default: 180)min:60 max:600
code-lengthSpecifies the length of the OTP code to be generated. The code length must be between 4 and 8 digits.IntegerNo (Default: 4)min:4 max:8
custom-codeIf provided, allows you to specify a custom OTP code instead of generating one.IntegerNomin:1000 max:99999999
max-attemptsSets the maximum number of allowed OTP verification attempts. If the verification fails after reaching this limit, further attempts might be denied.IntegerNo (Default: 3)min:1 max:10
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'https://verify.useinsider.com/v1/generate' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"channel\": \"whatsapp\",\n    \"locale\": \"tr\",\n    \"to\": \"+905XXXXXXXXX\",\n    \"ttl\": 600\n}'\n\n
\n

Sample Responses

\n

202 Accepted

\n

This response indicates that your request was successfully completed.

\n
{\n    \"key\": \"whatsapp-12345\",\n    \"channel\": \"whatsapp\",\n    \"dateCreated\": \"2023-07-28T14:40:41Z\",\n    \"dateUpdated\": \"2023-07-28T14:40:41Z\",\n    \"locale\": \"en\",\n    \"maxAttempts\": 3,\n    \"ttl\": 180\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"this field is required\",\n            \"field\": \"text\"\n        }\n    ]\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","generate"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d8b4b4f5-dff5-4b90-88e4-eb574f297d17"},{"name":"Verify OTP codes","id":"ac651391-447f-491b-901b-06b452701243","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"INS.**************************","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"to\": \"+905XXXXXXXXX\",\n \"code\": 1234\n}"},"url":"https://verify.useinsider.com/v1/check","description":"

The Verify API enables you to generate, send, and verify OTP codes for the WhatsApp channel. You can utilize this API to generate OTP codes as defined in the payloads. Integrating it into your websites or apps, you can trigger it on login pages, payment pages, and more.

\n

After you create your channel for your brand and update the templates, you need to perform the verification action for your OTP.

\n

This API key is sensitive and should never be used on the frontend or mobile SDK; it should only be implemented on the backend.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredRules
toSpecifies the destination phone number in E.164 format to which the OTP code will be sent.StringYese164
codeRepresents the OTP code provided for verification. The code length must be between 4 and 8 digits.IntegerNo (Default: 4)min:4 max:8
\n

Sample Example

\n

Sample Request

\n

Every request made to the request endpoint requires a request body formatted in JSON and containing your parameters.

\n

Make sure to replace the sample values in the request header(s) and body where required before sending your request.

\n
curl --location 'verify.useinsider.com/v1/check' \\\n--header 'Content-Type: application/json' \\\n--header 'x-ins-auth-key: INS.************************' \\\n--data '{\n    \"to\": \"+905XXXXXXXXX\",\n    \"code\": 1234\n}'\n\n
\n

Sample Responses

\n

202 Accepted

\n

This response indicates that your request was successfully completed.

\n
{\n    \"status\": \"success\"\n}\n\n
\n

400 Bad Request

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid request payload\"\n        }\n    ]\n}\n\n
\n

422 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"invalid code\"\n        }\n    ]\n}\n\n
\n

401 Unauthorized

\n
{\n    \"errors\": [\n        {\n            \"message\": \"unauthorized\"\n        }\n    ]\n}\n\n
\n

404 Not found

\n
{\n    \"errors\": [\n        {\n            \"message\": \"code not found\",\n            \"field\": \"code\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"rate limit exceeded\"\n        }\n    ]\n}\n\n
\n

429 Too Many Requests

\n
{\n    \"errors\": [\n        {\n            \"message\": \"maximum attempts exceeded\",\n            \"field\": \"code\"\n        }\n    ]\n}\n\n
\n

500 Internal Server Error

\n
{\n    \"errors\": [\n        {\n            \"message\": \"server error\"\n        }\n    ]\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","check"],"host":["verify","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ac651391-447f-491b-901b-06b452701243"}],"id":"bc0cddde-1be4-47b2-b7b2-5b5d201efeae","_postman_id":"bc0cddde-1be4-47b2-b7b2-5b5d201efeae","description":""}],"id":"16e54f61-723c-4698-8149-24a4f3a544d7","_postman_id":"16e54f61-723c-4698-8149-24a4f3a544d7","description":""}],"id":"e18cfc18-442f-47c3-b64c-3371a6e40ab8","description":"

Messaging APIs allow you to create and send Email, Web Push, App Push, and SMS campaigns from your back-end without using Insider's panel Inone.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
APIFunction
Send transactional emailsYou can send targeted ecommerce and personalized one-to-one emails to your users.
Create email campaignsYou can send email body and subject from your back-end to create email campaigns on Insider platform.
Create bulk web pushesYou can send bulk web push notifications from your own back-end without using Insider's panel.
Delete bulk web pushesYou can delete bulk web push notifications from your own back-end without using Insider's panel.
Launch bulk web pushesYou can launch bulk web push notifications from your own back-end without using Insider's panel.
Create targeted web pushesYou can send targeted web push notifications from your own back-end without using Insider's panel.
Delete targeted web pushesYou can delete targeted web push notifications from your own back-end without using Insider's panel.
Launch targeted web pushesYou can launch targeted web push notifications from your own back-end without using Insider's panel.
Send bulk app pushesYou can send bulk app pushes to a predefined segment from your own back-end without using Insider's panel.
Send targeted app pushesYou can send targeted app pushes from your own back-end without using Insider's panel.
Send advanced app pushesYou can send advanced app pushes from your own back-end without using Insider's panel.
Get Message Center dataYou can get the app pushes delivered to a user.
\n
","_postman_id":"e18cfc18-442f-47c3-b64c-3371a6e40ab8"},{"name":"Catalog APIs","item":[{"name":"Add New Products in a Flat Format","id":"a59b2c74-4b7f-432b-b4c4-b0b300209e0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"myPartnerName","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.

\n","type":"text"}],"body":{"mode":"raw","raw":"[\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locale\": \"en_US\",\n \"name\": \"Velocity Runner Pro - White\",\n \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n \"brand\": \"Velox\",\n \"color\": \"White\",\n \"groupcode\": \"velocity-runner-pro\",\n \"price\": { \"USD\": 129.99 },\n \"original_price\": { \"USD\": 149.99 },\n \"in_stock\": 1,\n \"stock_count\": 50\n },\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locale\": \"en_US:newyork\",\n \"name\": \"Velocity Runner Pro - White\",\n \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n \"brand\": \"Velox\",\n \"color\": \"White\",\n \"groupcode\": \"velocity-runner-pro\",\n \"price\": { \"USD\": 119.99 },\n \"original_price\": { \"USD\": 149.99 },\n \"in_stock\": 1,\n \"stock_count\": 12\n },\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locale\": \"en_US:losangeles\",\n \"name\": \"Velocity Runner Pro - White\",\n \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n \"brand\": \"Velox\",\n \"color\": \"White\",\n \"groupcode\": \"velocity-runner-pro\",\n \"price\": { \"USD\": 129.99 },\n \"original_price\": { \"USD\": 149.99 },\n \"in_stock\": 0,\n \"stock_count\": 0\n },\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locale\": \"pt_BR\",\n \"name\": \"Velocity Runner Pro - Branco\",\n \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n \"category\": [\"Calçados\", \"Corrida\", \"Velox\"],\n \"brand\": \"Velox\",\n \"color\": \"White\",\n \"groupcode\": \"velocity-runner-pro\",\n \"price\": { \"BRL\": 899.90 },\n \"original_price\": { \"BRL\": 999.90 },\n \"in_stock\": 1,\n \"stock_count\": 30\n }\n ]","options":{"raw":{"language":"json"}}},"url":"https://catalog.api.useinsider.com/v2/ingest","description":"

The Catalog API allows you to insert new products in a flat format into your product catalog. It creates new product records. If a product with the same item_id + locale already exists, it will be overwritten.

\n

Endpoint and Headers

\n

POST https://catalog.api.useinsider.com/v2/ingest

\n

Body Parameters

\n

Default Product Attributes

\n

The following product fields should be sent as parameters in the object, along with their field name and data type, as stated. If any required fields are not sent through the Catalog API, the product is not updated or inserted.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Field NameDescriptionData TypeRequired
item_idUnique product identifier. Max 128 characters.StringYes
localeISO locale code (e.g., en_US, pt_BR). Max 64 characters.StringYes
nameProduct name. Max 512 characters.StringYes
urlProduct page URL. Must include protocol (e.g., https://). Max 512 characters.StringYes
image_urlProduct image URL. Must start with http://, https://, or //.StringYes
priceCurrent selling price per currency. e.g., {\"USD\": 100, \"BRL\": 500}.ObjectRequired for Stock & Revenue Feed Management Type
original_priceOriginal/list price per currency. Same structure as price.ObjectRequired for Stock & Revenue Feed Management Type
omnibus_priceOmnibus directive price per currency. Same structure as price.ObjectNo
in_stock1 = in stock, 0 = out of stock.NumberRequired for Stock & Revenue and Availability Feed Management Types
stock_countAvailable quantity. Must be >= 0.NumberNo
item_update_dateLast update timestamp. Format: YYYY-MM-DD hh:mm:ssStringRequired for Published Time Feed Management Type
item_start_dateAvailability start date. Format: YYYY-MM-DD hh:mm:ssStringRequired for Start & End Time Feed Management Type
item_end_dateAvailability end date. Format: YYYY-MM-DD hh:mm:ssStringRequired for Start & End Time Feed Management Type
descriptionProduct description. Max 1024 characters.StringNo
brandBrand name. Max 512 characters.StringNo
skuStock keeping unit. Max 512 characters.StringNo
colorProduct color. Max 512 characters.StringNo
sizeProduct size. Max 512 characters.StringNo
genderGender classification. Max 512 characters.StringNo
categoryCategory as an arrayString[]No
tagsProduct tagsString[]No
groupcodeProduct group identifierStringNo
variantsProduct variants. Max 512 characters per item.String[]No
ratingProduct rating, 0–10NumberNo
product_attributesCustom attributes defined in your account.Object {key:value}No
is_status_passive1 = passive/hidden in Smart Recommender and Eureka results, 0 = active.NumberNo
\n

Custom Product Attributes

\n

Custom Product Attributes allow you to define additional details specific to your business. These attributes enrich your catalog with data that supports your unique use cases, personalization logic, and recommendation filters.

\n

Before sending Custom Product Attributes in your payload, you must define them in your account.

\n

If a Default Product Attribute already exists for the information you want to include, use the default one instead of creating a custom one. This keeps your catalog structure consistent.

\n

Custom attributes are sent inside the product_attributes object:

\n
{\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"product_attributes\": {\n        \"material_type\": \"Leather\",\n        \"season\": \"Winter\",\n        \"eco_friendly\": true,\n        \"collection\": \"Winter Collection 2025\",\n        \"delivery_type\": \"Express\"\n        }\n\n
\n

Feed Management Types

\n

Your feed management type determines which pricing and stock attributes are required.

\n
Stock and Revenue Based Feed Management Type
\n

The Stock and Revenue Based Feed Management Type is the most common type. It requires pricing and stock information.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n      \"brand\": \"Velox\",\n      \"price\": { \"USD\": 129.99 },\n      \"original_price\": { \"USD\": 149.99 },\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Availability Based Feed Management Type
\n

For the Availability Based Feed Management Type, only the stock status is required. Pricing is optional.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Published Time Based Feed Management Type
\n

The Published Time Based Feed Management Type requires an update timestamp instead of pricing.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"blog-top-running-shoes-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Top 10 Running Shoes for 2025\",\n      \"url\": \"https://www.example-insiderone.com/blog/top-running-shoes-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/blog/running-shoes-2025.jpg\",\n      \"item_update_date\": \"2025-01-15 10:30:00\"\n    }\n  ]'\n\n
\n
Start & End Time Based Feed Management Type
\n

The Start & End Time Based Feed Management Type requires date range attributes for time-bound content.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"promo-summer-clearance-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Summer Clearance Sale - Up to 50% Off\",\n      \"url\": \"https://www.example-insiderone.com/campaigns/summer-clearance-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/campaigns/summer-clearance.jpg\",\n      \"item_start_date\": \"2025-06-01 00:00:00\",\n      \"item_end_date\": \"2025-08-31 23:59:59\"\n    }\n  ]'\n\n
\n

Product Availability by Feed Management Type

\n

A product is considered available based on criteria that vary by feed management type:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Feed TypeAvailability Condition
Stock & Revenue Basedin_stock must be 1
Availability Basedin_stock must be 1
Published Time Baseditem_update_date must be within the last 2 days (default 2 days, adjustable in Smart Recommender campaigns)
Start & End Time Baseditem_end_date must not be in the past
\n
Currencies
\n

Pricing attributes accept an object mapping currency codes to amounts. You can include multiple currencies in a single record.

\n
{\n  \"price\": {\n    \"USD\": 129.99,\n    \"EUR\": 119.99,\n    \"GBP\": 104.99,\n    \"BRL\": 899.90\n  },\n  \"original_price\": {\n    \"USD\": 149.99,\n    \"EUR\": 139.99,\n    \"GBP\": 119.99,\n    \"BRL\": 999.90\n  }\n}\n\n
\n
Categories
\n

The category attribute accepts an array of strings. How the array is interpreted depends on your account's category type, which is configured during onboarding. You must choose one of the two types:

\n\n

Use this if your categories follow a parent-child structure, with subcategories nested under broader categories. Each element in the array represents a level in the hierarchy, ordered from broadest to most specific.

\n
{\n \"category\": [\"Clothing\", \"Men\", \"Shirts\", \"Casual Shirts\"]\n}\n\n
\n

This creates the hierarchy: Clothing → Men → Shirts → Casual Shirts.

\n

The order matters; the first element is the top-level category and each subsequent element is a child of the previous one.

\n\n

Use this if your categories are independent and don't follow a parent-child hierarchy. Each element is a standalone category label at the same level.

\n
{\n \"category\": [\"Men's Shirts\", \"Women's Dresses\", \"Kids' Shoes\"]\n}\n\n
\n

In flat mode, all categories are treated equally; there is no implied nesting or ordering relationship between elements.

\n

Limits:

\n\n
Tags & Merchandising
\n

Tags are used for product grouping and merchandising rules within the Insider One platform.

\n
{\n \"tags\": [\"new-arrival\", \"bestseller\", \"summer-collection\", \"free-shipping\"]\n}\n\n
\n

You can use tags to:

\n\n

Limits:

\n\n
Group Code
\n

The groupcode attribute links product variants together as a single product group. Products sharing the same groupcode are treated as variations of the same product (e.g., different sizes or colors).

\n
[\n  {\n    \"item_id\": \"velocity-runner-pro-white\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"White\",\n    \"size\": \"10\"\n  },\n  {\n    \"item_id\": \"velocity-runner-pro-black\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"Black\",\n    \"size\": \"10\"\n  }\n]\n\n
\n

Sample Request

\n

The sample below displays a request to insert new products into the catalog using a flat format. Each product is a separate JSON object with all fields inline. Every locale/store combination is a separate object.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n        -H \"Content-Type: application/json\" \\\n        -H \"X-PARTNER-NAME: yourPartnerName\" \\\n        -H \"X-REQUEST-TOKEN: your-api-token\" \\\n        -d '[\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n        \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n        \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n        \"brand\": \"Velox\",\n        \"color\": \"White\",\n        \"groupcode\": \"velocity-runner-pro\",\n        \"price\": { \"USD\": 129.99 },\n        \"original_price\": { \"USD\": 149.99 },\n        \"in_stock\": 1,\n        \"stock_count\": 50\n        },\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US:newyork\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n        \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n        \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n        \"brand\": \"Velox\",\n        \"color\": \"White\",\n        \"groupcode\": \"velocity-runner-pro\",\n        \"price\": { \"USD\": 119.99 },\n        \"original_price\": { \"USD\": 149.99 },\n        \"in_stock\": 1,\n        \"stock_count\": 12\n        },\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US:losangeles\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n        \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n        \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n        \"brand\": \"Velox\",\n        \"color\": \"White\",\n        \"groupcode\": \"velocity-runner-pro\",\n        \"price\": { \"USD\": 129.99 },\n        \"original_price\": { \"USD\": 149.99 },\n        \"in_stock\": 0,\n        \"stock_count\": 0\n        },\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"pt_BR\",\n        \"name\": \"Velocity Runner Pro - Branco\",\n        \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n        \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n        \"category\": [\"Calçados\", \"Corrida\", \"Velox\"],\n        \"brand\": \"Velox\",\n        \"color\": \"White\",\n        \"groupcode\": \"velocity-runner-pro\",\n        \"price\": { \"BRL\": 899.90 },\n        \"original_price\": { \"BRL\": 999.90 },\n        \"in_stock\": 1,\n        \"stock_count\": 30\n        }\n        ]'\n\n
\n

Sample Response

\n

All ingest endpoints return the same response structure:

\n
{\n        \"success\": true,\n        \"message\": {\n        \"valid\": {\n        \"count\": 95\n        },\n        \"invalid\": {\n        \"count\": 5,\n        \"details\": [\n        {\n        \"field\": \"original_price\",\n        \"message\": \"Field is invalidated: 'original_price' is required\",\n        \"count\": 2,\n        \"document_ids\": [\"item-1\", \"item-2\"]\n        },\n        {\n        \"field\": \"url\",\n        \"message\": \"Field is invalidated: 'url' must match pattern\",\n        \"count\": 3,\n        \"document_ids\": [\"item-3\", \"item-4\", \"item-5\"]\n        }\n        ]\n        },\n        \"warnings\": {\n        \"count\": 1,\n        \"details\": [\n        {\n        \"field\": \"image_url\",\n        \"message\": \"Image URL could not be validated\",\n        \"count\": 1,\n        \"document_ids\": [\"item-6\"]\n        }\n        ]\n        },\n        \"invalidRatio\": 0.05\n        }\n        }\n\n
\n
\n

Warnings are informational and do not prevent records from being processed.

\n
\n

Limitations

\n

For all the limits applied, refer to Limitations.

\n","urlObject":{"protocol":"https","path":["v2","ingest"],"host":["catalog","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a59b2c74-4b7f-432b-b4c4-b0b300209e0c"},{"name":"Add New Products in a Nested Format","id":"f7f838cf-3525-452a-968a-bdc06718516c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"myPartnerName","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.

\n","type":"text"}],"body":{"mode":"raw","raw":"[\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"base\": {\n \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n \"brand\": \"Velox\",\n \"groupcode\": \"velocity-runner-pro\",\n \"color\": \"White\"\n },\n \"locales\": {\n \"en_US\": {\n \"name\": \"Velocity Runner Pro - White\",\n \"category\": [\n \"Shoes\",\n \"Running\",\n \"Velox\"\n ],\n \"price\": {\n \"USD\": 129.99\n },\n \"original_price\": {\n \"USD\": 149.99\n },\n \"stores\": {\n \"main\": {\n \"in_stock\": 1,\n \"stock_count\": 50\n },\n \"newyork\": {\n \"price\": {\n \"USD\": 119.99\n },\n \"in_stock\": 1,\n \"stock_count\": 12\n },\n \"losangeles\": {\n \"in_stock\": 0,\n \"stock_count\": 0\n }\n }\n },\n \"pt_BR\": {\n \"name\": \"Velocity Runner Pro - Branco\",\n \"category\": [\n \"Calçados\",\n \"Corrida\",\n \"Velox\"\n ],\n \"price\": {\n \"BRL\": 899.90\n },\n \"original_price\": {\n \"BRL\": 999.90\n },\n \"stores\": {\n \"main\": {\n \"in_stock\": 1,\n \"stock_count\": 30\n }\n }\n }\n }\n }\n ]","options":{"raw":{"language":"json"}}},"url":"https://catalog.api.useinsider.com/v2/ingest/nested","description":"

The Catalog API allows you to insert new items into your product catalog in a nested format. It creates new product records. If a product with the same item_id + locale already exists, it will be overwritten.

\n

Endpoint and Headers

\n

POST https://catalog.api.useinsider.com/v2/ingest/nested

\n

Body Parameters

\n

Default Product Attributes

\n

The following product fields should be sent as parameters in the object, along with their field name and data type, as stated. If any required fields are not sent through the Catalog API, the product is not updated or inserted.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Field NameDescriptionData TypeRequired
item_idUnique product identifier. Max 128 characters.StringYes
localeISO locale code (e.g., en_US, pt_BR). Max 64 characters.StringYes
nameProduct name. Max 512 characters.StringYes
urlProduct page URL. Must include protocol (e.g., https://). Max 512 characters.StringYes
image_urlProduct image URL. Must start with http://, https://, or //.StringYes
priceCurrent selling price per currency. e.g., {\"USD\": 100, \"BRL\": 500}.ObjectRequired for Stock & Revenue Feed Management Type
original_priceOriginal/list price per currency. Same structure as price.ObjectRequired for Stock & Revenue Feed Management Type
omnibus_priceOmnibus directive price per currency. Same structure as price.ObjectNo
in_stock1 = in stock, 0 = out of stock.NumberRequired for Stock & Revenue and Availability Feed Management Types
stock_countAvailable quantity. Must be >= 0.NumberNo
item_update_dateLast update timestamp. Format: YYYY-MM-DD hh:mm:ssStringRequired for Published Time Feed Management Type
item_start_dateAvailability start date. Format: YYYY-MM-DD hh:mm:ssStringRequired for Start & End Time Feed Management Type
item_end_dateAvailability end date. Format: YYYY-MM-DD hh:mm:ssStringRequired for Start & End Time Feed Management Type
descriptionProduct description. Max 1024 characters.StringNo
brandBrand name. Max 512 characters.StringNo
skuStock keeping unit. Max 512 characters.StringNo
colorProduct color. Max 512 characters.StringNo
sizeProduct size. Max 512 characters.StringNo
genderGender classification. Max 512 characters.StringNo
categoryCategory as an arrayString[]No
tagsProduct tagsString[]No
groupcodeProduct group identifierStringNo
variantsProduct variants. Max 512 characters per item.String[]No
ratingProduct rating, 0–10NumberNo
product_attributesCustom attributes defined in your account.Object {key:value}No
is_status_passive1 = passive/hidden in Smart Recommender and Eureka results, 0 = active.NumberNo
\n

Custom Product Attributes

\n

Custom Product Attributes allow you to define additional details specific to your business. These attributes enrich your catalog with data that supports your unique use cases, personalization logic, and recommendation filters.

\n

Before sending Custom Product Attributes in your payload, you must define them in your account.

\n

If a Default Product Attribute already exists for the information you want to include, use the default one instead of creating a custom one. This keeps your catalog structure consistent.

\n

Custom attributes are sent inside the product_attributes object:

\n
{\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"product_attributes\": {\n        \"material_type\": \"Leather\",\n        \"season\": \"Winter\",\n        \"eco_friendly\": true,\n        \"collection\": \"Winter Collection 2025\",\n        \"delivery_type\": \"Express\"\n        }\n\n
\n

Feed Management Types

\n

Your feed management type determines which pricing and stock attributes are required.

\n
Stock and Revenue Based Feed Management Type
\n

The Stock and Revenue Based Feed Management Type is the most common type. It requires pricing and stock information.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n      \"brand\": \"Velox\",\n      \"price\": { \"USD\": 129.99 },\n      \"original_price\": { \"USD\": 149.99 },\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Availability Based Feed Management Type
\n

For the Availability Based Feed Management Type, only the stock status is required. Pricing is optional.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Published Time Based Feed Management Type
\n

The Published Time Based Feed Management Type requires an update timestamp instead of pricing.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"blog-top-running-shoes-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Top 10 Running Shoes for 2025\",\n      \"url\": \"https://www.example-insiderone.com/blog/top-running-shoes-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/blog/running-shoes-2025.jpg\",\n      \"item_update_date\": \"2025-01-15 10:30:00\"\n    }\n  ]'\n\n
\n
Start & End Time Based Feed Management Type
\n

The Start & End Time Based Feed Management Type requires date range attributes for time-bound content.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"promo-summer-clearance-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Summer Clearance Sale - Up to 50% Off\",\n      \"url\": \"https://www.example-insiderone.com/campaigns/summer-clearance-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/campaigns/summer-clearance.jpg\",\n      \"item_start_date\": \"2025-06-01 00:00:00\",\n      \"item_end_date\": \"2025-08-31 23:59:59\"\n    }\n  ]'\n\n
\n

Product Availability by Feed Management Type

\n

A product is considered available based on criteria that vary by feed management type:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Feed TypeAvailability Condition
Stock & Revenue Basedin_stock must be 1
Availability Basedin_stock must be 1
Published Time Baseditem_update_date must be within the last 2 days (default 2 days, adjustable in Smart Recommender campaigns)
Start & End Time Baseditem_end_date must not be in the past
\n
Currencies
\n

Pricing attributes accept an object mapping currency codes to amounts. You can include multiple currencies in a single record.

\n
{\n  \"price\": {\n    \"USD\": 129.99,\n    \"EUR\": 119.99,\n    \"GBP\": 104.99,\n    \"BRL\": 899.90\n  },\n  \"original_price\": {\n    \"USD\": 149.99,\n    \"EUR\": 139.99,\n    \"GBP\": 119.99,\n    \"BRL\": 999.90\n  }\n}\n\n
\n
Categories
\n

The category attribute accepts an array of strings. How the array is interpreted depends on your account's category type, which is configured during onboarding. You must choose one of the two types:

\n\n

Use this if your categories follow a parent-child structure, with subcategories nested under broader categories. Each element in the array represents a level in the hierarchy, ordered from broadest to most specific.

\n
{\n \"category\": [\"Clothing\", \"Men\", \"Shirts\", \"Casual Shirts\"]\n}\n\n
\n

This creates the hierarchy: Clothing → Men → Shirts → Casual Shirts.

\n

The order matters; the first element is the top-level category and each subsequent element is a child of the previous one.

\n\n

Use this if your categories are independent and don't follow a parent-child hierarchy. Each element is a standalone category label at the same level.

\n
{\n \"category\": [\"Men's Shirts\", \"Women's Dresses\", \"Kids' Shoes\"]\n}\n\n
\n

In flat mode, all categories are treated equally; there is no implied nesting or ordering relationship between elements.

\n

Limits:

\n\n
Tags & Merchandising
\n

Tags are used for product grouping and merchandising rules within the Insider One platform.

\n
{\n \"tags\": [\"new-arrival\", \"bestseller\", \"summer-collection\", \"free-shipping\"]\n}\n\n
\n

You can use tagsto:

\n\n

Limits:

\n\n
Group Code
\n

The groupcode attribute links product variants together as a single product group. Products sharing the same groupcode are treated as variations of the same product (e.g., different sizes or colors).

\n
[\n  {\n    \"item_id\": \"velocity-runner-pro-white\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"White\",\n    \"size\": \"10\"\n  },\n  {\n    \"item_id\": \"velocity-runner-pro-black\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"Black\",\n    \"size\": \"10\"\n  }\n]\n\n
\n

Sample Request

\n

The sample below displays a request to insert new products using a nested format. Shared fields go in base, locale-specific fields go in locales, and store overrides go in stores.

\n

Use nested format when you have multiple locales or stores per product. Shared fields like url, image_url, and brand are defined once and inherited by all locales/stores, reducing payload size and repetition.

\n

The following example is equivalent to the flat format: the same product, locales, and stores, but expressed as a single nested object instead of 4 separate records:

\n
curl --request POST \"https://catalog.api.useinsider.com/v2/ingest/nested\" \\\n        --header \"Content-Type: application/json\" \\\n        --header \"X-PARTNER-NAME: yourPartnerName\" \\\n        --header \"X-REQUEST-TOKEN: your-api-token\" \\\n        --data '[\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"base\": {\n        \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n        \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n        \"brand\": \"Velox\",\n        \"groupcode\": \"velocity-runner-pro\",\n        \"color\": \"White\"\n        },\n        \"locales\": {\n        \"en_US\": {\n        \"name\": \"Velocity Runner Pro - White\",\n        \"category\": [\n        \"Shoes\",\n        \"Running\",\n        \"Velox\"\n        ],\n        \"price\": {\n        \"USD\": 129.99\n        },\n        \"original_price\": {\n        \"USD\": 149.99\n        },\n        \"stores\": {\n        \"main\": {\n        \"in_stock\": 1,\n        \"stock_count\": 50\n        },\n        \"newyork\": {\n        \"price\": {\n        \"USD\": 119.99\n        },\n        \"in_stock\": 1,\n        \"stock_count\": 12\n        },\n        \"losangeles\": {\n        \"in_stock\": 0,\n        \"stock_count\": 0\n        }\n        }\n        },\n        \"pt_BR\": {\n        \"name\": \"Velocity Runner Pro - Branco\",\n        \"category\": [\n        \"Calçados\",\n        \"Corrida\",\n        \"Velox\"\n        ],\n        \"price\": {\n        \"BRL\": 899.90\n        },\n        \"original_price\": {\n        \"BRL\": 999.90\n        },\n        \"stores\": {\n        \"main\": {\n        \"in_stock\": 1,\n        \"stock_count\": 30\n        }\n        }\n        }\n        }\n        }\n        ]'\n\n
\n

Understanding the field inheritance

\n

In nested format, the same field can be defined at multiple levels (base, locale, store). The Catalog API merges these into a final record using this priority:

\n
store fields > locale fields > base fields\n\n

This allows you to define shared values once in the base and only override the differences at each level.

\n

Example: In the request above, en_US defines price: USD 129.99 at the locale level. The newyork store overrides this with price: USD 119.99, while losangeles inherits the locale price since it doesn't define its own:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
localenamepricein_stockstock_count
en_USVelocity Runner Pro - WhiteUSD 129.99150
en_US:newyorkVelocity Runner Pro - WhiteUSD 119.99 (overridden)112
en_US:losangelesVelocity Runner Pro - WhiteUSD 129.99 (inherited)00
pt_BRVelocity Runner Pro - BrancoBRL 899.90130
\n

Restrictions

\n
Store Attributes
\n

In the nested payload structure, fields can be defined at three levels:

\n
base → Shared across all locales and stores\n        locales → Locale-specific (name, category, etc.)\n        └─ stores → Store-specific overrides (pricing and stock only)\n\n

Only the following fields are allowed at the store level:

\n\n

Including any other field at the store level returns a 400 error.

\n

Example: A valid nested payload with store-level overrides:

\n
{\n        \"item_id\": \"SKU-123\",\n        \"base\": {\n        \"url\": \"https://example.com/product/SKU-123\",\n        \"image_url\": \"https://cdn.example.com/SKU-123.jpg\",\n        \"brand\": \"Acme\"\n        },\n        \"locales\": {\n        \"en_US\": {\n        \"name\": \"Example Product\",\n        \"category\": [\"Electronics\"],\n        \"price\": { \"USD\": 99.99 },\n        \"original_price\": { \"USD\": 119.99 },\n        \"in_stock\": 1,\n        \"stores\": {\n        \"main\": {\n        \"stock_count\": 100\n        },\n        \"outlet\": {\n        \"price\": { \"USD\": 79.99 },\n        \"in_stock\": 1,\n        \"stock_count\": 25\n        }\n        }\n        }\n        }\n        }\n\n
\n

This produces two records:

\n\n
Main Store
\n

The main key is a reserved store identifier that represents the default/locale-level record. Unlike other store keys, it does not append a suffix to the locale string. For example, \"main\" under en_US produces a record with locale en_US, while \"newyork\" produces en_US:newyork.

\n
\n

<p >This is useful when you want to define a base price/stock for the locale itself alongside store-specific overrides. If you use main without any other stores, the result is the same as not using stores at all.</p>

\n
\n

Sample Response

\n

All ingest endpoints return the same response structure:

\n
{\n        \"success\": true,\n        \"message\": {\n        \"valid\": {\n        \"count\": 95\n        },\n        \"invalid\": {\n        \"count\": 5,\n        \"details\": [\n        {\n        \"field\": \"original_price\",\n        \"message\": \"Field is invalidated: 'original_price' is required\",\n        \"count\": 2,\n        \"document_ids\": [\"item-1\", \"item-2\"]\n        },\n        {\n        \"field\": \"url\",\n        \"message\": \"Field is invalidated: 'url' must match pattern\",\n        \"count\": 3,\n        \"document_ids\": [\"item-3\", \"item-4\", \"item-5\"]\n        }\n        ]\n        },\n        \"warnings\": {\n        \"count\": 1,\n        \"details\": [\n        {\n        \"field\": \"image_url\",\n        \"message\": \"Image URL could not be validated\",\n        \"count\": 1,\n        \"document_ids\": [\"item-6\"]\n        }\n        ]\n        },\n        \"invalidRatio\": 0.05\n        }\n        }\n\n
\n

Warnings are informational and do not prevent records from being processed.

\n

Limitations

\n

For all the limits applied, refer to Limitations.

\n","urlObject":{"protocol":"https","path":["v2","ingest","nested"],"host":["catalog","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f7f838cf-3525-452a-968a-bdc06718516c"},{"name":"Update Existing Products in a Flat Format","id":"12f60b5c-f7a7-46de-a1d9-90d1f22cdead","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"myPartnerName","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.

\n","type":"text"}],"body":{"mode":"raw","raw":"[\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locale\": \"en_US\",\n \"price\": { \"USD\": 109.99 },\n \"in_stock\": 0\n }\n ]","options":{"raw":{"language":"json"}}},"url":"https://catalog.api.useinsider.com/v2/update","description":"

The Catalog API allows you to update existing products in your product catalog. You can send only the fields you want to change, and it supports partial updates. You can send only the fields you want to change, or send all fields if that's easier for your integration. Both approaches work.

\n

Endpoint and Headers

\n

POST https://catalog.api.useinsider.com/v2/update

\n

Body Parameters

\n

Default Product Attributes

\n

The following product fields should be sent as parameters in the object, along with their field name and data type, as stated. If any required fields are not sent through the Catalog API, the product is not updated or inserted.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Field NameDescriptionData TypeRequired
item_idUnique product identifier. Max 128 characters.StringYes
localeISO locale code (e.g., en_US, pt_BR). Max 64 characters.StringYes
nameProduct name. Max 512 characters.StringNo
urlProduct page URL. Must include protocol (e.g., https://). Max 512 characters.StringNo
image_urlProduct image URL. Must start with http://, https://, or //.StringNo
priceCurrent selling price per currency. e.g., {\"USD\": 100, \"BRL\": 500}.ObjectNo
original_priceOriginal/list price per currency. Same structure as price.ObjectNo
omnibus_priceOmnibus directive price per currency. Same structure as price.ObjectNo
in_stock1 = in stock, 0 = out of stock.NumberNo
stock_countAvailable quantity. Must be >= 0.NumberNo
item_update_dateLast update timestamp. Format: YYYY-MM-DD hh:mm:ssStringNo
item_start_dateAvailability start date. Format: YYYY-MM-DD hh:mm:ssStringNo
item_end_dateAvailability end date. Format: YYYY-MM-DD hh:mm:ssStringNo
descriptionProduct description. Max 1024 characters.StringNo
brandBrand name. Max 512 characters.StringNo
skuStock keeping unit. Max 512 characters.StringNo
colorProduct color. Max 512 characters.StringNo
sizeProduct size. Max 512 characters.StringNo
genderGender classification. Max 512 characters.StringNo
categoryCategory as an arrayString[]No
tagsProduct tagsString[]No
groupcodeProduct group identifierStringNo
variantsProduct variants. Max 512 characters per item.String[]No
ratingProduct rating, 0–10NumberNo
product_attributesCustom attributes defined in your account.Object {key:value}No
is_status_passive1 = passive/hidden in Smart Recommender and Eureka results, 0 = active.NumberNo
\n

Custom Product Attributes

\n

Custom Product Attributes allow you to define additional details specific to your business. These attributes enrich your catalog with data that supports your unique use cases, personalization logic, and recommendation filters.

\n

Before sending Custom Product Attributes in your payload, you must define them in your account.

\n

If a Default Product Attribute already exists for the information you want to include, use the default one instead of creating a custom one. This keeps your catalog structure consistent.

\n

Custom attributes are sent inside the product_attributes object:

\n
{\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"product_attributes\": {\n        \"material_type\": \"Leather\",\n        \"season\": \"Winter\",\n        \"eco_friendly\": true,\n        \"collection\": \"Winter Collection 2025\",\n        \"delivery_type\": \"Express\"\n        }\n\n
\n

Feed Management Types

\n

Your feed management type determines which pricing and stock attributes are required.

\n
Stock and Revenue Based Feed Management Type
\n

The Stock and Revenue Based Feed Management Type is the most common type. It requires pricing and stock information.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n      \"brand\": \"Velox\",\n      \"price\": { \"USD\": 129.99 },\n      \"original_price\": { \"USD\": 149.99 },\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Availability Based Feed Management Type
\n

For the Availability Based Feed Management Type, only the stock status is required. Pricing is optional.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Published Time Based Feed Management Type
\n

The Published Time Based Feed Management Type requires an update timestamp instead of pricing.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"blog-top-running-shoes-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Top 10 Running Shoes for 2025\",\n      \"url\": \"https://www.example-insiderone.com/blog/top-running-shoes-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/blog/running-shoes-2025.jpg\",\n      \"item_update_date\": \"2025-01-15 10:30:00\"\n    }\n  ]'\n\n
\n
Start & End Time Based Feed Management Type
\n

The Start & End Time Based Feed Management Type requires date range attributes for time-bound content.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"promo-summer-clearance-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Summer Clearance Sale - Up to 50% Off\",\n      \"url\": \"https://www.example-insiderone.com/campaigns/summer-clearance-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/campaigns/summer-clearance.jpg\",\n      \"item_start_date\": \"2025-06-01 00:00:00\",\n      \"item_end_date\": \"2025-08-31 23:59:59\"\n    }\n  ]'\n\n
\n

Product Availability by Feed Management Type

\n

A product is considered available based on criteria that vary by feed management type:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Feed TypeAvailability Condition
Stock & Revenue Basedin_stock must be 1
Availability Basedin_stock must be 1
Published Time Baseditem_update_date must be within the last 2 days (default 2 days, adjustable in Smart Recommender campaigns)
Start & End Time Baseditem_end_date must not be in the past
\n
Currencies
\n

Pricing attributes accept an object mapping currency codes to amounts. You can include multiple currencies in a single record.

\n
{\n  \"price\": {\n    \"USD\": 129.99,\n    \"EUR\": 119.99,\n    \"GBP\": 104.99,\n    \"BRL\": 899.90\n  },\n  \"original_price\": {\n    \"USD\": 149.99,\n    \"EUR\": 139.99,\n    \"GBP\": 119.99,\n    \"BRL\": 999.90\n  }\n}\n\n
\n
Categories
\n

The category attribute accepts an array of strings. How the array is interpreted depends on your account's category type, which is configured during onboarding. You must choose one of the two types:

\n\n

Use this if your categories follow a parent-child structure, with subcategories nested under broader categories. Each element in the array represents a level in the hierarchy, ordered from broadest to most specific.

\n
{\n \"category\": [\"Clothing\", \"Men\", \"Shirts\", \"Casual Shirts\"]\n}\n\n
\n

This creates the hierarchy: Clothing → Men → Shirts → Casual Shirts.

\n

The order matters; the first element is the top-level category and each subsequent element is a child of the previous one.

\n\n

Use this if your categories are independent and don't follow a parent-child hierarchy. Each element is a standalone category label at the same level.

\n
{\n \"category\": [\"Men's Shirts\", \"Women's Dresses\", \"Kids' Shoes\"]\n}\n\n
\n

In flat mode, all categories are treated equally; there is no implied nesting or ordering relationship between elements.

\n

Limits:

\n\n
Tags & Merchandising
\n

Tags are used for product grouping and merchandising rules within the Insider One platform.

\n
{\n \"tags\": [\"new-arrival\", \"bestseller\", \"summer-collection\", \"free-shipping\"]\n}\n\n
\n

You can use tags to:

\n\n

Limits:

\n\n
Group Code
\n

The groupcode attribute links product variants together as a single product group. Products sharing the same groupcode are treated as variations of the same product (e.g., different sizes or colors).

\n
[\n  {\n    \"item_id\": \"velocity-runner-pro-white\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"White\",\n    \"size\": \"10\"\n  },\n  {\n    \"item_id\": \"velocity-runner-pro-black\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"Black\",\n    \"size\": \"10\"\n  }\n]\n\n
\n

Sample Request

\n

The sample below displays a request to insert new products into the catalog using a flat format. Each product is a separate JSON object with all fields inline. Every locale/store combination is a separate object.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/update\" \\\n        -H \"Content-Type: application/json\" \\\n        -H \"X-PARTNER-NAME: your-partner-name\" \\\n        -H \"X-REQUEST-TOKEN: your-api-token\" \\\n        -d '[\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"price\": { \"USD\": 109.99 },\n        \"in_stock\": 0\n        }\n        ]'\n\n
\n

Sample Response

\n

All ingest endpoints return the same response structure:

\n
{\n        \"success\": true,\n        \"message\": {\n        \"valid\": {\n        \"count\": 95\n        },\n        \"invalid\": {\n        \"count\": 5,\n        \"details\": [\n        {\n        \"field\": \"original_price\",\n        \"message\": \"Field is invalidated: 'original_price' is required\",\n        \"count\": 2,\n        \"document_ids\": [\"item-1\", \"item-2\"]\n        },\n        {\n        \"field\": \"url\",\n        \"message\": \"Field is invalidated: 'url' must match pattern\",\n        \"count\": 3,\n        \"document_ids\": [\"item-3\", \"item-4\", \"item-5\"]\n        }\n        ]\n        },\n        \"warnings\": {\n        \"count\": 1,\n        \"details\": [\n        {\n        \"field\": \"image_url\",\n        \"message\": \"Image URL could not be validated\",\n        \"count\": 1,\n        \"document_ids\": [\"item-6\"]\n        }\n        ]\n        },\n        \"invalidRatio\": 0.05\n        }\n        }\n\n
\n
\n

Warnings are informational and do not prevent records from being processed.

\n
\n

Limitations

\n

For all the limits applied, refer to Limitations.

\n","urlObject":{"protocol":"https","path":["v2","update"],"host":["catalog","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"12f60b5c-f7a7-46de-a1d9-90d1f22cdead"},{"name":"Update Existing Products in a Nested Format","id":"ed214937-3717-4182-b082-5be9573acf12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"myPartnerName","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.

\n","type":"text"}],"body":{"mode":"raw","raw":"[\n {\n \"item_id\": \"velocity-runner-pro-white\",\n \"locales\": {\n \"en_US\": {\n \"price\": { \"USD\": 109.99 },\n \"stores\": {\n \"newyork\": {\n \"in_stock\": 0,\n \"stock_count\": 0\n }\n }\n }\n }\n }\n ]","options":{"raw":{"language":"json"}}},"url":"https://catalog.api.useinsider.com/v2/update/nested","description":"

The Catalog API allows you to update existing products in your product catalog using a nested format. You can send only the fields you want to change, and it supports partial updates. You can send only the fields you want to change, or send all fields if that's easier for your integration. Both approaches work.

\n

Endpoint and Headers

\n

POST https://catalog.api.useinsider.com/v2/update/nested

\n

Body Parameters

\n

Default Product Attributes

\n

The following product fields should be sent as parameters in the object, along with their field name and data type, as stated. If any required fields are not sent through the Catalog API, the product is not updated or inserted.

\n

The following product fields should be sent as parameters in the object, along with their field name and data type, as stated. If any required fields are not sent through the Catalog API, the product is not updated or inserted.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Field NameDescriptionData TypeRequired
item_idUnique product identifier. Max 128 characters.StringYes
localeISO locale code (e.g., en_US, pt_BR). Max 64 characters.StringYes
nameProduct name. Max 512 characters.StringNo
urlProduct page URL. Must include protocol (e.g., https://). Max 512 characters.StringNo
image_urlProduct image URL. Must start with http://, https://, or //.StringNo
priceCurrent selling price per currency. e.g., {\"USD\": 100, \"BRL\": 500}.ObjectNo
original_priceOriginal/list price per currency. Same structure as price.ObjectNo
omnibus_priceOmnibus directive price per currency. Same structure as price.ObjectNo
in_stock1 = in stock, 0 = out of stock.NumberNo
stock_countAvailable quantity. Must be >= 0.NumberNo
item_update_dateLast update timestamp. Format: YYYY-MM-DD hh:mm:ssStringNo
item_start_dateAvailability start date. Format: YYYY-MM-DD hh:mm:ssStringNo
item_end_dateAvailability end date. Format: YYYY-MM-DD hh:mm:ssStringNo
descriptionProduct description. Max 1024 characters.StringNo
brandBrand name. Max 512 characters.StringNo
skuStock keeping unit. Max 512 characters.StringNo
colorProduct color. Max 512 characters.StringNo
sizeProduct size. Max 512 characters.StringNo
genderGender classification. Max 512 characters.StringNo
categoryCategory as an arrayString[]No
tagsProduct tagsString[]No
groupcodeProduct group identifierStringNo
variantsProduct variants. Max 512 characters per item.String[]No
ratingProduct rating, 0–10NumberNo
product_attributesCustom attributes defined in your account.Object {key:value}No
is_status_passive1 = passive/hidden in Smart Recommender and Eureka results, 0 = active.NumberNo
\n

Custom Product Attributes

\n

Custom Product Attributes allow you to define additional details specific to your business. These attributes enrich your catalog with data that supports your unique use cases, personalization logic, and recommendation filters.

\n

Before sending Custom Product Attributes in your payload, you must define them in your account.

\n

If a Default Product Attribute already exists for the information you want to include, use the default one instead of creating a custom one. This keeps your catalog structure consistent.

\n

Custom attributes are sent inside the product_attributes object:

\n
{\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locale\": \"en_US\",\n        \"name\": \"Velocity Runner Pro - White\",\n        \"product_attributes\": {\n        \"material_type\": \"Leather\",\n        \"season\": \"Winter\",\n        \"eco_friendly\": true,\n        \"collection\": \"Winter Collection 2025\",\n        \"delivery_type\": \"Express\"\n        }\n\n
\n

Feed Management Types

\n

Your feed management type determines which pricing and stock attributes are required.

\n
Stock and Revenue Based Feed Management Type
\n

The Stock and Revenue Based Feed Management Type is the most common type. It requires pricing and stock information.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"category\": [\"Shoes\", \"Running\", \"Velox\"],\n      \"brand\": \"Velox\",\n      \"price\": { \"USD\": 129.99 },\n      \"original_price\": { \"USD\": 149.99 },\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Availability Based Feed Management Type
\n

For the Availability Based Feed Management Type, only the stock status is required. Pricing is optional.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"velocity-runner-pro-white\",\n      \"locale\": \"en_US\",\n      \"name\": \"Velocity Runner Pro - White\",\n      \"url\": \"https://www.example-insiderone.com/shoes/velocity-runner-pro-white\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/velocity-runner-pro-white.jpg\",\n      \"in_stock\": 1\n    }\n  ]'\n\n
\n
Published Time Based Feed Management Type
\n

The Published Time Based Feed Management Type requires an update timestamp instead of pricing.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"blog-top-running-shoes-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Top 10 Running Shoes for 2025\",\n      \"url\": \"https://www.example-insiderone.com/blog/top-running-shoes-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/blog/running-shoes-2025.jpg\",\n      \"item_update_date\": \"2025-01-15 10:30:00\"\n    }\n  ]'\n\n
\n
Start & End Time Based Feed Management Type
\n

The Start & End Time Based Feed Management Type requires date range attributes for time-bound content.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/ingest\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-PARTNER-NAME: your-partner-name\" \\\n  -H \"X-REQUEST-TOKEN: your-api-token\" \\\n  -d '[\n    {\n      \"item_id\": \"promo-summer-clearance-2025\",\n      \"locale\": \"en_US\",\n      \"name\": \"Summer Clearance Sale - Up to 50% Off\",\n      \"url\": \"https://www.example-insiderone.com/campaigns/summer-clearance-2025\",\n      \"image_url\": \"https://cdn.example-insiderone.com/images/campaigns/summer-clearance.jpg\",\n      \"item_start_date\": \"2025-06-01 00:00:00\",\n      \"item_end_date\": \"2025-08-31 23:59:59\"\n    }\n  ]'\n\n
\n

Product Availability by Feed Management Type

\n

A product is considered available based on criteria that vary by feed management type:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Feed TypeAvailability Condition
Stock & Revenue Basedin_stock must be 1
Availability Basedin_stock must be 1
Published Time Baseditem_update_date must be within the last 2 days (default 2 days, adjustable in Smart Recommender campaigns)
Start & End Time Baseditem_end_date must not be in the past
\n
Currencies
\n

Pricing attributes accept an object mapping currency codes to amounts. You can include multiple currencies in a single record.

\n
{\n  \"price\": {\n    \"USD\": 129.99,\n    \"EUR\": 119.99,\n    \"GBP\": 104.99,\n    \"BRL\": 899.90\n  },\n  \"original_price\": {\n    \"USD\": 149.99,\n    \"EUR\": 139.99,\n    \"GBP\": 119.99,\n    \"BRL\": 999.90\n  }\n}\n\n
\n
Categories
\n

The category attribute accepts an array of strings. How the array is interpreted depends on your account's category type, which is configured during onboarding. You must choose one of the two types:

\n\n

Use this if your categories follow a parent-child structure, with subcategories nested under broader categories. Each element in the array represents a level in the hierarchy, ordered from broadest to most specific.

\n
{\n \"category\": [\"Clothing\", \"Men\", \"Shirts\", \"Casual Shirts\"]\n}\n\n
\n

This creates the hierarchy: Clothing → Men → Shirts → Casual Shirts.

\n

The order matters; the first element is the top-level category and each subsequent element is a child of the previous one.

\n\n

Use this if your categories are independent and don't follow a parent-child hierarchy. Each element is a standalone category label at the same level.

\n
{\n \"category\": [\"Men's Shirts\", \"Women's Dresses\", \"Kids' Shoes\"]\n}\n\n
\n

In flat mode, all categories are treated equally; there is no implied nesting or ordering relationship between elements.

\n

Limits:

\n\n
Tags & Merchandising
\n

Tags are used for product grouping and merchandising rules within the Insider One platform.

\n
{\n \"tags\": [\"new-arrival\", \"bestseller\", \"summer-collection\", \"free-shipping\"]\n}\n\n
\n

You can use tags to:

\n\n

Limits:

\n\n
Group Code
\n

The groupcode attribute links product variants together as a single product group. Products sharing the same groupcode are treated as variations of the same product (e.g., different sizes or colors).

\n
[\n  {\n    \"item_id\": \"velocity-runner-pro-white\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"White\",\n    \"size\": \"10\"\n  },\n  {\n    \"item_id\": \"velocity-runner-pro-black\",\n    \"groupcode\": \"velocity-runner-pro\",\n    \"color\": \"Black\",\n    \"size\": \"10\"\n  }\n]\n\n
\n

Sample Request

\n

The sample below displays a request to update products in the product catalog using a nested format. Each product is a separate JSON object with all fields inline.

\n
curl -X POST \"https://catalog.api.useinsider.com/v2/update/nested\" \\\n        -H \"Content-Type: application/json\" \\\n        -H \"X-PARTNER-NAME: yourPartnerName\" \\\n        -H \"X-REQUEST-TOKEN: your-api-token\" \\\n        -d '[\n        {\n        \"item_id\": \"velocity-runner-pro-white\",\n        \"locales\": {\n        \"en_US\": {\n        \"price\": { \"USD\": 109.99 },\n        \"stores\": {\n        \"newyork\": {\n        \"in_stock\": 0,\n        \"stock_count\": 0\n        }\n        }\n        }\n        }\n        }\n        ]'\n\n
\n

Understanding the field inheritance

\n

In nested format, the same field can be defined at multiple levels (base, locale, store). The Catalog API merges these into a final record using this priority:

\n
store fields > locale fields > base fields\n\n

This allows you to define shared values once in the base and only override the differences at each level.

\n

Example: In the request above, en_US defines price: USD 129.99 at the locale level. The newyork store overrides this with price: USD 119.99, while losangeles inherits the locale price since it doesn't define its own:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
localenamepricein_stockstock_count
en_USVelocity Runner Pro - WhiteUSD 129.99150
en_US:newyorkVelocity Runner Pro - WhiteUSD 119.99 (overridden)112
en_US:losangelesVelocity Runner Pro - WhiteUSD 129.99 (inherited)00
pt_BRVelocity Runner Pro - BrancoBRL 899.90130
\n

Restrictions

\n
Store Attributes
\n

In the nested payload structure, fields can be defined at three levels:

\n
base → Shared across all locales and stores\n        locales → Locale-specific (name, category, etc.)\n        └─ stores → Store-specific overrides (pricing and stock only)\n\n

Only the following fields are allowed at the store level:

\n\n

Including any other field at the store level returns a 400 error.

\n

Example: A valid nested payload with store-level overrides:

\n
{\n        \"item_id\": \"SKU-123\",\n        \"base\": {\n        \"url\": \"https://example.com/product/SKU-123\",\n        \"image_url\": \"https://cdn.example.com/SKU-123.jpg\",\n        \"brand\": \"Acme\"\n        },\n        \"locales\": {\n        \"en_US\": {\n        \"name\": \"Example Product\",\n        \"category\": [\"Electronics\"],\n        \"price\": { \"USD\": 99.99 },\n        \"original_price\": { \"USD\": 119.99 },\n        \"in_stock\": 1,\n        \"stores\": {\n        \"main\": {\n        \"stock_count\": 100\n        },\n        \"outlet\": {\n        \"price\": { \"USD\": 79.99 },\n        \"in_stock\": 1,\n        \"stock_count\": 25\n        }\n        }\n        }\n        }\n        }\n\n
\n

This produces two records:

\n\n
Main Store
\n

The main key is a reserved store identifier that represents the default/locale-level record. Unlike other store keys, it does not append a suffix to the locale string. For example, \"main\" under en_US produces a record with locale en_US, while \"newyork\" produces en_US:newyork.

\n
\n

This is useful when you want to define a base price/stock for the locale itself alongside store-specific overrides. If you use main without any other stores, the result is the same as not using stores at all.

\n
\n

Limitations

\n

For all the limits applied, refer to Limitations.

\n","urlObject":{"protocol":"https","path":["v2","update","nested"],"host":["catalog","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed214937-3717-4182-b082-5be9573acf12"},{"name":"Create Locale Configurations","id":"3333a8a0-150a-4166-86f2-21393717e2ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"myParterName","description":"

This is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.

\n","type":"text"}],"body":{"mode":"raw","raw":"'[\n {\n \"language_and_country_code\": \"tr_TR\",\n \"store_id\": \"Ankara\"\n },\n {\n \"language_and_country_code\": \"en_US\",\n \"store_id\": \"Portland\"\n }\n]'","options":{"raw":{"language":"json"}}},"url":"https://catalog.api.useinsider.com/v2/locales/batch","description":"

The Catalog API allows you to create locale configurations. For larger or more complex setups, the Create Locale endpoint enables faster and more scalable locale management.

\n

Refer to Locales for further information.

\n

Endpoint and Headers

\n

POST https://catalog.api.useinsider.com/v2/locales/batch

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-PARTNER-NAMEmyParterNameThis is your partner name. Navigate to InOne > Inone Settings > Account Settings to copy your partner name. The partner name should be lowercase.
X-REQUEST-TOKEN1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your Catalog API token.
\n

Sample Request

\n

The sample below displays a request to create locale configurations:

\n
curl --request POST \\\n  --url https://catalog.api.useinsider.com/v2/locales/batch \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-PARTNER-NAME: your-partner-name' \\\n  --header 'X-REQUEST-TOKEN: your-api-token' \\\n  --data '[\n    {\n        \"language_and_country_code\": \"tr_TR\",\n        \"store_id\": \"Ankara\"\n    },\n    {\n        \"language_and_country_code\": \"en_US\",\n        \"store_id\": \"Portland\"\n    }\n]'\n\n
\n

Sample Response

\n
{\n  \"success\": true,\n  \"created_locale_count\": 2\n}\n\n
\n

Limitations

\n

For all the limits applied, refer to Limitations.

\n","urlObject":{"protocol":"https","path":["v2","locales","batch"],"host":["catalog","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3333a8a0-150a-4166-86f2-21393717e2ea"}],"id":"a73c6655-4bce-43ed-9046-3e0038604a6b","description":"

The Catalog API enables you to send your product catalog data to the Insider One platform. You can ingest new products, update existing ones, and manage locale configurations through a set of REST endpoints.

\n

Product data powers Insider One's personalization, recommendation, and merchandising features. Keeping your catalog up to date ensures accurate product information across all Insider One powered experiences on your website, app, and messaging channels.

\n

The Catalog API has five different endpoints with different functions:

\n\n
\n
\n

Ingest vs Update:

\n\n

The key concepts while using the Catalog API are:

\n

Locale

\n

locale identifies the market context for your product data. It combines a language/country code with an optional store identifier, enabling you to serve localized content and region-specific pricing to different markets.

\n

Products can exist in multiple locales simultaneously. Each locale maintains its own product name, description, pricing, categories, and stock data, allowing you to manage a global catalog from a single integration.

\n
\n

<p >The locale value in your API payload must exactly match a locale defined in your account. Payloads with undefined locales will not be ingested.</p>

\n
\n

Language and Country Code

\n

The base locale follows the ISO standard format {language}_{COUNTRY} (e.g., en_US, pt_BR, de_DE). It determines the language of your product names/descriptions and the country context of your catalog.

\n

When using stores, the locale value is extended with a store suffix: {locale}:{store} (e.g., en_US:newyork).

\n

Store

\n

store sits under a locale and represents a specific warehouse, retail branch, delivery hub, or virtual storefront within that locale. Stores enable inventory segmentation; prices, availability, and stock can differ by store.

\n

Store-level data is limited to pricing and stock fields only (price, original_price, omnibus_price, in_stock, stock_count). All other product attributes (name, category, image, etc.) are defined at the locale level and shared across stores.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ExampleLocaleStoresPurpose
Grocery chain (US)en_USen_US:east_coast, en_US:west_coastSeparate warehouses, price zones
Fashion retailer (EMEA)en_GB, fr_FR, de_DENo storesLanguage-only personalization
Electronics store (Brazil)pt_BRpt_BR:saopaulo, pt_BR:riodejaneiroRegional stock and pricing
\n

Managing Locales

\n

You can create and manage locales through the Insider One’s InOne panel.

\n

Alternatively, you can create locales in bulk via the Catalog API using the Create Locale API.

\n\n

Feed Management Type

\n

Your account is configured with a Feed Management Type that determines which pricing/stock fields are required in your product payloads.

\n

Every Ingest request requires core product fields (item_id, locale, name, url, image_url). Based on your Feed Management Type, some fields are added as required fields on top of these:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TypeAdditional Required FieldsUse Case
Stock & Revenue Basedprice, original_price, in_stockStandard ecommerce catalogs with pricing and inventory
Availability Basedin_stockCatalogs where pricing is not tracked
Published Time Baseditem_update_dateContent feeds ordered by publication date
Start & End Time Baseditem_start_date, item_end_dateTime-bound promotions or campaigns
\n
\n
\n

Your feed management type is selected during the onboarding process. If you are unsure which type applies to your integration, check your Catalog Settings or contact the Insider One team.

\n

Limitations

\n

The Catalog API enforces limits on request size, field lengths, and field values to ensure data quality and system stability. Records that exceed these limits will be rejected or reported as invalid in the response.

\n

Request & Rate Limits

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LimitValueDetails
Maximum records per request10,000Exceeding returns 400
Maximum request body size5 MBExceeding returns 400
Maximum single record size512 KBOversized record is marked invalid; other records are not affected.
Rate limit (per account)60 requests/minuteRolling window. Exceeding returns 429
\n

Each Catalog API call counts as one request regardless of how many records it contains. To maximize throughput, batch as many records as possible per request (up to 10,000) rather than sending many small requests.

\n

Example: If you send 60 requests within a 1-minute window, subsequent requests will be rejected with 429 Too Many Requests until the oldest requests fall outside the window.

\n

Field Length Limits

\n

Fields that exceed the maximum length will cause the individual record to be marked as invalid. Other records in the same request are not affected.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldMax Lenght
item_id128 characters
name512 characters
url512 characters
description1024 characters
brand, sku, color, size, gender512 characters each
locale64 characters
category (combined)1024 characters
tags (combined)4096 characters
variants (each)512 characters
product_attributes values512 characters per value
product_attributes arrays1024 characters combined
\n

Value Constraints

\n

The following constraints are enforced during validation. Records that violate these rules will be marked as invalid in the response with a corresponding error detail.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldConstraint
item_id, localeCannot be undefined, unknown, null, or empty
in_stockMust be 0 or 1
stock_countMust be >= 0
ratingMust be 0–10
price, original_price amountsMust be >= 0
urlMust include protocol (https://...)
image_urlMust start with http://, https://, or //
\n

Usage Notes

\n\n

Locale Limits

\n\n
\n

<p >The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider One team — we can adjust it to fit your needs.</p>

\n
\n

Error Handling

\n

The Catalog API distinguishes between request-level and record-level errors:

\n\n

HTTP Status Codes

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CodeMeaning
200Request processed. Check response body for individual record results.
400Invalid request (malformed JSON, limit exceeded, invalid fields).
401Authentication failed. Invalid token or partner name.
403Forbidden. API integration not active or IP not allowed.
429Rate limit exceeded.
500Internal server error.
\n

Common Error Messages

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorStatusCause
Maximum allowed record count is exceeded.400More than 10,000 records in request
Maximum allowed request size is exceeded.400Request body larger than 5 MB
Request data is not in valid JSON format.400Malformed JSON body
Unknown field in nested payload: \"\"400Field not recognized in nested payload structure
Partner does not have necessary integration settings for Catalog API.403API integration not enabled for your account
Partner token authentication is unsuccessful.401Invalid token
IP is not allowed.403Request from unauthorized IP address
No locales sent in payload400Empty locales array in /v2/locales
Record size limit is exceeded.200Single record exceeds 512 KB. The request succeeds but the oversized record is reported as invalid in the response body. Other records are not affected.
\n
","_postman_id":"a73c6655-4bce-43ed-9046-3e0038604a6b"},{"name":"Recommendations","item":[{"name":"Algorithm Descriptions","item":[{"name":"Chef","id":"bb847166-d404-4aff-a05f-4885286452f9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/chef","description":"

Chef is an automated recommendation algorithm that automatically identifies the best mixed strategy by testing the most popular items, top sellers, user-based, highest-discounted, new arrivals, and trending items algorithms to improve conversion rates. In a mixed strategy, you manually choose an algorithm for each slot. Chef, instead, chooses the best combination by automatically evaluating the algorithms' performance.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/chef

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier, which is assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLanguage or region of the site.StringYes
platformwebIt is the requested platform. Its value can be web and app. Web comes by default.EnumNo
currencyUSDShows products with the specified currency.StringNo
userIdtestUserUser identifier, which is assigned by Insider One.StringNo
hpfalse, true or 0, 1Makes affinities affect the products of the response. The default is false.BooleanNo
categoryList[\"Tops\",\"Shirts\"]Category filter of the products
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the response.BooleanNo
shufflefalseShuffles the products of the response.BooleanNo
getGroupProductstrueShows variant products under the products of the response.BooleanNo
groupProductsFieldsAdds these fields to the variant products’ details.StringNo
excludeVariantstrueExclude variants from the response.BooleanNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
countryItalyRequested country informationStringNo (Only for Location Based Top Sellers usage in Mixed Strategy)
cityMilanRequested city informationStringNo (Only for Location Based Top Sellers usage in Mixed Strategy)
dayLimit7Threshold last update day value for Publisher partners The default is 2 days.IntegerNo
ulvtrue, falseEnables User Last Visit to affect recommendation resultsBooleanNo
\n

Sample Request

\n

The sample below shows a request to Chef, an automated recommendation strategy that picks the best-performing mix (popular items, top sellers, user-based, highest-discounted, new arrivals, trending, etc.) per slot—no manual algorithm selection required.

\n
https://recommendation.api.useinsider.com/v2/chef?partnerName={PartnerName}&locale={Locale}\n\n
\n

Sample Response

\n
{\n        \"success\": true,\n        \"total\": 16,\n        \"types\": {\n        \"mpop\": 14,\n        \"mvop\": 2\n        },\n        \"data\": [\n        \"ABC1234\",\n        \"ABC1243\",\n        \"ABC1234\",\n        \"ABC1235\",\n        \"ABC1237\",\n        \"ABC1230\",\n        \"ABC1263\",\n        \"ABC1209\",\n        \"ABC1256\",\n        \"CBA1234\",\n        \"CBA1233\",\n        \"CBA1236\",\n        \"CBA1239\",\n        \"CBA1221\",\n        \"CBA1209\",\n        \"CBA1247\"\n        ]\n        }\n\n
\n

Fallback Algorithms

\n

The Chef algorithm doesn't have a specific fallback mechanism; instead, fallback algorithms are determined by the individual algorithms selected by Chef.

\n","urlObject":{"protocol":"https","path":["v2","chef"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bb847166-d404-4aff-a05f-4885286452f9"},{"name":"Complementary Products","id":"1b6352a7-febd-45bc-a661-fdd7a5f51ce9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/complementary","description":"

The Complementary Products algorithm surfaces products that go well with the one the shopper is currently viewing, items that complete the look, set, or use case rather than replace it (e.g., a belt for trousers, a case for a phone, a lamp for a sofa).

\n

It uses a catalog-aware map of complementary category relationships generated by a language model from your category tree, so it works even on catalogs with little or no purchase history. Performs optimally on product detail and cart pages.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/complementary

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
productId1068The reference product for which the complement is computedStringYes
currencyUSDProduct currency. If no value is set, the default currency in your settings is used.StringNo
size10Response items. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”]Category filter of the productsArrayNo
userIda1b2c3d4User identifier; enables personalization boosts when providedStringNo
platformwebRequested platform (default: web)EnumNo
detailstrueAdds details to the products of the responseBooleanNo
excludeVariantstrueHides color/size variants of the same base productBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
filter[in_stock][=][true]Restricts results by fields such as price, brand, color, gender, in_stock, or categoryStringNo
hptrueHyper-personalization flag. Re-ranks results using the shopper's attribute preferencesBooleanNo
getGroupProductstrueReturns all color/size variants grouped under each recommended productBooleanNo
groupProductsFieldsproduct_attributes.color,priceComma-separated list of fields to include in the grouped variants; products missing any listed field are droppedStringNo
getAllGroupProductsFieldstrueReturns all variant fields without dropping products for missing fields; automatically enables getGroupProductsBooleanNo
excludeViewDay30Days before excluding previously viewed productsIntegerNo
excludeViewItem100Number of viewed products to excludeIntegerNo
excludePurchaseDay30Days before excluding previously purchased productsIntegerNo
excludePurchaseItem100Number of purchased products to excludeIntegerNo
\n

Sample Request

\n

The sample below shows a request to Complementary Products, the algorithm that suggests items frequently bought or viewed alongside the anchor product.

\n
https://recommendation.api.useinsider.com/v2/complementary?partnerName={PartnerName}&locale={Locale}&productId={ABC123}&size=10\n\n
\n

Sample Response

\n
{\n  \"success\": true,\n  \"total\": 10,\n  \"types\": { \"cp\": 10 },\n  \"data\": [\n    \"649517_49890\",\n    \"568334_49053\",\n    \"639714_49677\"\n  ]\n}\n\n
\n

Fallback Algorithms

\n

When Complementary Products results are insufficient, these algorithms fill the response:

\n\n","urlObject":{"protocol":"https","path":["v2","complementary"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1b6352a7-febd-45bc-a661-fdd7a5f51ce9"},{"name":"Highest Discounted Products","id":"e665443c-9e05-4f71-840c-897c016a56ec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/highest-discounted","description":"

The Highest Discounted Products algorithm recommends products based on their discount ratios, prioritizing those with higher discounts. It calculates the discount ratio for each product using the original and discounted prices. Recommended products will be sorted from highest to lowest discount for the given size. For each currency type, the discount ratio is calculated separately. This type of algorithm works best on main and category pages.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/highest-discounted

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringYes
userIda1b2c3d4User identifier which is assigned by Insider OneStringNo
hpfalse, true, or 1, 0Makes affinities affect products of the response. The default is false.BooleanNo (Can only be used with userId)
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
productIdABC123CBACurrent product IDStringNo
\n

If you want to get top sellers products from the category or categories you want, specify either categoryList or category and subCategory.

\n

Sample Request

\n

The sample below displays a request for the Highest Discounted Products; the algorithm recommends products based on their discount ratios, prioritizing those with higher discounts.

\n
https://recommendation.api.useinsider.com/v2/highest-discounted?partnerName={Partner Name}&locale={Locale}&size=5¤cy={Currency}\n\n
\n

Sample Response

\n
{\n        \"success\": true,\n        \"total\": 5,\n        \"types\": {\n        \"hdop\": 5\n        },\n        \"data\": [\n        \"AB76543\",\n        \"AB54321\",\n        \"YZ76543\",\n        \"AB49876\",\n        \"AB01234\"\n        ]\n        }\n\n

Fallback Algorithms

\n

If the products from the Highest Discounted Products are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","highest-discounted"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e665443c-9e05-4f71-840c-897c016a56ec"},{"name":"Manual Merchandising","id":"c73b16d5-bbc9-4234-84f9-cb8670aba821","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/manual-merchandising","description":"

The Manual Merchandising algorithm retrieves product details manually specified and returns only in-stock products. It enables you to showcase specific products or content (e.g., for special days) from a list specified in the campaign configuration. In addition, only in-stock products will be displayed in the recommendation widget. This type of algorithm can be used on all page types to promote specific products.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/manual-merchandising

\n

You need to write Product IDs as comma-separated in the productId parameter, such as productId=ed061306,287a4a89,8f0db743,69de9b05

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringYes
productIdABC1234The ID of the product whose complementary is requestedStringYes
userIdtestUserUser identifier which is assigned by Insider OneStringNo
hpfalse, true or 0, 1Makes affinities affect products of the response. The default is false.BooleanNo (Can only be used with userId)
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
includeOutOfStockItemsFalse, true, 0, or 1Boolean flag to decide if out of stock products given in endpoint parameter should return in API response. The default is false.BooleanNo
\n

Sample Request

\n

The sample below displays a request to the Manual Merchandising algorithm:

\n
https://recommendation.api.useinsider.com/v2/manual-merchandising?partnerName={Partner Name}&locale={Locale}&productId=ABC12345,XYZ12345\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 2,\n    \"types\": {\n        \"mm\": 2\n    },\n    \"data\": [\n        \"ABC12345\",\n        \"XYZ12345\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

There is no fallback algorithm for this recommendation type, as only requested items are recommended.

\n","urlObject":{"protocol":"https","path":["v2","manual-merchandising"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c73b16d5-bbc9-4234-84f9-cb8670aba821"},{"name":"Mixed Strategy","id":"f433ab29-d1d6-4461-924b-c3e2b2dfdadc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/mixed","description":"

The Mixed Strategy algorithm creates a customized, mixed recommendation strategy that combines different recommendation types. It is a way to use different algorithms for each slot in the Recommendation Widget. The mixed strategy allows you to use multiple algorithms in a single recommendation widget on your website. It works best on the main and category pages.

\n

The duplicated items are automatically removed by the Mixed Strategy algorithm.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/mixed

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
strategy[{\"recommendationType\":\"rvp\",\"size\":1}, {\"recommendationType\":\"ub\",\"size\":2}]List of strategies.StringYes
userIdtestUserUser IDStringNo
hpfalse, true, or 0, 1Makes affinities affect the products of the response. The default is false.BooleanNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
countryGermanyRequested country informationStringNo (Only for Location Based Top Sellers usage in Mixed Strategy)
cityHamburgRequested city informationStringNo (Only for Location Based Top Sellers usage in Mixed Strategy)
dayLimit7Threshold last update day value for Publisher partners (The default is 2 days.)IntegerNo
ulvtrue, falseEnables User Last Visit to affect the recommendation resultsBooleanNo
\n

You need to add the necessary query parameters for the strategy or strategies you are using.

\n

Strategy

\n

Strategy is used to specify the desired recommendation types and sizes. Strategies are given within an array. Each strategy is an object that contains the keys recommendationType and sizerecommendationType indicates the type of recommendation required, while size specifies the quantity needed.

\n
[\n    {\n        \"recommendationType\": \"ub\",\n        \"size\": 2\n    },\n    {\n        \"recommendationType\": \"btb\",\n        \"size\": 2\n    },\n    ...\n]\n\n
\n

List of Strategies

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
AlgorithmAbbreviation
Chefchef
Complementary Productscp
Highest Discountedhdop
Highest Discounted of Categoryhdoc
Location Based Top Sellersmpol
Manual Merchandisingmm
Most Popularmvop
Most Popular of Categorymvoc
Most Valuable Productsmvpop
Most Valuable Products of Categorymvpoc
New Arrivalsnaop
New Arrivals of the Categorynaoc
Viewed Togethervtv
Purchased Togetherbtb
Purchased with Last Purchasedlpt
Substitute Productssp
Top Sellersmpop
Top Sellers of Categorympoc
Trending Productstpop
Trending Products of Categorytpoc
User Basedub
Viewed Togethervtv
\n

Sample Request

\n

The sample below displays a request to the Mixed Strategy algorithm:

\n
https://recommendation.api.useinsider.com/v2/mixed?locale={Locale}&partnerName={PartnerName}&strategy=[{\"recommendationType\":\"hdop\",\"size\":2}]\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 2,\n    \"types\": {\n        \"hdop\": 2\n    },\n    \"data\": [\n        \"XYZ-987789\",\n        \"ABC-123321\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

Fallback algorithms are determined by your strategy selections.

\n","urlObject":{"protocol":"https","path":["v2","mixed"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f433ab29-d1d6-4461-924b-c3e2b2dfdadc"},{"name":"Most Popular Items","id":"ad1756ce-6ea4-46ed-ab8d-111cfa639f92","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/most-popular","description":"

The Most Popular Items algorithm recommends items by analyzing the most popular products by page views. It generates recommendations based on the page view counts during the last 30 days. The Most Popular Items algorithm works best on main, category, and product pages.

\n

Endpoint

\n

GET https://recommendation.api.useinsider.com/v2/most-popular

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the details of variant productsStringNo
excludeVariantstrueExclude variants from the response.BooleanNo
userIda1b2c3d4User identifier, which is assigned by Insider OneStringNo
excludeViewDay30After how many days should viewed products be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days should purchased products be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect products of the responseBooleanNo
productIdABC123CBACurrent product IDStringNo
\n

Algorithm Customization

\n

The Most Popular Items algorithm also provides users with product recommendations based on their popularity within categories. To obtain category-based most popular products, the API endpoint should include the categoryList parameter with valid category values from the Product Catalog.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Variant NameConditionParameter(s)
Most Popular Items of PartnerNo category filterDefault (no categoryList)
Most Popular Items of CategoryCategory filter providedcategoryList=[category1, category2, ...]
\n

When categoryList is provided, recommendations are filtered to show only the Most Popular products within the specified categories. Recommendations served in the API response will be abbreviated as mvoc for Most Popular Items of Category recommendations.

\n

Sample Request

\n

The sample below displays a request to Most Popular Items, an algorithm that recommends products with the highest overall engagement based on page views.

\n
https://recommendation.api.useinsider.com/v2/most-popular?locale={Locale}&partnerName={PartnerName}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mvop\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n\n
https://recommendation.api.useinsider.com/v2/most-popular?locale={Locale}&partnerName={PartnerName}&categoryList=[“Dog Food”]\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mvoc\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products come from Most Popular Items are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","most-popular"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ad1756ce-6ea4-46ed-ab8d-111cfa639f92"},{"name":"Most Valuable Products","id":"60dd98e9-6b13-4bc7-ad1a-d55b9ce3f2d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/most-valuable","description":"

The Most Valuable Products algorithm recommends items based on their contribution to total revenue. It recommends products that generate more revenue across your site. Products are recommended based on the contribution to revenue and revenue per visit. This type of algorithm can be used on all page types.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/most-valuable

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the response.BooleanNo
shufflefalseShuffles the products of the response.BooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIda1b2c3d4User identifier that is assigned by Insider OneStringNo
excludeViewDay30After how many days should viewed products be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days should purchased products be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect the products of the responseBooleanNo
productIdABC123CBACurrent product IDStringNo
\n

Sample Request

\n

The sample below displays a request to Most Valuable Products, an algorithm that recommends items based on their contribution to total revenue:

\n
https://recommendation.api.useinsider.com/v2/most-valuable?locale={Locale}¤cy={Currenct}&partnerName={PartnerName}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 10,\n    \"types\": {\n        \"mpop\": 10\n    },\n    \"data\": [\n        \"QAZ-7890\",\n        \"XYZ-1234\",\n        \"QAZ-7899\",\n        \"XYZ-1233\",\n        \"QAZ-7898\",\n        \"XYZ-1243\",\n        \"QAZ-7891\",\n        \"XYZ-1223\",\n        \"QAZ-7892\",\n        \"XYZ-1342\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from Most Valuable Products are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","most-valuable"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"60dd98e9-6b13-4bc7-ad1a-d55b9ce3f2d8"},{"name":"New Arrivals","id":"7da86df0-658a-4aa7-96b1-113450208a63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/new-arrivals","description":"

The New Arrivals algorithm displays products that have been newly added to the website. It directly accesses the catalog and sorts products by creation date. Changing the integration type doesn't affect the results if the product is already in the database. You can use the New Arrivals algorithm on the main page to showcase new products.

\n

For the Publisher vertical, the updated time applies to newly released articles.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/new-arrivals

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIdtestUserUser IDStringNo
hptrue, false or 0, 1Makes affinities affect products of the response. The default is false.BooleanNo
excludeViewDay30After how many days viewed products should be excludedIntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
productIdABC123CBACurrent product IDStringNo
\n

Algorithm Customization

\n

The New Arrivals algorithm can also provide users with discounted product recommendations within the desired category.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Variant NameConditionParameter(s)
New Arrivals of PartnerNo category filterDefault (no categoryList)
New Arrivals of CategoryCategory filter providedcategoryList=[cat1, cat2, ...]
\n
\n
\n

When categoryList is provided, only newly added products within the specified categories are recommended, ordered by publish date. Recommendations served in the API response will be abbreviated as naoc for the New Arrivals of Category recommendations.

\n

Sample Request

\n

The sample below displays a request to New Arrivals, an algorithm that recommends products newly added to the website.

\n
https://recommendation.api.useinsider.com/v2/new-arrivals?locale={Locale}&partnerName={PartnerName}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"naop\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Sample Request for New Arrivals of Category

\n
https://recommendation.api.useinsider.com/v2/new-arrivals?locale={Locale}&partnerName={PartnerName}¤cy={Currency}&categoryList=[“Dog Food”]\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"naoc\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from New Arrivals are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","new-arrivals"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7da86df0-658a-4aa7-96b1-113450208a63"},{"name":"Purchased Together","id":"d45f0226-7636-4e18-9a06-c84e24c7008e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/purchased-together","description":"

The Purchased Together algorithm recommends items by finding complementary products purchased by other users who have also purchased the user's items. It generates recommendations based on products purchased in the same sessions and in the same locale over the past 30 days. After generating recommendations, the Purchased Together algorithm orders the results according to purchase frequency. With the Purchased Together algorithm, you can apply your users' purchase patterns to your strategies. This type of algorithm works best on product and cart pages.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/purchased-together

\n

When this algorithm is used on the cart page, its endpoint differs for multiple products. For example, three products (X, Y, Z) are in the cart. The recommendation API will return the complementary products for each product in the cart as X1, Y1, Z1, X2, Y2, Z2... respectively.

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
productIdABC1234The ID of the product whose complementary is requestedStringYes
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIdtestUserUser identifier which is assigned by Insider OneStringNo
hptrue, false, or 0, 1Makes affinities affect products of the response. The default is false.BooleanNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
\n

Sample Request

\n

The sample below displays a request to Purchased Together, an algorithm that recommends items frequently bought alongside the user’s selected product(s).

\n
https://recommendation.api.useinsider.com/v2/purchased-together?partnerName={PartnerName}&locale={Locale}&productId={ProductId}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 10,\n    \"types\": {\n        \"btb\": 10\n    },\n    \"data\": [\n        \"QAZ-7890\",\n        \"XYZ-1234\",\n        \"QAZ-7899\",\n        \"XYZ-1233\",\n        \"QAZ-7898\",\n        \"XYZ-1243\",\n        \"QAZ-7891\",\n        \"XYZ-1223\",\n        \"QAZ-7892\",\n        \"XYZ-1342\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from Purchased Together are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","purchased-together"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d45f0226-7636-4e18-9a06-c84e24c7008e"},{"name":"Purchased with Last Purchased","id":"38785738-dfab-4ea3-ab11-8e15b32734b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/last-purchased-together","description":"

The Purchased with Last Purchased algorithm is one of Insider One's personalized algorithms. It recommends the purchased products along with the user’s last purchased product. Purchase events can be collected from Web, Mobile, and Offline (CRM) UCD events. It is available on Web Smart Recommender, API-based Recommender, and App Recommender.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/last-purchased-together

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerName1000001Partner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLanguage or region of the siteStringYes
currencyUSDShows products with the specified currencyStringNo
userIda1b2c3d4User identifier that is assigned by Insider OneStringYes
platformwebRequested platform. Web comes by default.StringNo
detailstrueAdds item details to the responseBooleanNo
hpfalseHyper-personalization activationBooleanNo
size50Required number of items in response. The maximum allowed size is 100.IntegerNo
shufflefalseShuffle the products in the responseBooleanNo
excludeVariantstrueExclude variants by the same group ID. If the panel setting is true for this feature, the parameter will always be true. Otherwise, it depends on the parameter. The default value is false.BooleanNo
excludePurchaseDay30Exclude items the user purchased in X daysIntegerNo
excludeViewDay30Exclude items the user viewed in X daysIntegerNo
excludePurchaseItem100The number of purchased products to excludeIntegerNo
excludeViewItem100The number of viewed products to excludeIntegerNo
productIdABC123CBACurrent product IDStringNo
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
categoryList[“Clothes”, “Skirts”]Category filters of the productArray (of string)No
getGroupProductstrue, falseShows variant products under the products of the responseBooleanNo
groupProductsFieldsname, categoryAdds these fields to the variant products’ detailsStringNo
dayLimit7Threshold last update day value for Publisher partners. The default is 2 days.IntegerNo
\n

Sample Request

\n

The sample below displays a request to Purchased with Last Purchased, one of Insider One’s personalized recommendation algorithms.

\n
https://recommendation.api.useinsider.com/v2/last=purchased-together?partnerName={PartnerName}&locale={Locale}&userId={UserId}\n\n
\n

Sample Response

\n
{\n  \"success\": true,\n  \"total\": 10,\n  \"types\": {\n    \"lpt\": 10\n  },\n  \"data\": [\n    \"QAZ-7890\",\n    \"XYZ-1234\",\n    \"QAZ-7899\",\n    \"XYZ-1233\",\n    \"QAZ-7898\",\n    \"XYZ-1243\",\n    \"QAZ-7891\",\n    \"XYZ-1223\",\n    \"QAZ-7892\",\n    \"XYZ-1342\"\n  ]\n}\n\n
\n

Fallback Algorithms

\n

Because of its nature, the Purchased with Last Purchased Algorithm doesn’t have a fallback. However, you can always tune it by configuring the minimum number of products displayed in the Recommendation carousel under Recommendation Strategies.

\n","urlObject":{"protocol":"https","path":["v2","last-purchased-together"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"38785738-dfab-4ea3-ab11-8e15b32734b7"},{"name":"Similar Products","id":"3eca9519-16cd-42ec-b1e6-20bbbfc13d00","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/similar","description":"

The Similar Products algorithm surfaces products that share descriptive characteristics with the product a shopper is currently viewing. It compares product name, category, and textual metadata, such as material_type, tags, gender, or any custom attribute you have defined. Up to 5 additional attributes can be included and configured on the Product Attributes page.

\n

It performs optimally on product detail and cart pages where the written description carries most of the decision weight (electronics, books, grocery, health, cosmetics, accessories).

\n

Endpoint

\n

GET https://recommendation.api.useinsider.com/v2/similar

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
productId1068The reference product for which the complement is computedStringYes
currencyUSDProduct currency. If no value is set, the default currency in your settings is used.StringNo
size10Response items. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”]Category filter of the productsArrayNo
userIda1b2c3d4User identifier; enables personalization boosts when providedStringNo
platformwebRequested platform (default: web)EnumNo
detailstrueAdds details to the products of the responseBooleanNo
excludeVariantstrueHides color/size variants of the same base productBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
filter[in_stock][=][true]Restricts results by fields such as price, brand, color, gender, in_stock, or categoryStringNo
hptrueHyper-personalization flag. Re-ranks results using the shopper's attribute preferencesBooleanNo
getGroupProductstrueReturns all color/size variants grouped under each recommended productBooleanNo
groupProductsFieldsproduct_attributes.color,priceComma-separated list of fields to include in the grouped variants; products missing any listed field are droppedStringNo
getAllGroupProductsFieldstrueReturns all variant fields without dropping products for missing fields; automatically enables getGroupProductsBooleanNo
excludeViewDay30Days before excluding previously viewed productsIntegerNo
excludeViewItem100Number of viewed products to excludeIntegerNo
excludePurchaseDay30Days before excluding previously purchased productsIntegerNo
excludePurchaseItem100Number of purchased products to excludeIntegerNo
\n

Sample Request

\n

The sample below shows a request to Similar Products, the algorithm that suggests items frequently bought or viewed alongside the anchor product.

\n
https://recommendation.api.useinsider.com/v2/similar?partnerName={PartnerName}&locale={Locale}&productId={ABC123}&size=3\n\n
\n

Sample Response

\n
{\n  \"success\": true,\n  \"total\": 3,\n  \"types\": { \"sim\": 3 },\n  \"data\": [\n    \"649517_49890\",\n    \"568334_49053\",\n    \"639714_49677\"\n  ]\n}\n\n
\n

Fallback Algorithms

\n

When not enough products can be matched by their textual fields (additional product attributes can be activated from Product Catalog Management > Product Attributes > Similarity, by default, name and category are used), the system falls back to:

\n\n","urlObject":{"protocol":"https","path":["v2","similar"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3eca9519-16cd-42ec-b1e6-20bbbfc13d00"},{"name":"Recently Viewed Products","id":"c51542d8-99c9-45c4-b58e-e8260dbc7239","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/recently-viewed","description":"

The Recently Viewed Products algorithm is one of Insider One's personalized algorithms. It tracks the user’s product-view behavior collected from the UCD, capturing data from both Web and Mobile events. In return, the Recently Viewed Products algorithm provides recommendations based on the user’s recently viewed products. It performs best on the cart pages. It is available on Web Smart Recommender, API-based Recommender, and App Recommender.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/recently-viewed

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerName1000001Partner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLanguage or region of the siteStringYes
currencyUSDShows products with the specified currencyStringNo
userIda1b2c3d4User identifier that is assigned by Insider OneStringYes
platformwebIts value can be web, mobile, or mobileV2. Web comes default.StringNo
detailstrueAdds item details to the responseBooleanNo
hpfalseHyper-personalization activationBooleanNo
size50Required number of items in response. The maximum allowed size is 100.IntegerNo
shufflefalseShuffle the products in the response.BooleanNo
excludeVariantstrueExclude variants by the same group ID. If the panel setting is true for this feature, the parameter will always be true. Otherwise, it depends on the parameter. The default value is false.BooleanNo
excludePurchaseDay30Exclude items the user purchased in X daysIntegerNo
excludePurchaseItem100The number of purchased products to excludeIntegerNo
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
dayLimit7Threshold last update day value for Publisher partners (The default is 2 days.)IntegerNo
getGroupProductstrue, falseShows variant products under the products of the responseBooleanNo
groupProductsFieldsname, categoryAdds these fields to the variant products’ detailsStringNo
\n

Fallback Algorithms

\n

Because of its nature, the Recently Viewed Algorithm doesn’t have a fallback. However, you can always tune it by configuring the minimum number of products displayed in the recommendation carousel in the Recommendation Strategies.

\n","urlObject":{"protocol":"https","path":["v2","recently-viewed"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c51542d8-99c9-45c4-b58e-e8260dbc7239"},{"name":"Substitute Products","id":"934103c4-fd03-49f7-a3cc-9865d3e98ca0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/substitute","description":"

The Substitute Products algorithm provides users with suggestions for products that can serve as replacements for items they have interacted with. The goal is to enhance user satisfaction and engagement by presenting products that align with their functional preferences and interests. This algorithm generates recommendations based on factors such as product name similarity, view-to-view statistics, and view-to-purchase statistics.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/substitute

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIdtestUserUser identifier which is assigned by Insider One.StringNo
hptrue, false or 0, 1Makes affinities affect products of the response. The default is false.BooleanNo
excludePurchaseDay30After how many days purchased products should be excluded.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
productIdABC123CBACurrent product IDStringYes
\n

Sample Request

\n

The sample below displays a request to Substitute Recommendation, an algorithm that suggests alternative products to items a user has interacted with.

\n
https://recommendation.api.useinsider.com/v2/substitute?partnerName={PartnerName}&locale={Locale}&productId={ABC123CBA}&size=5\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 5,\n    \"types\": {\n        \"sp\": 5\n    },\n    \"data\": [\n        \"ABC-123654\",\n        \"ABC-123321\",\n        \"ABC-123789\",\n        \"ABC-123987\",\n        \"ABC-123456\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products come from Substitute Products are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","substitute"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"934103c4-fd03-49f7-a3cc-9865d3e98ca0"},{"name":"Top Sellers","id":"95301f68-14d8-4c64-bc24-733dd572ff5c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/top-sellers","description":"

The Top Sellers algorithm recommends products based on their purchase counts over the last 30 days. It works best on the main page

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/top-sellers

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIda1b2c3d4User identifier which is assigned by Insider OneStringNo
excludeViewDay30After how many days viewed products should be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days purchased products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect products of the responseBooleanNo
cityMilanRequested city informationStringNo
countryItalyRequested country informationStringNo
productIdABC123CBACurrent product IDStringNo
\n

Algorithm Customizations

\n

The Top Sellers algorithm also provides users with product recommendations based on categories and locations.

\n\n

Please refer to the table below for the conditions and parameters to customize the Top Sellers algorithm.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
VariantConditionParameter(s)
Top SellersNo filtersDefault (no country, no categoryList)
Top Sellers of CategoryCategory filter providedcategoryList=[cat1, cat2, ...]
Top Sellers of LocationGeographic filter providedcountry=&city=
\n

When categoryList is provided, recommendations are filtered to show only the Top Seller products within the specified categories. Recommendations served in the API response will be abbreviated as mpoc for Top Sellers of Category recommendations.

\n

When Top Sellers of Location recommendations are requested, the API endpoint will present recommendations with the mpol abbreviation.

\n

Sample Request

\n

The sample below displays a request to Top Sellers, an algorithm that recommends products with the highest purchase counts over the last 30 days.

\n
https://recommendation.api.useinsider.com/v2/top-sellers?locale={Locale}&partnerName={PartnerName}\n\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mpop\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Sample Request for Top Sellers of Category

\n
https://recommendation.api.useinsider.com/v2/most-popular?locale={Locale}&partnerName={PartnerName}¤cy={Currency}&categoryList=[“Dog Food”]\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mpoc\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Sample Request for Top Sellers of Location

\n
https://recommendation.api.useinsider.com/v2/most-popular?locale={Locale}&partnerName={PartnerName}¤cy={Currency}&country={country}&city={city}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mpol\": 1\n    },\n    \"data\": [\n{\n            \"image_url\": \"test.image_url.com\",\n            \"name\": \"Original Air-dried Beef recipe for dogs\",\n            \"item_id\": \"46177313784082\",\n            \"url\": \"test.url.com\",\n            \"description\": \"Having access to lush fields of grass year-round makes New Zealand free-range, grass-fed beef among the best in the world.\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 29.58\n            },\n            \"groupcode\": \"8528988209426\",\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"activation_date\": \"2023-08-11\",\n                \"shopify_tag\": [\n                    \"air-dried\",\n                    \"beef\",\n                    \"dog\"\n                ]\n            },\n            \"stock_count\": 99,\n            \"category\": [\n                \"Dog Food\",\n                \"Pets Collection\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 29.58\n            }\n        }\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from Top Sellers are not enough to fill the response data, some fallback algorithms below fill it:

\n\n

If the city or country is given in as a query parameter, the fallback algorithms that fill it are:

\n\n","urlObject":{"protocol":"https","path":["v2","top-sellers"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"95301f68-14d8-4c64-bc24-733dd572ff5c"},{"name":"Trending Products","id":"809f5f73-b7f4-43a6-8377-105e49bf6a02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/trending","description":"

The Trending Products algorithm recommends items using a scoring system. It scores items based on weekly views and purchases to determine this week's trending items compared to those in the previous week. This type of algorithm works best on the main and category pages.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/trending

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIdtestUserUser identifier which is assigned by Insider One.StringNo
hptrue, false or 0, 1Makes affinities affect products of the response. The default is false.BooleanNo
excludeViewDay30After how many days viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludeViewItem10How many viewed products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseDay30After how many days purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
excludePurchaseItem10How many purchased products should be excluded. The default is -1.IntegerNo (Can only be used with userId)
productIdABC123CBACurrent product IDStringNo
\n

Sample Request

\n

The sample below displays a request to Trending Products, an algorithm that recommends items using a dynamic scoring system.

\n
https://recommendation.api.useinsider.com/v2/trending?partnerName={partnerName}&locale={Locale}&size=2\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 2,\n    \"types\": {\n        \"tpop\": 2\n    },\n    \"data\": [\n        \"ASD-4983\",\n        \"TYU-3451\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from Trending Products are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","trending"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"809f5f73-b7f4-43a6-8377-105e49bf6a02"},{"name":"User Based","id":"4132e66b-3123-425d-9ecd-a5c5a482e292","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/user-based","description":"

The User Based algorithm recommends items by finding users similar to the current user. It generates recommendations based on user behavior and product popularity.

\n

In this algorithm, product recommendations are based on the behavior of similar users (users with close similarity index scores: viewed, purchased, or added the same or similar category products to their cart) with the current user. The algorithm recommends products that similar users have encountered in the past but that the current user has not visited. The user-based algorithm also takes the user-product-rating matrix as another input. For each product a user visits, a rating is calculated based on the number of visits, purchases, and add-to-carts within the last 30 days. This type of algorithm can be used on every kind of page.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/user-based

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
userIda1b2c3d4User identifier that is assigned by Insider OneStringYes
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
excludeViewDay30After how many days should viewed products be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days should purchased products be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect products of the responseBooleanNo
dayLimit2If FMT is published_time, it adds a day limit filterIntegerNo
productIdABC123CBACurrent product IDStringNo
\n

Sample Request

\n

The sample below displays a request to User Based, a personalized recommendation algorithm that finds users similar to the current user.

\n
https://recommendation.api.useinsider.com/v2/user-based?partnerName={Partner_Name}&locale={Locale}¤cy=TRY&userId={User ID}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 10,\n    \"types\": {\n        \"mvop\": 10\n    },\n    \"data\": [\n        \"QAZ-7890\",\n        \"XYZ-1234\",\n        \"QAZ-7899\",\n        \"XYZ-1233\",\n        \"QAZ-7898\",\n        \"XYZ-1243\",\n        \"QAZ-7891\",\n        \"XYZ-1223\",\n        \"QAZ-7892\",\n        \"XYZ-1342\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products come from User Based are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","user-based"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4132e66b-3123-425d-9ecd-a5c5a482e292"},{"name":"User Engagement","id":"40cc53de-e43d-4e64-b097-be4527529fa7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/user-engagement","description":"

The User Engagement algorithm recommends products by analyzing the current user’s most recent interactions. It generates personalized recommendations based on real-time behaviors and evolving preferences.

\n

The User Engagement algorithm tailors product recommendations based on the user’s most recent product-view activity, using a deep-learning transformer model that dynamically adapts to recent interactions, such as viewing or purchasing patterns. It focuses specifically on items the user has shown interest in during recent sessions. During a Recommendation API request to the user-engagement endpoint, the UCD profile endpoint is called to retrieve the last 10 products the user visited in the past 7 days. To receive User Engagement recommendations, the user must have at least one product visit in the last 7 days. If there have been no visits in that period, fallback recommendation results will be displayed instead.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/user-engagement

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
userIda1b2c3d4User identifier which is assigned by Insider OneStringYes
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseDetermines if the products within the same groupcode should be returned in the recommendation responseBooleanNo
groupProductsFieldsDefines the fields that should be returned for the products in the group_products section.
If requested group product fields are missing from a product, that product won't appear in the group_products section.
StringNo
excludeVariantstrueExclude variants from the response. The default value is false. Valid values are 1, 0, true, and false.BooleanNo
excludeViewDay30After how many days should viewed products be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days should purchased products be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect products of the response. The default is false.BooleanNo
dayLimit2If FMT is published_time, it adds a day limit filter. The default is 2.IntegerNo
productIdABC123CBACurrent product IDStringNo
\n

Sample Request

\n

The sample below displays a request to User Engagement, a personalized recommendation algorithm that analyzes the current user’s most recent interactions (such as product views, clicks, or cart actions) to deliver highly relevant product suggestions in real time.

\n
https://recommendation.api.useinsider.com/v2/user-engagement?locale={locale}&userId={userId}&partnerName={partnerName}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 10,\n    \"types\": {\n        \"ue\": 10\n    },\n    \"data\": [\n        \"649517_49890\",\n        \"568334_49053\",\n        \"639714_49677\",\n        \"651579_3255\",\n        \"614493_50094\",\n        \"614508_49668\",\n        \"568334_47380\",\n        \"641331_49914\",\n        \"621390_3255\",\n        \"646581_48990\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the current user has not visited two or more products, or if user engagement recommendations are filtered out, recommendations from the following algorithms are returned in sequence:

\n\n","urlObject":{"protocol":"https","path":["v2","user-engagement"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"40cc53de-e43d-4e64-b097-be4527529fa7"},{"name":"Viewed Together","id":"7fdb30a0-c22b-43db-a872-e7687b161ca7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/viewed-together","description":"

The Viewed Together algorithm recommends items by identifying similar products users have viewed. It generates recommendations based on products viewed in the same sessions and in the same locale over the past 30 days. After generating recommendations, the Viewed Together algorithm orders the results by visit frequency (popularity). Thus, users can find complementary or substitute products for the one they are currently viewing. This increases discovery rates and the likelihood of grabbing users’ attention when they don’t have a target product. This type of algorithm works best on product pages.

\n

Endpoint

\n
\n
\n

GET https://recommendation.api.useinsider.com/v2/viewed-together

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of the requested product catalogStringYes
platformwebRequested platform. Web comes by default.EnumNo
currencyUSDRequested currency of the products. If no value is set, the default currency in your settings is used.StringNo
productIdABC0123Base product IDStringYes
size50Required number of items in response. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”, “Skirts”]Category filter of the productsArray (of string)No
filterSmart Recommender filtering. There can be more than one filter parameter.StringNo
detailstrueAdds details to the products of the responseBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
getGroupProductsfalseShows variant products under the products of the responseBooleanNo
groupProductsFieldsAdds these fields to the variant products’ detailsStringNo
excludeVariantstrueExclude variants from the responseBooleanNo
userIda1b2c3d4User identifier that is assigned by Insider OneStringNo
excludeViewDay30After how many days should viewed products be excludedIntegerNo (Can be used only with userId)
excludeViewItem100How many viewed products should be excludedIntegerNo (Can be used only with userId)
excludePurchaseDay30After how many days should purchased products be excludedIntegerNo (Can be used only with userId)
excludePurchaseItem100How many purchased products should be excludedIntegerNo (Can be used only with userId)
hpfalseMakes affinities affect products of the responseBooleanNo
\n

Sample Request

\n

The sample below displays a request to Viewed Together, a recommendation algorithm that suggests items commonly viewed alongside the same product by other users.

\n
https://recommendation.api.useinsider.com/v2/viewed-together?locale={Locale}&productId={ProductID}¤cy={Currenct}&partnerName={PartnerName}\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 10,\n    \"types\": {\n        \"mvop\": 10\n    },\n    \"data\": [\n        \"QAZ-7890\",\n        \"XYZ-1234\",\n        \"QAZ-7899\",\n        \"XYZ-1233\",\n        \"QAZ-7898\",\n        \"XYZ-1243\",\n        \"QAZ-7891\",\n        \"XYZ-1223\",\n        \"QAZ-7892\",\n        \"XYZ-1342\"\n    ]\n}\n\n
\n

Fallback Algorithms

\n

If the products from Viewed Together are not enough to fill the response data, some fallback algorithms below fill it:

\n\n","urlObject":{"protocol":"https","path":["v2","viewed-together"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7fdb30a0-c22b-43db-a872-e7687b161ca7"},{"name":"Visually Similar Products","id":"e61a156b-ee78-4187-ac7e-e441be774aec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"url":"https://recommendation.api.useinsider.com/v2/visually-similar","description":"

The Visually Similar Products algorithm surfaces products that look like the one the shopper is currently viewing. It compares product images using a multimodal AI model, refined with light product metadata, and performs optimally on category and product detail pages in visually-driven verticals such as fashion and home décor.

\n
\n

<p >Insider One processes your product catalog images to generate recommendation results.</p>

\n
\n

Endpoint

\n

GET https://recommendation.api.useinsider.com/v2/visually-similar

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSample ValueDescriptionData TypeRequired
partnerNamemybrandPartner Identifier assigned by Insider One. You can use PartnerID as well.StringYes
localeus_USLocale of requested product catalogStringYes
productId1068The reference product for which the complement is computedStringYes
currencyUSDProduct currency. If no value is set, the default currency in your settings is used.StringNo
size10Response items. Valid values are 0 to 100.IntegerNo
categoryList[“Clothes”]Category filter of the productsArrayNo
userIda1b2c3d4User identifier; enables personalization boosts when providedStringNo
platformwebRequested platform (default: web)EnumNo
detailstrueAdds details to the products of the responseBooleanNo
excludeVariantstrueHides color/size variants of the same base productBooleanNo
shufflefalseShuffles the products of the responseBooleanNo
filter[in_stock][=][true]Restricts results by fields such as price, brand, color, gender, in_stock, or categoryStringNo
hptrueHyper-personalization flag. Re-ranks results using the shopper's attribute preferencesBooleanNo
getGroupProductstrueReturns all color/size variants grouped under each recommended productBooleanNo
groupProductsFieldsproduct_attributes.color,priceComma-separated list of fields to include in the grouped variants; products missing any listed field are droppedStringNo
getAllGroupProductsFieldstrueReturns all variant fields without dropping products for missing fields; automatically enables getGroupProductsBooleanNo
excludeViewDay30Days before excluding previously viewed productsIntegerNo
excludeViewItem100Number of viewed products to excludeIntegerNo
excludePurchaseDay30Days before excluding previously purchased productsIntegerNo
excludePurchaseItem100Number of purchased products to excludeIntegerNo
\n

Sample Request

\n

The sample below shows a request to Visually Similar Products, the algorithm that suggests items frequently bought or viewed alongside the anchor product.

\n
https://recommendation.api.useinsider.com/v2/visually-similar?partnerName={PartnerName}&locale={Locale}&productId={ABC123}&size=3\n\n
\n

Sample Response

\n
{\n  \"success\": true,\n  \"total\": 3,\n  \"types\": { \"vs\": 3 },\n  \"data\": [\n    \"649517_49890\",\n    \"568334_49053\",\n    \"639714_49677\"\n  ]\n}\n\n
\n

Fallback Algorithms

\n

When the Visually Similar Products results are insufficient, these algorithms fill the response:

\n\n","urlObject":{"protocol":"https","path":["v2","visually-similar"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e61a156b-ee78-4187-ac7e-e441be774aec"}],"id":"21dadeed-ce2b-44db-9ee1-33948e46d5c7","description":"

The main recommendation algorithms available through the Recommendation API are categorized by type and methodology. Each algorithm can be called via its dedicated endpoint.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
AlgorithmDefinitionEndpointAbbreviation
ChefAn automated recommendation algorithm that automatically brings the best-mixed strategy combination by testing most popular items, top sellers, user-based, highest discounted, new arrivals, and trending algorithms for better conversion rates./v2/chefchef
Complementary ProductsRecommends complementary products based on similarity and price proximity. Helps users discover related products based on a collaborative filtering approach./v2/complementarycp
Highest Discounted ProductsRecommends items by sorting items based on their discount ratio. Recommends products ordered from the highest discount to the lowest. The discount ratio is calculated separately for each currency type./v2/highest-discountedhdop
Manual MerchandisingBrings details of manually specified products. Only in-stock products are returned. Enables showcasing of specific products or content from a curated list specified in campaign configuration./v2/manual-merchandisingmm
Mixed StrategyCreates a customized mixed recommendation strategy using different recommendation types. Allows the use of multiple algorithms for each slot of the Recommendation Widget in a single request./v2/mixedmixed
Most Popular ItemsRecommends items by analyzing the most popular products by page views. Generates recommendations based on page view counts during the last 30 days. Works best on main, category, and product pages./v2/most-popularmvop
Most Valuable ProductsRecommends items by their contribution to total revenue. Recommends products that generate more revenue across your site based on contribution to revenue and revenue per visit./v2/most-valuablemvpop
New ArrivalsBrings products newly added to the website. Recommends products in order of their publish date. For the Publisher vertical, the updated time is used for newly released articles./v2/new-arrivalsnaop
Purchased TogetherRecommends complementary products purchased by other users alongside the user's purchases. Generates recommendations based on products purchased in the same sessions and locale during the past 30 days, ordered by purchase frequency./v2/purchased-togetherbtb
Recently ViewedAllows users to create campaigns highlighting recent product views. Enables users to re-engage with products based on their historical behavior. Returns only the user's recently viewed products./v2/recently-viewedrvp
Substitute ProductsRecommends similar products using a collaborative filtering approach. Considers product similarity and price proximity to help with product discovery on product and cart pages./v2/substitutesp
Top SellersRecommends products in order of their purchase counts for the last 30 days. Works best on the main page. Falls back to your most purchased category./v2/top-sellersmpop
Trending ProductsRecommends items using a scoring system. Identifies this week's trending items compared to those in the previous week by scoring items based on weekly view and purchase information./v2/trendingtpop
User BasedRecommends items by finding similar users to the current user. Generates recommendations based on user behavior and product popularity. Uses a user-product-rating matrix based on visits, purchases, and add-to-carts within the last 30 days./v2/user-basedub
User EngagementRecommends products by analyzing the most recent interactions of the current user. Generates personalized recommendations informed by real-time user behaviors and evolving preferences using a deep learning-based transformer model./v2/user-engagementue
Viewed TogetherRecommends items by finding similar products to those visited by the user. Generates recommendations based on products visited in the same sessions and in the same locale within the past 30 days, ordered by visit frequency./v2/viewed-togethervtv
\n
","_postman_id":"21dadeed-ce2b-44db-9ee1-33948e46d5c7"},{"name":"Get Recommendations","id":"d63e7967-0902-47e1-802d-a586f2e913f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-REQUEST-TOKEN","value":"1a2b3c4d5e6f","description":"

Your API authentication token

\n","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://recommendation.api.useinsider.com/v2/{algorithm-name}","description":"

The Recommendation API (SR-API) is a RESTful service for programmatically retrieving personalized product suggestions. It serves as the interface to Insider One’s recommendation engine, utilizing machine learning models, real-time user behavior analysis, and product affinity data to return structured item sets.

\n

Endpoint

\n

The Recommendation API follows a standard RESTful pattern:

\n

GET https://recommendation.api.useinsider.com/v2/{algorithm-name}

\n

{algorithm-name} is the unique identifier for the recommendation logic to be executed.

\n

Examples:

\n\n

Refer to Algorithm Descriptions for the full list.

\n

Before making your first request, you'll need:

\n\n

Algorithm Abbreviations

\n

Each algorithm has a short abbreviation used in response payloads:

\n\n

Refer to the Algorithm Descriptions for the complete list.

\n

Query Parameters

\n

All endpoints support common parameters:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterPurposeTypeRequired
partnerNameYour store identifierStringYes
localeLanguage/region (e.g., en_US)StringYes
currencyCurrency code (e.g., USD)StringYes
userIdUser identifier for personalizationStringNo
categoryListFilter by product categoriesArrayNo
filterAdvanced filtering (see Filtering Guide)StringNo
sizeNumber of products (0-100)IntegerNo
detailsInclude full product informationBooleanNo
\n

Sample Request

\n
curl -X GET \"https://recommendation.api.useinsider.com/v2/most-popular?partnerName=dataforceapi&locale=tr_TR&size=1&details=true\" \\\n     -H \"X-Auth-Token: YOUR_API_TOKEN\"\n\n
\n
const apiToken = 'YOUR_API_TOKEN';\n                    const endpoint = 'https://recommendation.api.useinsider.com/v2/most-popular';\n                    const params = {\n                    partnerName: 'yourPartnerName',\n                    locale: 'tr_TR',\n                    size: 1,\n                    details: true\n                    };\n                    const queryString = new URLSearchParams(params).toString();\n                    fetch(`${endpoint}?${queryString}`, {\n                    method: 'GET',\n                    headers: {\n                    'X-Auth-Token': apiToken\n                    }\n                    })\n                    .then(response => response.json())\n\n
\n
import requests\n                    api_token = 'YOUR_API_TOKEN'\n                    endpoint = 'https://recommendation.api.useinsider.com/v2/most-popular'\n                    params = {\n                    'partnerName': 'yourPartnerName',\n                    'locale': 'tr_TR',\n                    'size': 1,\n                    'details': True\n                    }\n                    headers = {\n                    'X-Auth-Token': api_token\n                    }\n                    response = requests.get(endpoint, params=params, headers=headers)\n                    data = response.json()\n                    print(data)\n\n
\n

Sample Response

\n

Responses follow a consistent JSON structure:

\n
{\n        \"success\": true,\n        \"total\": 10,\n        \"types\": {\n        \"mvop\": 10\n        },\n        \"data\": [\"productId1\", \"productId2\", ...]\n        }\n\n
\n
\n

<p >With details=true, the data array contains full product objects including pricing, images, categories, and attributes.</p>

\n
\n

200 / Success-OK

\n

A successful response looks like this:

\n
{\n        \"success\": true,\n        \"total\": 1,\n        \"types\": {\n        \"mvop\": 1\n        },\n        \"data\": [\"SKU-DK-0011\"]\n        }\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldMeaning
successBoolean indicating if the request succeeded
totalNumber of products returned
typesAlgorithm(s) used (mvop = Most Popular of Partner)
dataArray of product IDs
\n

Getting Product Details

\n

By default, the API returns only product IDs. To get full product information (images, prices, descriptions), add details=true.

\n
curl -X GET \"https://recommendation.api.useinsider.com/v2/most-popular?partnerName=yourpartnername&locale=tr_TR&size=1&details=true\" \\\n     -H \"X-Auth-Token: YOUR_API_TOKEN\"\n\n
\n
const params = {\n                    partnerName: 'yourpartnername',\n                    locale: 'tr_TR',\n                    size: 1,\n                    details: true\n                    };\n\n
\n
params = {\n                    'partnerName': 'yourpartnername',\n                    'locale': 'tr_TR',\n                    'size': 1,\n                    'details': True\n                    }\n\n
\n

Response with details=true includes:

\n\n

Here is a full example with details=true:

\n
{\n        \"success\": true,\n        \"total\": 1,\n        \"types\": {\n        \"mvop\": 1\n        },\n        \"data\": [\n        {\n        \"item_id\": \"SKU-HA-0011\",\n        \"name\": \"Hummingbird Decorative Cushion\",\n        \"locale\": \"en_US\",\n        \"image_url\": \"https://cdn.demo-shop.com/images/home-accessories/hummingbird-cushion-45x45.jpg\",\n        \"url\": \"https://www.demo-shop.com/en/home-accessories/hummingbird-decorative-cushion?ins_sr=eyJwcm9kdWN0SWQiOiJTS1UtSEEtMDAxMSJ9\",\n        \"in_stock\": 1,\n        \"price\": {\n        \"USD\": 24.99\n        },\n        \"original_price\": {\n        \"USD\": 29.99\n        },\n        \"discount\": {\n        \"USD\": 5.0\n        },\n        \"category\": [\n        \"Home Accessories\",\n        \"Decorative Cushions\"\n        ],\n        \"description\": \"Soft cotton decorative cushion with hummingbird pattern. Ideal for living rooms and bedrooms.\",\n        \"brand\": \"Demo Home\",\n        \"color\": \"Multicolor\",\n        \"size\": \"45x45 cm\",\n        \"tags\": [\n        \"cushion\",\n        \"home-decor\",\n        \"living-room\"\n        ],\n        \"material_type\": \"Cotton\",\n        \"washable\": \"Yes\",\n        \"room\": \"Living Room\"\n        }\n        ]\n        }\n\n
\n

The following table demonstrates the status codes and response types from the Recommendation API. The table lists Status Codes, their descriptions, and scenarios that you can receive these status codes.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Status CodeStatus Code Scenarios
200 - SuccessSuccessful API requests receive responses with 200 status code.
400 - Bad RequestUnsuccessful API requests receive responses with 400 status code.

API calls with missing endpoint parameters receive this status code.
403 - ForbiddenUnauthorized API requests receive responses with 403 status code

API calls that result with unsuccessful Origin/CORS Validation receive this status code.
422 - Unprocessible ContentAPI calls that have missing dynamic filter content receive this status code.

Refer to the Filtering Products documentation for further details.
429 - Too Many RequestsThrottled API requests receive responses with 429 status code.
\n

200 / Success-OK

\n

Successful Recommendation API requests receive an API endpoint that contains the following fields:

\n\n

Following is a successful Recommendation API request and its example response:

\n

Sample Request

\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true&partnerName=yourPartnerName&locale=en_US¤cy=USD&size=1\n\n
\n

Sample Response

\n
{\n    \"success\": true,\n    \"total\": 1,\n    \"types\": {\n        \"mvop\": 1\n    },\n    \"data\": [\n        {\n            \"image_url\": \"http://insiderone.com/img/p/1/3/13.jpg\",\n            \"name\": \"Hummingbird cushion\",\n            \"item_id\": \"11\",\n            \"url\": \"https://insiderone.com/home-accessories/11-hummingbird-cushion.html#ins_sr=eyJwcm9kdWN0SWQiOiIxMSJ9\",\n            \"description\": \"Hummingbird cushion in category Home Accessories\",\n            \"in_stock\": 1,\n            \"price\": {\n                \"USD\": 0.57\n            },\n            \"locale\": \"en_US\",\n            \"product_attributes\": {\n                \"test\": \"productTest\",\n                \"testattributes\": \"productTest\"\n            },\n            \"category\": [\n                \"Home Accessories\"\n            ],\n            \"discount\": {\n                \"USD\": 0.0\n            },\n            \"original_price\": {\n                \"USD\": 0.57\n            }\n        }\n    ]\n}\n\n
\n

400 / Bad Request

\n

In the following scenarios, the Recommendation API returns responses with a 400 status code:

\n\n

Following API requests and responses demonstrate examples of these scenarios.

\n

Sample Request 1

\n

The partnerName parameter is missing in the request below:

\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true¤cy=USD&locale=en_US\n\n
\n

Sample Response 1

\n
{\n    \"success\": false,\n    \"message\": \"Missing parameter: partnerName\",\n    \"data\": []\n}\n\n
\n

Sample Request 2

\n

The locale value is missing in the request below:

\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true¤cy=USD&locale=&partnerName=yourPartnerName\n\n
\n

Sample Response 2

\n
{\n    \"success\": false,\n    \"message\": \"Locale is invalid.\",\n    \"data\": []\n}\n\n
\n

403 / Forbidden

\n

The Recommendation API performs sender origin validation for partners that enable the Origin/CORS Validation feature. When the feature is enabled, the Recommendation API only provides successful recommendation content to callers from the allowed domains. Requests from domains that are not listed as allowed domains will receive failures with a 403 status code.

\n

Following is the Recommendation API response for unsuccessful validations:

\n
{\n    \"success\": false,\n    \"message\": \"Origin validation error.\",\n    \"data\": []\n}\n\n
\n

422 / Unprocessible Content

\n

This endpoint response status code is often received when the partner page that hosts the recommendation campaign cannot provide the details that the Recommendation API endpoint needs to use.

\n

As an example scenario;

\n\n

Sample Request

\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true&filter=([color][=][${value}])¤cy=TRY&locale=tr_TR&partnerName=yourPartnerName&productId=11\n\n
\n

Sample Response

\n

The color attribute was missing for the given item with ID “11”. When this attribute is requested with dynamic filtering, the Recommendation API responds with a 422 status code (denoting that an unprocessible content is present)

\n
{\n    \"success\": false,\n    \"message\": \"The field 'color' in dynamic filter was not found in the product.\",\n    \"data\": []\n}\n\n
\n

429 / Too Many Requests

\n

When you exceed the rate limit, the Recommendation API will temporarily throttle your requests. Rate limits are calculated using a rolling one-minute window, so if you're throttled, you'll regain access once the current window resets (at most one minute).

\n
{\n    \"success\": false,\n    \"message\": \"Rate exceeded.\",\n    \"data\": []\n}\n\n
\n

Filtering Recommendation Responses

\n

Filtering allows you to refine recommendation results to match your users' needs and preferences. Common use cases include:

\n\n

This increases relevance, improves user experience, and boosts conversion rates.

\n

Basic Syntax

\n
https://recommendation.api.useinsider.com/v2/{algorithm}?...\\&filter=[{field}][{operator}][{value}]\n\n
\n

Here is an example with a single filter that returns  products with prices greater than 100 USD:

\n
?filter=[price.USD][>][100]\n\n

Multiple Filters

\n

You can pass multiple filter parameters to combine conditions. Each condition is chained together via an asterisk (*).

\n
Syntax
\n
?filter=[field1][operator1][value1]*[field2][operator2][value2]\n\n
\n

How Multiple Filters work

\n

Multiple filters are combined with AND logic - products must match ALL conditions to be included.

\n
Example 1: Exclude current product + filter by category
\n
?filter=[item_id][!=][PRODUCT_ID]*[category][~][Shoes]\n\n
\n

This filter returns products that are NOT PRODUCT_ID AND contain \"Shoes\" in the category.

\n
Example 2: Price range + in stock
\n
?filter=[price.USD][>][50]*[price.USD][<][200]*[in_stock][=][1]\n\n
\n

This filter returns products between $50-$200 AND in stock.

\n

Operator Reference

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Operator NameSymbolAliasDescriptionExample
Equal To=isExact match on field value[color][=][Blue] or [brand][=][Niki]
Not Equal To!=nisExcludes products with matching field value[color][!=][Red] (exclude red products)
Greater Than>gtField value greater than the specified value[price.USD][>][100] or [rating][>][3.5]
Greater Than or Equal>=gteField value greater than or equal to the specified value[price.EUR][>=][150] or [rating][>=][4]
Less Than<ltField value less than the specified value[price.EUR][<][150] or [stock_count][<][5]
Less Than or Equal<=lteField value less than or equal to the specified value[price.EUR][<=][150] or [created_at][<=][now-7d]
Contains~ctnField contains the specified value (text search)[category][~][Shoes] or [name][~][Niki Air]
Does Not Contain!~nctnField does not contain the specified value[category][!~][Clearance]
Between><btwField value falls within a range. Format: [field][><][lower_bound:upper_bound][price.USD][><][50:200]
Not Between>!<nbtwField value falls outside a range[price.USD][>!<][50:200] (exclude $50-$200 range)
Exists?xstCheck if a field exists (value=1) or does not exist (value=0)[price.USD][?][1] (products have USD price)
\n
Date Field Values
\n

Insider One is designed to parse every filter value provided for date fields. If a simplified date expression fails to parse, the system will use it as a raw literal value. This allows you to use literal dates (e.g., \"2022-09-30 15:45:00\") directly in your date filters.

\n

The date fields available for filtering are: created_at and modified_at.

\n
Operator Compatibility
\n

Date fields are supported by every operator except for Between (><) and Not Between (>!<). This limitation is due to the Between operator using a colon (:) to separate the lower and upper bounds, which conflicts with the colon present in standard date/time formats (e.g., 2022-09-30 15:45:00).

\n

The most appropriate operators for date fields are:

\n\n

Relative Date Filtering

\n

Date filters also support relative unit values, allowing you to easily filter based on time relative to the current moment (now).

\n\n

You can see the examples below:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ScenarioFilter Expression
Get products that were created last week[created_at][>][now-1w]
Get products created up to 2 days ago[created_at][<=][now-2d]
\n

Multiple Value Filtering (In / Not-In Filter Behavior)

\n

Match fields against multiple values by separating them with:

\n
||\n\n
\n

Supported by all operators except between and not between.

\n

Examples:

\n\n
?filter=[brand][=][Niki||Abiba||Pamu]\n\n
\n\n
?filter=[color][!=][Red||Green||Blue]\n\n
\n

Get products with categories containing any of these terms:

\n
?filter=[category][~][Shoes||Boots||Sneakers]\n\n
\n

Advanced Filtering with AND/OR

\n

Combine multiple filters using logical operators within a single filter parameter.

\n\n
Examples
\n\n
?filter=([price.USD][>][100]*[brand][=][Niki]) \n\n
\n\n
?filter=([category][~][Shoes]|[category][~][Boots])\n\n
\n\n

Get products that are either (cheap AND in stock) OR highly rated:

\n
?filter=((price.USD][<][50]*[in_stock][=][1])|[rating][>=][5])\n\n
\n
\n
\n

You can also use multiple parameters to achieve AND logic more simply:

\n
?filter=[price.USD][<][50]&filter=[in_stock][=][1]&filter=[rating][>=][5]\n\n
\n

This is often clearer than using complex parentheses.

\n

Dynamic Filters

\n

Use ${value} to reference the source product's field value in your filter. The expression is computed at request time using the actual product data.

\n

Supported Expressions

\n\n
Examples
\n\n
?categoryList=${value}&productId=PRODUCT_ID\n\n
\n

If the product has a category \"Shoes\", recommendations are filtered to \"Shoes\" only.

\n\n
?productId=PRODUCT_ID&filter=[price.EUR][><][${value}:${value*1.3}]\n\n
\n

If the product costs €100, it shows products priced €100-€130.

\n

Filter Validation Errors

\n

When filters are invalid, the API returns specific error messages with HTTP status codes:

\n
Format & Syntax Errors (400)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorCause
\"Filter is not in correct format.\"Missing brackets, unmatched parentheses, invalid syntax
\"Depth of nested filters is greater than 4.\"Too many nesting levels: ((((filter))))
\"Number of filters is greater than 40.\"Too many filter conditions total
\n
Field Errors (400 or 422)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorHTTPCause
\"Entered field name is invalid.\"400Field doesn't exist in product data
\"The field '%s' in dynamic filter was not found in the product.\"422Field missing in source product (dynamic filters only)
\"Field $$$ is not filterable product attribute.\"400Field marked non-filterable in configuration
\n
Operator Errors (400)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorCause
\"operator field is invalid.\"Unknown operator (use: =, !=, >, <, >=, <=, ~, !~, ><, >!<, ?)
\"For the $$$ field, operator field is not valid by field type.\"Operator incompatible with field type (e.g., ~ on numeric field)
\"Operator $$$ is not allowed for dynamic filters.\"EXIST/EXIST_ALIAS not allowed with ${value}
\n
Value Errors (400 or 422)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorHTTPCause
\"For the $$$ field, entered value is empty.\"422Blank or null value
\"For the $$$ field, value length is invalid.\"400Exceeds limits (100 chars for text search, 340 for others)
\"Value for the field $$$ is invalid.\"400Invalid range format (use lower:upper for >< operator)
\"For the $$$ field, value type is invalid.\"400Type mismatch (non-numeric on numeric field)
\n
Field-Specific Validations (400)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FieldErrorCause
in_stock\"Value is invalid for in_stock filter...\"0 or 1 only
\n
Dynamic Filter Errors (400)
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ErrorCause
\"Parameters productId and locale must be provided when dynamic value is used.\"Using ${value} without providing productId or locale
\"Product not found\"Specified productId doesn't exist
\n

Limitations

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ConstraintLimitNotes
Filter depth4 levelsMaximum nesting depth for parentheses
Total filters40 filtersTotal number of filter conditions in one request
N-gram value length100 charactersFor text search on item_idnameimage_url
Other field value length340 charactersFor text search on other fields
\n

Personalized Recommendation Features

\n

The Recommendation API provides a range of personalization capabilities that tailor product recommendations to individual users. By leveraging user behavior, such as browsing history, purchase activity, and real-time interactions, the API delivers more relevant product suggestions that increase engagement and conversion rates.

\n

To enable personalization, you must include the Insider ID in your Recommendation API requests. This allows the system to associate incoming requests with existing user profiles and apply behavior-driven logic.

\n

Currently, the Recommendation API supports the following personalization features:

\n

Personalized Recommendation Algorithms

\n

The following recommendation algorithms inherently deliver personalized product suggestions based on user behavior and interaction data.

\n\n

Generate personalized recommendations by analyzing a user’s historical interactions and the behavior patterns of similar users.

\n\n

Provide real-time personalized suggestions based on the user’s current session activity and live interactions.

\n\n

Recommend products based on the user’s most recent product page views, helping reinforce recent browsing intent.

\n\n

Suggest products that are frequently purchased together with the user’s most recent purchase, supporting effective cross-sell scenarios.

\n

These algorithms leverage both historical and real-time data to ensure recommendations remain relevant, timely, and aligned with individual user preferences.

\n

Personalization with the User’s Last Visited Item

\n

The Recommendation API can personalize results using the last product page a user visited. This behavior applies to both User-Based Recommendations and Real-Time User Engagement algorithms.

\n

When the API does not have sufficient user-level data to generate a fully personalized recommendation, it automatically falls back to Viewed Together recommendations based on the user’s most recently viewed product.

\n

This fallback mechanism ensures that recommendations remain relevant and context-aware, even when historical user data is limited.

\n

Personalization with Users Recent Interactions

\n

The Recommendation API can automatically exclude products a user has already interacted with, so they won't see recommendations for items they've viewed, purchased, or otherwise engaged with.

\n

Use the following parameters to enable these exclusions:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
API Endpoint ParameterDescription
excludeViewItemExcludes the last X Product Visits of the user from the API response
excludeViewDayExcludes Product Page views of the user in the last X days from the API response
excludePurchaseItemExcludes the last X Product Purchases of the user from the API response
excludePurchaseDayExcludes Product Purchases of the user in the last X days from the API response
\n

The following Recommendation API requests illustrate these personalization features:

\n\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true¤cy=TRY&locale=tr_TR&partnerName=dataforceapi&userId=testUser&excludeViewItem=10\n\n
\n\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true¤cy=TRY&locale=tr_TR&partnerName=dataforceapi&userId=testUser&excludePurchaseDay=3\n\n
\n

Attribute Affinity

\n

Attribute affinity scores represent a user’s preference for specific product attributes based on their interaction behavior, including product views, add-to-cart actions, and purchases. Purchases carry a higher weight than views, as they indicate stronger intent. Affinity scores are normalized by a user’s total activity. As a result, a user with a high purchase-to-view ratio demonstrates a stronger affinity than a user who browses frequently but converts rarely.

\n

The Recommendation API uses attribute affinity to personalize product recommendations according to each user’s demonstrated interests. Affinity data is refreshed daily, ensuring recommendations reflect recent and relevant user behavior.

\n

Within the Recommendation API, the hp endpoint parameter controls whether the Attribute Affinity feature is applied. When enabled, the API incorporates a user’s attribute affinity scores into the recommendation logic, prioritizing products that align with the user’s strongest preferences.

\n

The following Recommendation API request demonstrates how the Attribute Affinity feature is applied when the hp parameter is enabled:

\n
https://recommendationv2.api.useinsider.com/v2/most-popular?details=true¤cy=TRY&locale=tr_TR&partnerName=yourPartnerName&userId=testUser&hp=1\n\n
\n

API Rate Limits

\n

The rate limit for direct API calls is set to 1000 calls per minute, applied across all endpoints of the Recommendation API. Exceeding this rate limit causes additional requests to return 429 status codes.

\n
\n

<p >If your technical architecture requires a higher throughput, contact the Insider One team.</p>

\n
\n

Best Practices for Recommendation API

\n

Category List Format

\n

When filtering by categories, pass categoryList as a URL-encoded JSON array:

\n
categoryList=[\"shoes\",\"boots\"]\n\n
\n

In cURL, encode the brackets properly:

\n
?categoryList=[\"shoes\",\"boots\"]\n\n
\n

Hyperpersonalization (hp)

\n

Enable hyperpersonalization by adding hp=1 or hp=true:

\n
?userId=user123&hp=1\n\n
\n

This uses customer affinities to further personalize results.

\n

Mixed Strategy

\n

Combine multiple recommendation algorithms in a single request to get diverse results.

\n
GET /mixed?partnerName=X&locale=en_US&userId=user1¤cy=USD&strategy=[...]\n\n
\n
Strategy array format:
\n
[\n  {\"recommendationType\": \"ub\", \"size\": 4},\n  {\"recommendationType\": \"vtv\", \"size\": 3, \"productId\": \"prod1\"},\n  {\"recommendationType\": \"mvop\", \"size\": 3, \"filters\": [\"\\[category\\]\\[=\\]\\[shoes\\]\"]}\n]\n\n
\n

Available types: ub, ue, vtv, btb, cp, sp, mvoc, mvop, mpoc, mpop, mpol, naoc, naop, tpoc, tpop, mvpoc, mvpop, mm, hdop, hdoc, rvp, lpt

\n

Each strategy specifies its algorithm type, the number of products to return, and, optionally, its own filters.

\n

Manual Merchandising in Mixed

\n

Use mm to include specific products you want to promote. The productId field is required.

\n
{\"recommendationType\": \"mm\", \"size\": 3, \"productId\": \"featured1,featured2,featured3\"}\n\n
\n

Full example:

\n
GET /mixed?partnerName=X&locale=en_US¤cy=TRY&strategy=[{\"recommendationType\":\"ub\",\"size\":5},{\"recommendationType\":\"mm\",\"size\":3,\"productId\":\"promo1,promo2,promo3\"},{\"recommendationType\":\"mvop\",\"size\":2}]\n\n
\n\n

Multiple Item IDs in Item-Based Algorithms

\n

Get recommendations based on multiple products at once by passing comma-separated IDs:

\n
GET /vtv?partnerName=X&locale=en_US&productId=item1,item2,item3&size=10¤cy=USD\n\n
\n

Supported endpoints are /vtv/btb/cp/sp. It is useful when you want recommendations based on multiple items in a cart or wishlist.

\n

Group Products

\n

Include product variants (e.g., different sizes/colors) in the response using getGroupProducts.

\n
GET /ub?partnerName=X&locale=en_US&userId=user1&getGroupProducts=true&groupProductsFields=price,in_stock,product_attributes.color\n\n
\n
Parameters
\n\n

Response structure

\n
{\n  \"item_id\": \"shoe-blue-m\",\n  \"group_products\": [\n    {\"item_id\": \"shoe-blue-s\", \"price\": {\"USD\": 99}, \"in_stock\": 1},\n    {\"item_id\": \"shoe-blue-l\", \"price\": {\"USD\": 99}, \"in_stock\": 1}\n  ]\n}\n\n
\n

Variants are grouped by groupcode. You can request nested fields, such as product_attributes.color.

\n

Filter Chaining with asteriks (*)

\n

To combine multiple filters with AND logic, use *.  Here is an example of applying multiple filters:

\n
GET \n...&filter=[category][=][shoes]*[brand][=][nike]*[price][<][100]\n\n
\n","urlObject":{"protocol":"https","path":["v2","{algorithm-name}"],"host":["recommendation","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d63e7967-0902-47e1-802d-a586f2e913f1"}],"id":"24d22f95-8d16-40c7-91dc-003831f328fb","_postman_id":"24d22f95-8d16-40c7-91dc-003831f328fb","description":""},{"name":"Search APIs","item":[{"name":"Event Collection API","item":[{"name":"Collect user's search event","id":"e8b5bdfd-6aa5-48df-906f-c34964b546ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://eurekaevent.api.useinsider.com/api/v1/events","description":"

The Event Collection API allows you to integrate user event collection functionality into Eureka. The API is designed to collect user events such as search queries, clicks, add to carts, and purchases. You can use the collected data to improve Eureka’s performance and user experience.

\n

The search event should be fired when a visitor makes a search for a product or content.

\n

It is recommended to send the search event with each request unless you are using Eureka in a search-as-you-type experience.

\n

If you are using search-as-you-type, the search event should be sent after the user completes their discovery, such as when they click on a product or navigate to another page.

\n

If the user stops typing and does not interact with facets, sorting, or pagination, you may assume the query is complete and trigger the search event. A 10-second waiting time is recommended to determine when the user has paused long enough to consider the search finalized.

\n

Endpoint

\n

POST https://eurekaevent.api.useinsider.com/api/v1/events

\n

Request Parameters

\n

The search event supports the following properties:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Attribute NameTypeValidationDefaultDescription
referrerStringRequired, url-Source URL of the referring page
campIdInteger-999999A unique identifier assigned to a campaign. Refer to common fields for more details.
variationIdInteger-999999A unique identifier assigned to a specific variation within a campaign. Refer to common fields for more details.
sourceStringoneof=
- search-popup
- search-listing
Component where the search engine is used
platformStringRequired,
oneof=
- desktop-web
- mobile-web

- tablet-web
- ios
- android
- other
-Platform used by the user
integrationTypeStringRequired,
oneof=
- api
- web
-Type of integration
traceIdStringRequired-Unique trace identifier created for the current query. Refer to common fields for more details.
sessionIdString--Browser/app session identifier
strategyIdString--Optional strategy identifier
userIdStringRequiredDefaultUnique identifier of the user. It is expected to provide for user-based calculations.
queryStringRequired-Query the user searched with
resultCountIntegerRequired, unless no result, min=1-Number of search results returned
itemsPerPageIntegerRequired, unless no result, min=1-Number of items per page used in the search request
totalPagesIntegerRequired, unless no result, min=1-Total number of pages returned by the search
currentPageIntegerRequired, unless no result, min=1-Page number where the search results are displayed
sortingStringRequiredRelevancyThe sorting method used in the search request. It is the type of sorting object of the search response. Refer to common fields for more details.
facetsList of facets--List of facets of the search. Required if any facet selected. Refer to common fields for more details.
productsList of productsRequired, unless no result-List of products returned by the search Refer to common fields for more details.
eventTypeStringRequired, equals=search-Type of event
createdAtStringRequired, formatted in RFC3339If omitted or invalid, it defaults to the current timeTime when the event is created. Refer to common fields for more details.
\n

If your integration was implemented before the Advanced Analytics September 01, 2025, release, please be aware that new fields have been added to the expected product payload structure. You are required to review and implement these additions to ensure more comprehensive and accurate analytics.

\n

You can view the differences in the updated payload structure in the Common Properties.

\n

For the same traceId, a product must be sent only once. Even if the user interacts with sorting, pagination, or facet filters, the same product should not be sent again within the same session. Sending the product once under the same traceId is sufficient.

\n

Example Conceptual flow

\n\n

Suggested Tips for Search Event Collection

\n

To ensure accurate and efficient search event tracking, the following recommendations should be applied:

\n

Timer-Based Event Triggering

\n\n

Additional Scenarios Requiring Search Event Logging

\n

A search event should also be sent in the following situations if it has not already been logged:

\n\n

These recommendations ensure that search events are captured reliably without duplication, providing more accurate insights into user behavior.

\n

To gain a deeper understanding, check out the details on facet and product fields on the Common Properties page.

\n
\n

<p >Please note that the following user actions are also considered search requests:</p><p >- Changing the sorting option</p><p >- Applying a facet filter</p><p >- Pagination</p>

\n
\n

Sample Request

\n

In the example below, you see a sample request along with guidance on modifying the necessary fields. This will help you seamlessly integrate and make the most of the provided configuration.

\n

Before usage, modifying the values such as x-auth-token and x-partner-config-key is essential.

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/homepage\",\n  \"source\": \"search-listing\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"desktop-web\",\n  \"campId\": 999999,\n  \"variationId\": 999999,\n  \"query\": \"laptop\",\n  \"traceId\": \"search-traceId-abc123\",\n  \"strategyId\":\"strategy-id-123\",\n  \"sessionId\":\"session-id-123\",\n  \"resultCount\": 25,\n  \"itemsPerPage\": 10,\n  \"totalPages\": 3,\n  \"currentPage\": 1,\n  \"sorting\": \"Relevancy\",\n  \"facets\": [\n    {\n      \"label\": \"Price\",\n      \"field\": \"price_en\",\n      \"values\": [\"500\", \"2000\"]\n    },\n    {\n      \"label\": \"Brand\",\n      \"field\": \"brand_en\",\n      \"values\": [\"Pear\", \"Deli\", \"SP\"]\n    }\n  ],\n  \"products\": [\n    {\n      \"id\": \"product-001\",\n      \"groupCode\": \"laptop-group-1\",\n      \"price\": 1299.99,\n      \"convertedPrice\": 1199.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"displayPosition\": 1\n    },\n    {\n      \"id\": \"product-002\",\n      \"groupCode\": \"laptop-group-2\",\n      \"price\": 899.99,\n      \"convertedPrice\": 829.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"displayPosition\": 2\n     }\n  ],\n  \"eventType\": \"search\",\n  \"integrationType\": \"web\",\n  \"createdAt\": \"2025-11-25T10:30:00Z\"\n}'\n\n
\n","urlObject":{"protocol":"https","path":["api","v1","events"],"host":["eurekaevent","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Source URL of the referring page.

\n","type":"text/plain"},"key":"referrer","value":"String"},{"disabled":true,"description":{"content":"

Campaign ID, provided in the Insider's InOne panel.

\n","type":"text/plain"},"key":"campId","value":"Integer"},{"disabled":true,"description":{"content":"

Variation ID, provided in the Insider's InOne panel

\n","type":"text/plain"},"key":"variationId","value":"Integer"},{"disabled":true,"description":{"content":"

oneof= - search-popup - search-listing

\n","type":"text/plain"},"key":"source","value":"String"},{"disabled":true,"description":{"content":"

Required. Platform used by the user.

\n","type":"text/plain"},"key":"platform","value":"String"},{"disabled":true,"description":{"content":"

Required, oneof= api - web

\n","type":"text/plain"},"key":"integrationType","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique trace identifier created for the current query.

\n","type":"text/plain"},"key":"traceId","value":"String"},{"disabled":true,"description":{"content":"

Browser/app session identifier

\n","type":"text/plain"},"key":"sessionId","value":"String"},{"disabled":true,"description":{"content":"

Optional strategy identifier

\n","type":"text/plain"},"key":"strategyId","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique identifier of the user.

\n","type":"text/plain"},"key":"userId","value":"String"},{"disabled":true,"description":{"content":"

Required. Query the user searched with.

\n","type":"text/plain"},"key":"query","value":"String"},{"disabled":true,"description":{"content":"

Required unless no result, min=1. Number of search results returned.

\n","type":"text/plain"},"key":"resultCount","value":"String"},{"disabled":true,"description":{"content":"

Required unless no result, min=1. Number of items per page used in search request.

\n","type":"text/plain"},"key":"itemsPerPage","value":"Integer"},{"disabled":true,"description":{"content":"

Required unless no result, min=1. Total number of pages returned by search.

\n","type":"text/plain"},"key":"totalPages","value":"Integer"},{"disabled":true,"description":{"content":"

Required unless no result, min=1. Page number where the search results displayed.

\n","type":"text/plain"},"key":"currentPage","value":"Integer"},{"disabled":true,"description":{"content":"

Required. Sorting method used in search request. It is the type of sorting object of search response.

\n","type":"text/plain"},"key":"sorting","value":"String"},{"disabled":true,"description":{"content":"

List of facets of the search. Required if any facet selected.

\n","type":"text/plain"},"key":"facets","value":"List of facets"},{"disabled":true,"description":{"content":"

List of products returned by the search. Required unless no result.

\n","type":"text/plain"},"key":"products","value":"List of products"},{"disabled":true,"description":{"content":"

Required, equals=search. Type of event.

\n","type":"text/plain"},"key":"eventType","value":"String"},{"disabled":true,"description":{"content":"

Required. Time when the event is created.

\n","type":"text/plain"},"key":"createdAt","value":"String"}],"variable":[]}},"response":[],"_postman_id":"e8b5bdfd-6aa5-48df-906f-c34964b546ee"},{"name":"Collect user's product click event","id":"b6922c79-7230-4271-b802-96d1e7fa4fec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://eurekaevent.api.useinsider.com/api/v1/events","description":"

The Event Collection API allows you to integrate user event collection functionality into Eureka. The API is designed to collect user events such as search queries, clicks, add to carts, and purchases. You can use the collected data to improve Eureka’s performance and user experience.

\n

The product click event should be triggered whenever a visitor clicks an item from the search results.

\n

Suggested Cases

\n

A product click event should be sent in the following situations:

\n\n

Endpoint

\n

POST https://eurekaevent.api.useinsider.com/api/v1/events

\n

Request Parameters

\n

The product click event supports the following properties:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Attribute NameTypeValidationDefaultDescription
referrerStringRequired, url-Source URL of the referring page
campIdInteger-999999The campId serves as a unique identifier. Refer to common fields for more details.
variationIdInteger-999999The variationId represents the unique identifier for a specific campaign variation. Refer to common fields for more details.
sourceStringoneof=
- search-popup
- search-listing
- category-listing
- brand-listing
- other
search-listingSource origin where the event triggered
integrationTypeStringRequired,
oneof=
- api
- web
-Type of integration
platformStringRequired,
oneof=
- desktop-web
- mobile-web

- tablet-web
- ios
- android
- other
-Platform used by the user
userIdString-defaultUnique identifier of the user. It is expected to provide for user-based calculations.
productList of ProductRequired-The product clicked by the user. Refer to common fields for more details.
eventTypeStringRequired, equals=product-click-Type of event
createdAtStringRequired, formatted in RFC3339If omitted or invalid, it defaults to the current timeTime when the event is created. Refer to common fields for more details.
\n

If your integration was implemented before the Advanced Analytics September 01, 2025, release, please note that new fields have been added to the expected product payload. Following this release, the event now retrieves currentPage and related details from product-level fields instead of top-level fields. In addition, the product object has been enriched with several new fields.

\n

For backward compatibility, you may continue sending these values at the event level. However, it is strongly recommended to update your implementation to the new product-level structure to ensure full alignment with the latest version and to benefit from more comprehensive analytics.

\n

You can review the full list of changes on the Common Properties page.

\n

Sample Request

\n

In the example below, you see a sample request along with guidance on modifying the necessary fields. This will help you seamlessly integrate and make the most of the provided configuration.

\n

Before usage, it is essential to modify the values such as x-auth-token and x-partner-config-key.

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/search-results\",\n  \"source\": \"search-listing\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"mobile-web\",\n  \"campId\": 100,\n  \"variationId\": 200,\n  \"product\": {\n    \"id\": \"product-001\",\n    \"groupCode\": \"laptop-group-1\",\n    \"query\": \"laptop\",\n    \"price\": 1299.99,\n    \"convertedPrice\": 1199.99,\n    \"currency\": \"USD\",\n    \"preferredCurrency\": \"EUR\",\n    \"clickPosition\": 3,\n    \"displayPosition\": 3,\n    \"quantity\": 1,\n    \"resultCount\": 25,\n    \"itemsPerPage\": 10,\n    \"totalPages\": 3,\n    \"facets\": [\n      {\n        \"label\": \"Fiyat\",\n        \"field\": \"price\",\n        \"values\": [\"500\", \"2000\"]\n      }\n    ],\n    \"sorting\": \"PriceAsc\",\n    \"currentPage\": 1,\n    \"traceId\": \"search-session-abc123\",\n    \"strategyId\":\"strategy-id-123\",\n    \"sessionId\":\"session-id-123\"\n  },\n  \"eventType\": \"product-click\",\n  \"integrationType\": \"web\",\n  \"createdAt\": \"2025-11-25T10:35:00Z\"\n}'\n\n
\n","urlObject":{"protocol":"https","path":["api","v1","events"],"host":["eurekaevent","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Source URL of the referring page.

\n","type":"text/plain"},"key":"referrer","value":"String"},{"disabled":true,"description":{"content":"

Campaign ID, provided in the Insider's InOne panel.

\n","type":"text/plain"},"key":"campId","value":"Integer"},{"disabled":true,"description":{"content":"

Variation ID, provided in the Insider's InOne panel

\n","type":"text/plain"},"key":"variationId","value":"Integer"},{"disabled":true,"description":{"content":"

Source origin where the event triggered

\n","type":"text/plain"},"key":"source","value":"String"},{"disabled":true,"description":{"content":"

Required. Type of integration.

\n","type":"text/plain"},"key":"integrationType","value":"String"},{"disabled":true,"description":{"content":"

Required. Platform used by the user.

\n","type":"text/plain"},"key":"platform","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique identifier of the user.

\n","type":"text/plain"},"key":"userId","value":"String"},{"disabled":true,"description":{"content":"

Required. The product clicked by the user.

\n","type":"text/plain"},"key":"product","value":"List of product"},{"disabled":true,"description":{"content":"

Required, equals=search. Type of event.

\n","type":"text/plain"},"key":"eventType","value":"String"},{"disabled":true,"description":{"content":"

Required. Time when the event is created.

\n","type":"text/plain"},"key":"createdAt","value":"String"}],"variable":[]}},"response":[],"_postman_id":"b6922c79-7230-4271-b802-96d1e7fa4fec"},{"name":"Collect user's product list view event","id":"68b3a9d0-5ab5-47a0-8d1f-656873672db6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://eurekaevent.api.useinsider.com/api/v1/events","description":"

The Event Collection API allows you to integrate user event collection functionality into Eureka. The API is designed to collect user events such as search queries, clicks, add to carts, and purchases. You can use the collected data to improve Eureka’s performance and user experience.

\n

The product list view event should be fired when a visitor views a category or brand listing page that displays products. This event is used to track impressions on non-search listing pages, such as category and brand pages.

\n

Suggested cases are as follows;

\n\n

Endpoint

\n

POST https://eurekaevent.api.useinsider.com/api/v1/events

\n

Request Parameters

\n

The Product List View event supports the following properties:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Attribute NameTypeValidationDefaultDescription
referrerStringRequired, url-Source URL of the referring page
campIdInteger-999999A unique identifier assigned to a campaign. Refer to common fields for more details.
variationIdInteger-999999A unique identifier assigned to a specific variation within a campaign. Refer to common fields for more details.
sourceStringrequired,

oneof=

- category-listing,

- brand-listing
Component where the search engine is used
listValueStringrequired,

oneof=

- category-listing,

- brand-listing
userIdString-defaultUnique identifier of the user. Must not contain spaces. It is expected to be provided for user-based calculations.
platformStringRequired,
oneof=
- desktop-web
- mobile-web

- tablet-web
- ios
- android
- other
-Platform used by the user
integrationTypeStringRequired,
oneof=
- api
- web
-Type of integration
traceIdStringRequired-Unique trace identifier created for the current query. Refer to common fields for more details.
sessionIdString--Browser/app session identifier
strategyIdString--Optional strategy identifier
sortingStringRequiredRelevancySorting method used in the search request. It is the type of sorting object of the search response.
resultCountIntegerRequired, unless no result, min=0-Number of search results returned
itemsPerPageInteger--Number of items per page used in the search request
totalPagesInteger--Total number of pages returned by the search
currentPageInteger--Page number where the search results are displayed
facetsList of facets--List of facets of the search. Required if any facet selected. Refer to common fields for more details.
productsList of productsRequired, min=1-List of products returned by the search. Refer to common fields for more details.
eventTypeStringrequired, equals=product-list-view-Type of event. Must be product-list-view.
createdAtStringRequired, formatted in RFC3339If omitted or invalid, the  defaults to the current timeTime when the event is created. Refer to common fields for more details.
\n
\n

<p >Each list page request is assigned a uniquely generated traceId.</p>

\n
\n

Sample Requests

\n

In the examples below, we provide sample requests along with guidance on modifying the necessary fields. This will help you seamlessly integrate and make the most of the provided configuration.

\n
\n
\n

Before usage, modifying the values such as x-auth-token and x-partner-config-key is essential.

\n

Hierarchical Category Listing Example

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/category/electronics\",\n  \"source\": \"category-listing\",\n  \"listValue\": \"electronics~laptops\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"desktop-web\",\n  \"traceId\": \"trace-abc123\",\n  \"sessionId\": \"session-abc123\",\n  \"strategyId\": \"strategy-001\",\n  \"sorting\": \"PriceAsc\",\n  \"resultCount\": 120,\n  \"itemsPerPage\": 24,\n  \"totalPages\": 5,\n  \"currentPage\": 1,\n  \"integrationType\": \"api\",\n  \"createdAt\": \"2026-01-20T14:30:00Z\",\n  \"facets\": [\n    {\n      \"label\": \"Brand\",\n      \"field\": \"brand_en\",\n      \"values\": [\"Apple\", \"Dell\"]\n    }\n  ],\n  \"products\": [\n    {\n      \"id\": \"product-001\",\n      \"groupCode\": \"laptop-group-1\",\n      \"price\": 999.99,\n      \"convertedPrice\": 949.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"position\": 1,\n      \"displayPosition\": 1,\n      \"isMerchandisedItem\": false\n    },\n    {\n      \"id\": \"product-002\",\n      \"groupCode\": \"laptop-group-2\",\n      \"price\": 1299.99,\n      \"convertedPrice\": 1249.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"position\": 2,\n      \"displayPosition\": 2,\n      \"isMerchandisedItem\": false\n    }\n  ],\n  \"eventType\": \"product-list-view\"\n}'\n\n
\n

Flat Category Listing Example

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/category/electronics\",\n  \"source\": \"category-listing\",\n  \"listValue\": \"samsung laptops\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"desktop-web\",\n  \"traceId\": \"trace-abc123\",\n  \"sessionId\": \"session-abc123\",\n  \"strategyId\": \"strategy-001\",\n  \"sorting\": \"PriceAsc\",\n  \"resultCount\": 120,\n  \"itemsPerPage\": 24,\n  \"totalPages\": 5,\n  \"currentPage\": 1,\n  \"integrationType\": \"api\",\n  \"createdAt\": \"2026-01-20T14:30:00Z\",\n  \"products\": [\n    {\n      \"id\": \"product-001\",\n      \"groupCode\": \"laptop-group-1\",\n      \"price\": 999.99,\n      \"convertedPrice\": 949.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"position\": 1,\n      \"displayPosition\": 1,\n      \"isMerchandisedItem\": false\n    },\n    {\n      \"id\": \"product-002\",\n      \"groupCode\": \"laptop-group-2\",\n      \"price\": 1299.99,\n      \"convertedPrice\": 1249.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"position\": 2,\n      \"displayPosition\": 2,\n      \"isMerchandisedItem\": false\n    }\n  ],\n  \"eventType\": \"product-list-view\"\n}'\n\n
\n","urlObject":{"protocol":"https","path":["api","v1","events"],"host":["eurekaevent","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Source URL of the referring page.

\n","type":"text/plain"},"key":"referrer","value":"String"},{"disabled":true,"description":{"content":"

Campaign ID, provided in the Insider's InOne panel.

\n","type":"text/plain"},"key":"campId","value":"Integer"},{"disabled":true,"description":{"content":"

Variation ID, provided in the Insider's InOne panel

\n","type":"text/plain"},"key":"variationId","value":"Integer"},{"disabled":true,"description":{"content":"

Required. Source origin where the event triggered

\n","type":"text/plain"},"key":"source","value":"String"},{"disabled":true,"description":{"content":"

Required

\n","type":"text/plain"},"key":"listValue","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique identifier of the user.

\n","type":"text/plain"},"key":"userId","value":"String"},{"disabled":true,"description":{"content":"

Required. Platform used by the user.

\n","type":"text/plain"},"key":"platform","value":"String"},{"disabled":true,"description":{"content":"

Required. Type of integration.

\n","type":"text/plain"},"key":"integrationType","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique trace identifier created for the current query.

\n","type":"text/plain"},"key":"traceId","value":"String"},{"disabled":true,"description":{"content":"

Browser/app session identifier

\n","type":"text/plain"},"key":"sessionId","value":"String"},{"disabled":true,"description":{"content":"

Optional strategy identifier

\n","type":"text/plain"},"key":"strategyId","value":"String"},{"disabled":true,"description":{"content":"

Required. Sorting method used in the search request. It is the type of sorting object of the search response.

\n","type":"text/plain"},"key":"sorting","value":"String"},{"disabled":true,"description":{"content":"

Required. Number of search results returned

\n","type":"text/plain"},"key":"resultCount","value":"Integer"},{"disabled":true,"description":{"content":"

Number of items per page used in the search request

\n","type":"text/plain"},"key":"itemsPerPage","value":"Integer"},{"disabled":true,"description":{"content":"

Total number of pages returned by the search

\n","type":"text/plain"},"key":"totalPages","value":"Integer"},{"disabled":true,"description":{"content":"

Page number where the search results are displayed

\n","type":"text/plain"},"key":"currentPage","value":"Integer"},{"disabled":true,"description":{"content":"

List of facets of the search. Required if any facet selected

\n","type":"text/plain"},"key":"facets","value":"List of facets"},{"disabled":true,"description":{"content":"

Required. The product clicked by the user.

\n","type":"text/plain"},"key":"products","value":"List of product"},{"disabled":true,"description":{"content":"

Required, equals=search. Type of event.

\n","type":"text/plain"},"key":"eventType","value":"String"},{"disabled":true,"description":{"content":"

Required. Time when the event is created.

\n","type":"text/plain"},"key":"createdAt","value":"String"}],"variable":[]}},"response":[],"_postman_id":"68b3a9d0-5ab5-47a0-8d1f-656873672db6"},{"name":"Collect user's add to cart event","id":"19d03e81-d6a8-4863-b844-f556cb8bf9c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://eurekaevent.api.useinsider.com/api/v1/events","description":"

The Event Collection API allows you to integrate user event collection functionality into Eureka. The API is designed to collect user events, such as search queries, clicks, add to carts, and purchases. You can use the collected data to improve Eureka’s performance and user experience.

\n

The Add to Cart event should be fired when a visitor adds an item to the cart from search results.

\n

Endpoint

\n

POST https://eurekaevent.api.useinsider.com/api/v1/events

\n

Request Parameters

\n

The add to cart event supports the following properties:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Attribute NameTypeValidationDefaultDescription
referrerStringRequired, url-Source URL of the referring page
campIdInteger-999999The campId serves as a unique identifier. Refer to common fields for more details.
variationIdInteger-999999The variationId represents the unique identifier for a specific campaign variation. Refer to common fields for more details.
sourceStringoneof=
- search-popup
- search-listing
- category-listing
- brand-listing
- other
search-listingSource origin where the event triggered
integrationTypeStringRequired,
oneof=
- api
- web
-Type of integration
platformStringRequired,
oneof=
- desktop-web
- mobile-web

- tablet-web
- ios
- android
- other
-Platform used by the user. Refer to common fields if you want to use other.
userIdString-defaultUnique identifier of the user. It is expected to provide for user-based calculations.
productList of ProductRequired-The product clicked by the user. Refer to common fields for more details.
eventTypeStringRequired,
equals=add-to-cart
-Type of event
createdAtStringRequired, formatted in RFC3339If omitted or invalid, it defaults to the current timeTime when the event is created. Refer to common fields for more details.
\n
\n
\n

If your integration was implemented before the Advanced Analytics September 01, 2025, release, please note that new fields have been added to the expected product payload. Following this release, the event now retrieves currentPage and related details from product-level fields instead of top-level fields. In addition, the product object has been enriched with several new fields.

\n

For backward compatibility, you may continue sending these values at the event level. However, it is strongly recommended to update your implementation to the new product-level structure to ensure full alignment with the latest version and to benefit from more comprehensive analytics.

\n

You can review the full list of changes on the Common Properties page.

\n

Sample Request

\n

In the example below, you see a sample request along with guidance on modifying the necessary fields. This will help you seamlessly integrate and make the most of the provided configuration.

\n
\n
\n

Before usage, modifying the values such as x-auth-token and x-partner-config-key is essential.

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/search-results\",\n  \"source\": \"product-detail\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"ios\",\n  \"campId\": 999999,\n  \"variationId\": 999999,\n  \"product\": {\n    \"id\": \"product-001\",\n    \"groupCode\": \"laptop-group-1\",\n    \"query\": \"laptop\",\n    \"price\": 1299.99,\n    \"convertedPrice\": 1199.99,\n    \"currency\": \"USD\",\n    \"preferredCurrency\": \"EUR\",\n    \"clickPosition\": 3,\n    \"displayPosition\": 3,\n    \"quantity\": 2,\n    \"resultCount\": 25,\n    \"itemsPerPage\": 10,\n    \"totalPages\": 3,\n    \"facets\": [\n      {\n        \"label\": \"Price\",\n        \"field\": \"price_en\",\n        \"values\": [\"500\", \"2000\"]\n      },\n      {\n        \"label\": \"Brand\",\n        \"field\": \"brand_en\",\n        \"values\": [\"16GB\"]\n      }\n    ],\n    \"sorting\": \"Relevancy\",\n    \"currentPage\": 1,\n    \"traceId\": \"search-session-abc123\",\n    \"strategyId\":\"strategy-id-123\",\n    \"sessionId\":\"session-id-123\",\n    \"attributionWindow\": [\"7\", \"30\", \"90\"]\n  },\n  \"eventType\": \"add-to-cart\",\n  \"integrationType\": \"api\",\n  \"createdAt\": \"2025-11-25T10:40:00Z\"\n}'\n\n
\n","urlObject":{"protocol":"https","path":["api","v1","events"],"host":["eurekaevent","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Source URL of the referring page.

\n","type":"text/plain"},"key":"referrer","value":"String"},{"disabled":true,"description":{"content":"

Campaign ID, provided in the Insider's InOne panel.

\n","type":"text/plain"},"key":"campId","value":"Integer"},{"disabled":true,"description":{"content":"

Variation ID, provided in the Insider's InOne panel

\n","type":"text/plain"},"key":"variationId","value":"Integer"},{"disabled":true,"description":{"content":"

Source origin where the event triggered

\n","type":"text/plain"},"key":"source","value":"String"},{"disabled":true,"description":{"content":"

Required. Type of integration.

\n","type":"text/plain"},"key":"integrationType","value":"String"},{"disabled":true,"description":{"content":"

Required. Platform used by the user.

\n","type":"text/plain"},"key":"platform","value":"String"},{"disabled":true,"description":{"content":"

Default. Unique identifier of the user. It is expected to provide for user-based calculations.

\n","type":"text/plain"},"key":"userId","value":"String"},{"disabled":true,"description":{"content":"

Required. The product clicked by the user.

\n","type":"text/plain"},"key":"product","value":"Object"},{"disabled":true,"description":{"content":"

Required, equals=search. Type of event.

\n","type":"text/plain"},"key":"eventType","value":"String"},{"disabled":true,"description":{"content":"

Required. Time when the event is created.

\n","type":"text/plain"},"key":"createdAt","value":"String"}],"variable":[]}},"response":[],"_postman_id":"19d03e81-d6a8-4863-b844-f556cb8bf9c3"},{"name":"Collect user's purchase event","id":"4cb9b0a0-c227-4981-aabc-a67b6b16e98b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://eurekaevent.api.useinsider.com/api/v1/events","description":"

The Event Collection API allows you to integrate user event collection functionality into Eureka. The API is designed to collect user events such as search queries, clicks, add to carts, and purchases. You can use the collected data to improve Eureka’s performance and user experience.

\n

Endpoint

\n
\n
\n

POST https://eurekaevent.api.useinsider.com/api/v1/event

\n

Request Parameters

\n

The purchase event supports the following properties:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Attribute NameTypeValidationDefaultDescription
referrerStringRequired, url-Source URL of the referring page
campIdInteger-999999The campId serves as a unique identifier. Refer to common fields for more details.
variationIdInteger-999999The variationId represents the unique identifier for a specific campaign variation. Refer to common fields for more details.
platformStringRequired,
oneof=
- desktop-web
- mobile-web

- tablet-web
- ios
- android
- other
-Platform used by the user
userIdStringRequireddefaultUnique identifier of the user. It is expected to provide for user-based calculations.
integrationTypeStringRequired,
oneof=
- api
- web
-Type of integration
orderIdStringRequired-Unique ID of the order with at least one product that received an impression from the search event
allPurchasedProductsList of stringRequired-List of all product IDs that were purchased
productsList of ProductRequired-List of purchased products that received a click from the search event. Refer to common fields for more details.
eventTypeStringRequired, equals=purchase-Type of event
createdAtStringRequired, formatted in RFC3339If omitted or invalid, it defaults to the current timeTime when the event is created. Refer to common fields for more details.
\n
\n
\n

If your integration was implemented before the Advanced Analytics September 01, 2025, release, please note that new fields have been added to the expected product payload. Following this release, the event now retrieves currentPage, source, and related details from product-level fields instead of top-level fields. In addition, the product object has been enriched with several new fields.

\n

For backward compatibility, you may continue sending these values at the event level. However, it is strongly recommended to update your implementation to the new product-level structure to ensure full alignment with the latest version and to benefit from more comprehensive analytics.

\n

You can review the full list of changes on the Common Properties page.

\n

Sample Request

\n

In the example below, you see a sample request along with guidance on modifying the necessary fields. This will help you seamlessly integrate and make the most of the provided configuration.

\n
\n
\n

Before usage, modifying the values such as x-auth-token and x-partner-config-key is essential.

\n
curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \\\n--header 'x-auth-token: YOUR_AUTH_TOKEN' \\\n--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"referrer\": \"https://example.com/cart\",\n  \"userId\": \"user-12345\",\n  \"platform\": \"android\",\n  \"campId\": 100,\n  \"variationId\": 200,\n  \"orderId\": \"order-xyz789\",\n  \"allPurchasedProducts\": [\n    \"product-001\",\n    \"product-002\",\n    \"product-003\"\n  ],\n  \"products\": [\n    {\n      \"traceId\": \"search-session-abc123\",\n      \"strategyId\":\"strategy-id-123\",\n      \"sessionId\":\"session-id-123\",\n      \"source\": \"category-listing\",\n      \"id\": \"product-001\",\n      \"groupCode\": \"laptop-group-1\",\n      \"listValue\": \"pc~laptop\",\n      \"resultCount\": 25,\n      \"itemsPerPage\": 10,\n      \"totalPages\": 3,\n      \"currentPage\": 1,\n      \"sorting\": \"PriceDesc\",\n      \"facets\": [\n        {\n          \"label\": \"Fiyat\",\n          \"field\": \"price\",\n          \"values\": [\"500\", \"2000\"]\n        }\n      ],\n      \"price\": 1299.99,\n      \"convertedPrice\": 1199.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"clickPosition\": 1,\n      \"displayPosition\": 1,\n      \"quantity\": 2,\n      \"attributionWindow\": [\"session\", \"1\", \"7\", \"30\", \"90\"]\n    },\n    {\n      \"traceId\": \"search-session-def456\",\n      \"strategyId\":\"strategy-id-123\",\n      \"sessionId\":\"session-id-123\",\n      \"source\": \"search-listing\",\n      \"id\": \"product-002\",\n      \"groupCode\": \"mouse-group-1\",\n      \"query\": \"wireless mouse\",\n      \"resultCount\": 15,\n      \"itemsPerPage\": 10,\n      \"totalPages\": 2,\n      \"currentPage\": 1,\n      \"sorting\": \"MostPopularFirst\",\n      \"facets\": [\n        {\n          \"label\": \"Brand\",\n          \"field\": \"brand_en\",\n          \"values\": [\"Ltech\"]\n        }\n      ],\n      \"price\": 49.99,\n      \"convertedPrice\": 45.99,\n      \"currency\": \"USD\",\n      \"preferredCurrency\": \"EUR\",\n      \"clickPosition\": 2,\n      \"displayPosition\": 2,\n      \"quantity\": 1,\n      \"attributionWindow\": [\"session\", \"1\", \"7\", \"30\", \"90\"]\n    }\n  ],\n  \"eventType\": \"purchase\",\n  \"integrationType\": \"api\",\n  \"createdAt\": \"2025-11-25T10:50:00Z\"\n}'\n\n
\n","urlObject":{"protocol":"https","path":["api","v1","events"],"host":["eurekaevent","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Source URL of the referring page.

\n","type":"text/plain"},"key":"referrer","value":"String"},{"disabled":true,"description":{"content":"

Campaign ID, provided in the Insider's InOne panel.

\n","type":"text/plain"},"key":"campId","value":"Integer"},{"disabled":true,"description":{"content":"

Variation ID, provided in the Insider's InOne panel

\n","type":"text/plain"},"key":"variationId","value":"Integer"},{"disabled":true,"description":{"content":"

Required. Platform used by the user.

\n","type":"text/plain"},"key":"platform","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique identifier of the user.

\n","type":"text/plain"},"key":"userId","value":"String"},{"disabled":true,"description":{"content":"

Required. Type of integration.

\n","type":"text/plain"},"key":"integrationType","value":"String"},{"disabled":true,"description":{"content":"

Required. Unique ID of the order with at least one product that received impression from the search event.

\n","type":"text/plain"},"key":"orderId","value":"String"},{"disabled":true,"description":{"content":"

Required. List of all product IDs that were paid for.

\n","type":"text/plain"},"key":"allPurchasedProducts","value":"List of string"},{"disabled":true,"description":{"content":"

Required. List of purchased products that received click from the search event.

\n","type":"text/plain"},"key":"products","value":"List of products"},{"disabled":true,"description":{"content":"

Required, equals=search. Type of event.

\n","type":"text/plain"},"key":"eventType","value":"String"},{"disabled":true,"description":{"content":"

Required. Time when the event is created.

\n","type":"text/plain"},"key":"createdAt","value":"String"}],"variable":[]}},"response":[],"_postman_id":"4cb9b0a0-c227-4981-aabc-a67b6b16e98b"}],"id":"c17ec092-0b9c-4733-bf88-4892e5c622ce","_postman_id":"c17ec092-0b9c-4733-bf88-4892e5c622ce","description":""},{"name":"Category Merchandising API","item":[{"name":"Manage product listing pages","id":"7043d4fd-c909-4fab-a4a7-ddad6098fb0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ineureka.api.useinsider.com/api/web/collections/{type}?cf={COLLECTION_FILTER}&p={PARTNER_ID}&l={LOCALE}&c={CURRENCY}","description":"

Eureka’s Category Merchandising API allows you to curate and manage your product listing pages effectively. Tailored for various list pages, such as categories, sales, new arrivals, and brands, enabling you to pin, boost, bury, or hide specific products as needed. You can set the rules using a visual merchandising editor to customize content for particular categories. Once you apply the rules, you can build the listing pages by making an API call based on the listing page type and its filters.

\n

The initial step involves sending your data to Insider One in the correct format, typically handled by system rules defined during the website mapping process. 

\n

Category Merchandising API responses are in JSON format containing product matching criteria, configured merchandising content, and available facet options for further refinement.

\n

Requirements for Category Merchandising API

\n\n

Endpoint

\n

https://ineureka.api.useinsider.com/api/web/collections/{type}?cf={COLLECTION_FILTER}&p={PARTNER_ID}&l={LOCALE}&c={CURRENCY}

\n

For requests where the total URL length exceeds 2,048 characters, a POST request must be sent to the base URL: https://ineureka.api.useinsider.com/api/web/collections. While the HTTP protocol itself does not define an explicit maximum URL length, practical limitations exist across browsers, web servers, proxies, and load balancers.
To prevent compatibility issues and request failures, we enforce the length threshold as a precautionary measure. Although GET requests may yield faster responses in some cases, it is important to transition to POST when the payload size approaches or exceeds approximately 2,000 characters.
This ensures compliance with common platform constraints and avoids potential truncation, rejection, or undefined behavior resulting from excessively long URLs.

\n

The only difference between GET and POST requests is that the values sent as URL parameters in GET requests must be sent as JSON body in POST requests. For example:

\n
{\n  \"cf\": \"COLLECTION_FILTER\",\n  \"p\": \"PARTNER_ID\",\n  \"l\": \"LOCALE\",\n  \"c\": \"CURRENCY\",\n  \"sid\": \"STRATEGY_ID\"\n}\n\n
\n

When the request is sent, an authentication exception is thrown for security reasons. Therefore, when sending the request, you need to set the X-AUTH-TOKEN header to the token shared with you.

\n

Collection Types

\n

When retrieving products from the product catalog, three different collection types help organize and filter results based on specific criteria. These collection types are:

\n

Category Collection

\n

The Category Collection type enables the retrieval of all products in the catalog that belong to a specific category, helping to narrow down results based on product type. For example, to get all shoes, you can retrieve products under the \"Footwear\" category.

\n

Brand Collection

\n

The Brand Collection(opens in new tab) type enables you to retrieve all products from a specific brand in the catalog, making it easy for users to access products from their preferred brands. For example, if you want to get all Nike products, you can use this option to retrieve only items from the \"Nike\" brand.

\n

All Products Collection

\n

The All Products Collection type allows the retrieval of all products in the catalog without any restrictions, providing access to the entire product catalog. For example, if you want to see all products, you can use this option to retrieve all products in the catalog.

\n

Using these collection types, you can retrieve products efficiently based on your specific needs.

\n

Common Capabilities for All Types

\n

Sorting

\n

The st parameter in the request can only have one value from the predefined sorting types. Using these types, the sorting algorithm for the listed products is selected. Depending on your data, the sorting types can be active or inactive. You can view these settings on the InOne panel.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSorting Type
stRelevancy
stPriceAsc
stPriceDesc
stMostPopularFirst
stBestRatedFirst
stMostRatedFirst
stNewestFirst
stMostFavoriteFirst
stMostDiscountedFirst
\n

Filters

\n

You can filter listed products using field names in the filter settings defined in faceting in Insider One's InOne panel.

\n

Sample Faceting Regarding the Filter Config

\n

Sample filter request:

\n
&a=category~Skin~Body Lotions&a=price~5~10\n\n
\n

In the result of this filter request, you can see the matched facets in the related property sections of items as below:

\n
{\n  \"itemProperties\": {\n    \"item_card\": {\n      \"price\": {\n        \"EUR\": 7.75,\n        ...\n      },\n      \"category\": [\n        \"Skin\",\n        \"Body Lotions\",\n        ...\n      ],\n      \"in_stock\": 1,\n      ...\n    },\n    ...\n  },\n  ...\n}\n\n
\n

The field values you can use for facet filtering are provided under data.aggregations in the result.

\n
[\n  {\n    \"name\": \"price\",\n    \"label\": \"Price\",\n    \"style\": \"Slider\",\n    \"items\": [\n      {\n        \"name\": \"0~5\",\n        \"min\": 0.0,\n        \"max\": 5.0\n      },\n      {\n        \"name\": \"5~10\",\n        \"min\": 5.0,\n        \"max\": 10.0\n      },\n      ...\n    ],\n    \"sequence\": 1,\n    \"itemOrderType\": \"KeyAsc\"\n  },\n  {\n    \"name\": \"category\",\n    \"label\": \"Category\",\n    \"style\": \"List\",\n    \"items\": [\n      {\n        \"name\": \"Skin\",\n        \"selected\": true,\n        \"documentCount\": 66\n      },\n      {\n        \"name\": \"Body Lotion\",\n        \"selected\": true,\n        \"documentCount\": 61\n      },\n      ...\n    ],\n    \"sequence\": 2,\n    \"itemOrderType\": \"CountDesc\"\n  },\n  {\n    \"name\": \"in_stock\",\n    \"label\": \"In Stock\",\n    \"style\": \"Checkboxes\",\n    \"items\": [\n      {\n        \"name\": \"1\",\n        \"selected\": false,\n        \"documentCount\": 12\n      },\n      ...\n    ],\n    \"sequence\": 3,\n    \"itemOrderType\": \"CountDesc\"\n  },\n  ...\n]\n\n
\n

This table details the facet filter styles and their corresponding data types. Based on the specific filter style you want to implement, choose the appropriate data type.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Filter StyleData Type
PriceNumeric
RatingNumeric
RangeNumeric
SliderNumeric
CheckboxesString
ListString
ToggleBoolean
\n

For the filters with numeric data types, such as Slider style, there should be only two values: min and max.

\n
{field}~{minValue}~{maxValue}\n\n
\n
Sample Filter Parameters
\n
&a=brand~Neki snippet\n\n
\n
&a=category~Birds~Cats~Dogs\n\n
\n
&a=price~50~100\n\n
\n
&a=brand~Neki&a=price~50~100\n\n
\n

Sample Responses

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDefinition
statusIt is the field that shows the result of the search. This field can be:
- Success: Category Merchandising API response is valid.
- Error: Unexpected internal server errors.
- Invalid: Eureka Category Merchandising API returns a Validation Exception. The request is invalid.
- BusinessException: Eureka Category Merchandising API returns a Business Exception. Details are shared in Validation Exceptions section.
dataIt is the object where items, sortings, aggregations, navigations, and noResultPageText are kept as a result of a given query.
data.itemsThis field holds the list of properties for the returned items.
data.items.itemIdIt shows the item ID.
* In case there are variants of the item, the ID refers to the item to be displayed in search results. The item details are kept under data.items.itemProperties in addition to that all the variants including the item displayed are also stored in data.items.itemVariants
data.items.itemProperties.item_cardThis field holds all of the fields such as name, discount, product_attributes (which includes a list of fields such as flavor, color, etc.).
* In case there are price and original_price fields, they are the same unless there is a discount on this product. When there is a discount, price field is equal to discounted price.
* These fields may vary depending on your account.
data.items.itemVariantsThis field holds all of the variants of an item. The first element of the list is the item to be displayed in search results. The format of data.items.itemVariants items is the same as the data.items.itemProperties.item_card.
* Variants are options of the same item that have different properties. For instance, yellow and red color options of the same t-shirt might be variants of the t-shirt.
* Use of variants may be active or passive depending on your account.
data.aggregationsThis field holds a list of different aggregations.
data.aggregations.nameThis field holds the aggregation name.
data.aggregations.labelThis field holds the aggregation label (which is for showing the name of the aggregation to the end user).
data.aggregations.styleThis field holds the aggregation style. Possible values:
Price, Checkboxes, Toggle, Rating, Range, Slider, List
data.aggregations.itemsThis field holds a list of item fields for the specified aggregation.
data.aggregations.items.nameThis field holds the aggregation item name.
data.aggregations.items.labelThis field holds the aggregation item label.
data.aggregations.items.minThis field holds the minimum value of the aggregation item if the aggregation style is numeric.
data.aggregations.items.maxThis field holds the maximum value of the aggregation item if the aggregation style is numeric.
data.aggregations.items.selectedIt is a boolean field that indicates whether the aggregation item is selected if the aggregation style is not numeric.
data.aggregations.items.documentCountThis field holds the total number of documents of the aggregation item if the aggregation style is not numeric.
data.aggregations.suffixUnitThis field holds the suffix unit for the facet values as string. For instance, for perfume_size facets, ml is the suffixUnit (50ml - 100ml)
data.aggregations.prefixUnitThis field holds the prefix unit for the facet values as string.
data.aggregations.sequenceThis field holds the sequence of the aggregation for showing the aggregations to the end-user in the correct order.
data.aggregations.itemOrderTypeThis field holds the item order type of the aggregation. Possible values: KeyAsc, KeyDesc, CountDesc, CountAsc, None
data.navigationThis dictionary shows information such as pagination and total item count.
data.navigation.totalPagesThis field shows how many pages are returned for a given query.
data.navigation.currentPageThis field specifies which page the returned result is.
data.navigation.totalItemsThis field shows how many items are returned for a given query.
data.navigation.itemPerPageIt is the field that shows how many items are returned on each page.
data.noResultPageTextIf a query does not return any results, this field is used for the empty result page. E.g., No Results found
data.sortingsIt is the list where the details about sorting are kept.
data.sortings.typeIt is the field where the sorting type is located. Possible sorting types: Relevancy, PriceAsc, PriceDesc, MostPopularFirst, BestRatedFirst, MostRatedFirst,
NewestFirst, MostFavoriteFirst, MostDiscountedFirst
data.sortings.labelIt is the label of sorting that is displayed to the end user.
data.sortings.selectedIt is a boolean field that indicates whether the relevant sorting is selected.
data.defaultSortingTypeIt is the field where the sorting type of the recommended items is located. It is null when no active sorting is found.
partnerResourcesIt is the list of labels to be displayed to the end user. It provides localization flexibility based on the locale parameter sent.
*Partner resources can be set from the InOne panel.
errorWhen there is a business exception (501), this field is filled with code and message fields.
validationsWhen the request is incorrect (400 Bad Request), this field is filled with an array of type and message fields.
\n

200 Success

\n
{ \n  \"status\": \"Success\",\n  \"data\": {\n    \"items\": [...],\n    \"aggregations\": [...],\n    \"navigation\": {...},\n    \"noResultPageText\": \"...\",\n    \"sortings\": [...]\n  },\n  \"redirection\": null,\n  \"partnerResources\": {...},\n  \"error\": null,\n  \"validations\": null\n}\n\n
\n

500 Internal Server Error

\n
{ \n  \"status\": \"Error\",\n  \"data\": null,\n  \"redirection\": null,\n  \"partnerResources\": null,\n  \"error\": {\n    \"code\": \"500 INTERNAL_SERVER_ERROR\",\n    \"message\": \"...\" \n  },\n  \"validations\": null\n}\n\n
\n

400 Business Exception

\n

You can refer to the Fail Records Messages to troubleshoot the Business Exception errors.

\n
{ \n  \"status\": \"BusinessException\",\n  \"data\": null,\n  \"redirection\": null,\n  \"partnerResources\": null,\n  \"error\": {\n    \"code\": \"...\",\n    \"message\": \"...\" \n  },\n  \"validations\": null\n}\n\n
\n

400 Validation Exception

\n

You can refer to the Fail Records Messages to troubleshoot the Validation Exception errors.

\n
{ \n  \"status\": \"Invalid\", \n  \"data\": null, \n  \"redirection\": null, \n  \"partnerResources\": null,\n  \"error\": null,\n  \"validations\": [\n    {\n      \"type\": \"...\",\n      \"message\": \"...\"\n    }\n  ]\n}\n\n
\n

Fail Records Messages

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
AggregationStyleNotFoundAggregation style must be provided in the partner config.400
AggregationConfigNotFoundAggregation configs must be provided in the partner config.400
SortingConfigNotFoundSorting configs must be provided in the partner config400
SortingFieldNotFoundSorting field must be provided in the partner config.400
InvalidPriceAggregationStyleIncorrect style for price aggregation is provided in the partner config.400
PartnerConfigNotFoundPartner config cannot be gathered from the cache.400
AggregationResultNotFoundUnexpected aggregation results were received according to aggregation configs.400
\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
PartnerIdNotFoundp parameter is not provided in the request400
LocaleNotFoundl parameter is not provided in the request400
LocaleInvalidFormatWrong locale format is provided in the request400
CurrencyNotFoundc parameter is not provided in the request400
CurrencyInvalidFormatWrong currency format is provided in the request400
CollectionFilterNotFoundCollection filter cf is not provided400
CollectionFilterInvalidFormatCollection filter format is invalid400
InvalidCollectionFilterCollection filter must not be given with AllProducts Collection Type400
CollectionInvalidLengthCollection filter must contain number of characters between 2 and 280400
PaginationFromInvalidValueWrong pf value is provided in the request400
PaginationSizeInvalidValueWrong ps value is provided in the request400
AggregationNameNotFoundAggregation name must be provided in the request400
AggregationItemsNotFoundAggregation items must be provided in the request400
SortingTypeInvalidSorting type is not valid400
\n
","urlObject":{"protocol":"https","path":["api","web","collections","{type}"],"host":["ineureka","api","useinsider","com"],"query":[{"key":"cf","value":"{COLLECTION_FILTER}"},{"key":"p","value":"{PARTNER_ID}"},{"key":"l","value":"{LOCALE}"},{"key":"c","value":"{CURRENCY}"}],"variable":[]}},"response":[],"_postman_id":"7043d4fd-c909-4fab-a4a7-ddad6098fb0b"},{"name":"Category Collection","id":"bcb1420f-b28e-4b9f-bbdb-7f6a0025eb4a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ineureka.api.useinsider.com/api/web/collections","description":"

The Category Collection type in Eureka’s Category Merchandising API allows retrieval of all products in a specific category in the product catalog, helping narrow results by product type. For example, you can retrieve products under the \"Footwear\" category to get all shoes.

\n

Structures

\n

Flat Structure

\n

Some catalogs use a non-hierarchical or flat category structure where categories are not nested (e.g., Shoes, Footwear instead of Women > Shoes > Sneakers). In this case, you can retrieve products within specific categories, such as Shoes.

\n
Multiple Flat Category Retrieval
\n

Only products belonging to both categories are returned when multiple singular categories are used in a flat category search. These categories are connected using an \"AND\" condition, meaning that a product must be classified under both to be included. For example, searching for Shoes and Footwear will return only products categorized as both Shoes and Footwear.

\n

The cf parameter should be formatted the same way as in hierarchical structures, such as shoes or shoes~footwear

\n

Merchandising rules cannot be applied to multiple flat category retrievals.

\n
Hierarchical Structure
\n

Some catalogs use a hierarchical category structure, where categories follow a parent-child relationship (e.g., Women > Shoes > Sneakers). In this case, searches should use the whole structure to ensure accurate results. For example, to retrieve products under Women > Shoes, use Women~Shoes.

\n

You can select Flat or Hierarchical structure from Catalog Settings > Category Type page in the InOne panel.To use the Category Collection type, the category attribute in the product catalog must be properly populated to ensure product retrieval.

\n

Request Parameters

\n

The type path variable value must exactly match the example values provided in the request parameter table. The cf parameter value must exactly match the values defined in the product catalog.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredExample
typePath variable that specifies the desired product listing typeStringYes\"Category\"
cfAllows filtering of products within the specified listing typeStringYescf=Women~Shoes~Trainers
pPartner ID. Navigate to Inone Settings > Account Settings to copy your Partner ID.StringYes
lLocale is required to get your products in the current language of the website. E.g. en_US, en_GBStringYesl=en_US
cProducts will be displayed in the given currency (The current currency selected by the end-user on your website). E.g., USD,  AUDStringYesc=USD
sidStrategy ID. The unified identifier for a merchandising strategy. If Eureka Strategies(opens in new tab) are enabled for your account, you need to add this parameter to utilize the strategy. When provided, the listed products are enhanced with the merchandising rules belonging to the specified strategy. Merchandising actions such as boosting, burying, pinning, and hiding products are applied to category pages based on the rules defined within that strategy.StringNosid=123456
aFilter the products with the following pattern: a={field}~{value}List of StringNoa=size~38~39
pfIndex indicating from which order the products will start to be listed. It is used for pagination. The default value is pf=0.IntegerNo
psNumber of products that will be returned in the response. The default value is ps=6.IntegerNo
stSorting type of the listed products. It only takes one of the predefined sorting types. The default value is st=Relevancy.StringNo
oiThe listed products will only be displayed as item IDs. The default value is oi=FalseBooleanNo
ocThe listed products will be displayed without their variants. The default value is false.BooleanNo
uUser ID can be found in local storage by the key name spUID. spUID, which is a stringified object and contains data and expired properties.StringNo
\n

The sid (Strategy ID) parameter enables strategy-based merchandising. When a valid strategy ID is provided, the API applies the merchandising rules associated with that strategy to the search results. This includes product-level actions (boost, high-boost, bury, high-bury, pin, hide) and attribute-level actions (boost attribute, bury attribute, hide by attribute).
- A Eureka Strategy(opens in new tab) becomes active once it is assigned to a Eureka Campaign. However, when using strategies with the Eureka Category API, a strategy can still be applied to category pages even if it is not assigned to any campaign and remains inactive. In this case, the strategy will take effect when the sid parameter is included in the API request.
- **If sid is omitted, no strategy-based merchandising rules are applied to the search results.
**- Additionally, if Eureka Strategies are enabled for your account, refer to the image below showing where to locate the sid

\n","urlObject":{"protocol":"https","path":["api","web","collections"],"host":["ineureka","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bcb1420f-b28e-4b9f-bbdb-7f6a0025eb4a"},{"name":"Brand Collection","id":"959cfe48-2e5b-405a-bb4e-7a043ae31053","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ineureka.api.useinsider.com/api/web/collections","description":"

The Brand Collection enables searching for products under a specific brand name.

\n

The Brand Collection accepts only singular values for the cf parameter, meaning searches can be performed using only one brand value at a time.

\n

To use the Brand Collection type, ensure that the brand attribute in the product catalog is properly populated for accurate product retrieval.

\n

Merchandising rules cannot be applied to the Brand Collection.

\n

Request Parameters

\n

The type path variable value must exactly match the example values provided in the request parameter table.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredExample
typePath variable that specifies the desired product listing typeStringYes\"Category\"
cfAllows filtering of products within the specified listing typeStringYescf=Women~Shoes~Trainers
pPartner ID. Navigate to InOne > Inone Settings > Account Preferences to copy your Partner ID.StringYes
lLocale is required to get your products in the current language of the website. E.g. en_US, en_GBStringYesl=en_US
cProducts will be displayed in the given currency (The current currency selected by the end-user on your website). E.g. USD, AUDStringYesc=USD
aFilter the products with the following pattern: a={field}~{value}List of StringNoa=size~38~39
pfIndex indicating from which order the products will start to be listed. It is used for pagination. The default value is pf=0.IntegerNo
psNumber of products that will be returned in the response. The default value is ps=6.IntegerNo
stSorting type of the listed products. It only takes one of the predefined sorting types. The default value is st=Relevancy.StringNo
oiThe listed products will only be displayed as item IDs. The default value is oi=FalseBooleanNo
ocThe listed products will be displayed without their variants. The default value is false.BooleanNo
uUser ID can be found on local storage by the key name spUID. spUID, which is a stringified object and contains data and expired properties.StringNo
\n
","urlObject":{"protocol":"https","path":["api","web","collections"],"host":["ineureka","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"959cfe48-2e5b-405a-bb4e-7a043ae31053"},{"name":"All Products Collection","id":"1e86c1b7-3754-4206-9258-b5762bd65923","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"

The All Product Collection type provides a comprehensive search across all products in the catalog. It’s ideal for retrieving all products.

\n

Unlike Category and Brand collections, the All Product collection does not require or use the cf parameter.
If the cf parameter is included in a request, the API will return a validation error, preventing the request from being processed.

\n

Merchandising rules cannot be applied to the All Product Collection.

\n

Validation Exception

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
TypeDefinitionHTTP Code
InvalidCollectionFiltercf parameter must not be provided in the request.400
\n

Request Parameters

\n

The type path variable value must exactly match the example values provided in the request parameter table.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredExample
typePath variable that specifies the desired product listing typeStringYes\"Category\"
pPartner ID. Navigate to InOne > Inone Settings > Account Preferences to copy your Partner ID.StringYes
lLocale is required to get your products in the current language of the website. E.g. en_US, en_GBStringYesl=en_US
cProducts will be displayed in the given currency (The current currency selected by the end-user on your website). E.g. USD,  AUDStringYesc=USD
aFilter the products with the following pattern: a={field}~{value}List of StringNoa=size~38~39
pfIndex indicating from which order the products will start to be listed. It is used for pagination. The default value is pf=0.IntegerNo
psNumber of products that will be returned in the response. The default value is ps=6.IntegerNo
stSorting type of the listed products. It only takes one of the predefined sorting types. The default value is st=Relevancy.StringNo
oiThe listed products will only be displayed as item IDs. The default value is oi=FalseBooleanNo
ocThe listed products will be displayed without their variants. The default value is false.BooleanNo
uUser ID can be found on local storage by the key name spUID. spUID, which is a stringified object and contains data and expired properties.StringNo
\n
","urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"1e86c1b7-3754-4206-9258-b5762bd65923"}],"id":"66bdf65a-4b8a-4bdd-8c3c-5a8ea584ee22","_postman_id":"66bdf65a-4b8a-4bdd-8c3c-5a8ea584ee22","description":""},{"name":"Get search results","id":"cbbec6de-4785-436d-89f8-b4c14074da58","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ineureka.api.useinsider.com/api/web/search","description":"

Eureka’s Search API lets you quickly and smoothly implement our search engine within your website(s) or mobile application(s). Insider One's powerful search engine processes millions of queries monthly, delivering relevant results in under 150-400 ms, regardless of location.

\n

The first step is to send your data in the correct format to Insider One. Eureka will return the results in JSON. The response will include products matching the search criteria, available facet options to refine the results further, and configured merchandising content.

\n

Requirements for Search API

\n\n

Endpoint

\n
\n
\n

GET https://ineureka.api.useinsider.com/api/web/search

\n

Use POST /api/web/search instead of GET in two cases: when the total URL length exceeds 2048 characters, or when any a filter value contains a comma character.
For URL length, although the HTTP specification does not define a maximum, practical limits are imposed by web browsers and server software. POST moves all parameters into the request body, avoiding these limits entirely. GET requests may return faster responses, but switch to POST as your payload approaches 2000 characters.

\n

The only difference between GET and POST requests is that the values sent as URL parameters in GET requests must be sent in the JSON body of POST requests, as you can see below:

\n
{\n  \"q\": \"SEARCH_QUERY\",\n  \"p\": \"PARTNER_ID\",\n  \"l\": \"LOCALE\",\n  \"c\": \"CURRENCY\"\n}\n\n
\n

Bear in mind that, for security reasons, an authentication exception is thrown when the request is sent. To avoid this, you need to set the X-AUTH-TOKEN header with the token  when sending the request.

\n

Request Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequiredExample
qQuery String that will be searchedStringYesq=sneakers
pThis is your partner ID. To copy your partner ID, navigate to InOne > Inone Settings > Account Settings(opens in new tab).StringYesp=10009999
lLocale is required to receive your products on the website in the current language. Depending on this, product data will be gathered, and the settings will be applied.StringYesl=en_US
cThe searched products will be displayed in the given currency, as written in the catalog(the current currency the end user selects on your website).StringYesc=USD
sidStrategy ID. The unified identifier for a merchandising strategy. If Eureka Strategies(opens in new tab) are enabled for your account, you need to add this parameter to utilize the strategy. When provided, Merchandising actions such as boosting, burying, pinning, and hiding products are applied to search results based on the rules defined within that strategy.StringNosid=123456
psPage size. The number of products will be displayed on the search results page. For example, if the phone is searched with ps=6, the API will bring the most relevant 6 phones to the current page. The default value is ps=6.IntegerNops=6
pfPage from. Index where the searched products will start in the response. It is used for pagination. For example, if \"phone\" is searched and the second page is clicked, the request must be sent with pf=6 if ps is set as 6. Results from the 6th product will be displayed. The default value is pf=0.IntegerNopf=12
aFilter the products with the following pattern: a={field}~{value}. It is applied when the end-user selects a filter from the facet section.List of StringNoa=size~38~39
stSorting type of the searched products. It only takes one of the predefined sorting types. The default value is relevancy.StringNost=Relevancy
uThe User ID. It can be found in local storage under the key name spUID. This key stores a stringified object containing data (the User ID) and expiration (the expiration timestamp). The User ID or Unique User ID must be sent if the personalized search is enabled.StringNou=15ca72d9c3.61d3
uuidThe Unique User ID. You define and manage the unique user ID. If u is not provided, the uuid must be sent to enable personalized search results. If both uuid and u parameters are provided, the u parameter takes priority.StringNouuid=26522777
oiThe searched products will only be displayed as item IDs. The default value is false.BooleanNooi=False
qsApplied strategies of the search query. It only takes an encoded string auto-generated by the first query in the response.StringNoqs=UCxQUA==
\n

The query q parameter should contain at least 2 characters and no more than 280 characters. Otherwise, a validation exception will be thrown.

\n

The qs parameter should not be included in the initial end-user query request. You can find it in the response body after the first result returns. However, it needs to be added in subsequent requests when applying the facet filter for the same query. Otherwise, the request is accepted as a new query, and the search results may differ.

\n

The sid (Strategy ID) parameter enables strategy-based merchandising. When a valid strategy ID is provided, the API applies the merchandising rules associated with that strategy to the search results. This includes product-level actions (boost, high-boost, bury, high-bury, pin, hide) and attribute-level actions (boost attribute, bury attribute, hide by attribute).
- A Eureka Strategy(opens in new tab) becomes active once it is assigned to a Eureka Campaign. However, when using strategies with the Eureka Search API, a strategy can still be applied to search results even if it is not assigned to any campaign and remains inactive. In this case, the strategy will take effect when the sid parameter is included in the API request.
- **If sid is omitted, no strategy-based merchandising rules are applied to the search results.
**- Additionally, if Eureka Strategies are enabled for your account, refer to the image below showing where to locate the sid

\n\n\n

Sorting

\n

The st parameter in the request can only have one value from the predefined sorting types. These types select the sorting algorithm for the searched products. Depending on your data, the sorting types can be active or inactive. You can view these settings on the InOne panel.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterSorting Type
stRelevancy
stPriceAsc
stPriceDesc
stMostPopularFirst
stBestRatedFirst
stMostRatedFirst
stNewestFirst
stMostFavoriteFirst
stMostDiscountedFirst
\n

Filters

\n

Search results can be filtered using fields in filter settings defined in faceting(opens in new tab) on the Insider One's InOne panel.

\n
Sample Filter Result Regarding the Filter Config
\n

Sample filter request:

\n
&a=category~Skin~Body Lotions&a=price~5~10\n\n
\n

As a result of this filter request, you can see the matched facets in the related result section below

\n
{\n  \"itemProperties\": {\n    \"item_card\": {\n      \"price\": {\n        \"EUR\": 7.75,\n        ...\n      },\n      \"category\": [\n        \"Skin\",\n        \"Body Lotions\",\n        ...\n      ],\n      \"in_stock\": 1,\n      ...\n    },\n    ...\n  },\n  ...\n}\n\n
\n

The field values you can use for facet filtering are provided under data.aggregations in the result.

\n
[\n  {\n    \"name\": \"price\",\n    \"label\": \"Price\",\n    \"style\": \"Slider\",\n    \"items\": [\n      {\n        \"name\": \"0~5\",\n        \"min\": 0.0,\n        \"max\": 5.0\n      },\n      {\n        \"name\": \"5~10\",\n        \"min\": 5.0,\n        \"max\": 10.0\n      },\n      ...\n    ],\n    \"prefixUnit\": null,\n    \"suffixUnit\": null,\n    \"sequence\": 1,\n    \"itemOrderType\": \"KeyAsc\"\n  },\n  {\n    \"name\": \"category\",\n    \"label\": \"Category\",\n    \"style\": \"List\",\n    \"items\": [\n      {\n        \"name\": \"Skin\",\n        \"selected\": true,\n        \"documentCount\": 66\n      },\n      {\n        \"name\": \"Body Lotion\",\n        \"selected\": true,\n        \"documentCount\": 61\n      },\n      ...\n    ],\n    \"prefixUnit\": null,\n    \"suffixUnit\": null,\n    \"sequence\": 2,\n    \"itemOrderType\": \"CountDesc\"\n  },\n  {\n    \"name\": \"in_stock\",\n    \"label\": \"In Stock\",\n    \"style\": \"Checkboxes\",\n    \"items\": [\n      {\n        \"name\": \"1\",\n        \"selected\": false,\n        \"documentCount\": 12\n      },\n      ...\n    ],\n    \"prefixUnit\": null,\n    \"suffixUnit\": null,\n    \"sequence\": 3,\n    \"itemOrderType\": \"CountDesc\"\n  },\n  {\n    \"name\": \"evaluation\",\n    \"label\": \"Evaluation\",\n    \"style\": \"Rating\",\n    \"items\": [\n      {\n        \"name\": \"1+\",\n        \"label\": null,\n        \"min\": 1.0,\n        \"max\": 6.0,\n        \"selected\": false,\n        \"documentCount\": 8\n      },\n      {\n        \"name\": \"2+\",\n        \"label\": null,\n        \"min\": 2.0,\n        \"max\": 6.0,\n        \"selected\": false,\n        \"documentCount\": 8\n      },\n      {\n        \"name\": \"3+\",\n        \"label\": null,\n        \"min\": 3.0,\n        \"max\": 6.0,\n        \"selected\": false,\n        \"documentCount\": 8\n      },\n      {\n        \"name\": \"4+\",\n        \"label\": null,\n        \"min\": 4.0,\n        \"max\": 6.0,\n        \"selected\": false,\n        \"documentCount\": 8\n      },\n      {\n        \"name\": \"5\",\n        \"label\": null,\n        \"min\": 5.0,\n        \"max\": 6.0,\n        \"selected\": false,\n        \"documentCount\": 8\n      }\n    ],\n    \"prefixUnit\": null,\n    \"suffixUnit\": null,\n    \"sequence\": 6,\n    \"itemOrderType\": \"CountDesc\"\n  },\n  ...\n]\n\n
\n

\"a\" parameter should be passed to the request as a query string when the request method is GET, or it should be passed as a list of strings when the request method is POST. The \"a\" can take multiple fields; each must be stated separately. Also, the field can take multiple values separated by a tilde (~). Field values should be different; if there is more than one value, they should be separated according to the filter pattern.

\n
?a={field}~{value}&a={field}~{value}\n\n
\n
{\"a\": [\"{field}~{value}\", \"{field}~{value}\"]}\n\n
\n

MarkupCopy

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Filter StyleData Type
PriceNumeric
RatingNumeric
RangeNumeric
SliderNumeric
CheckboxesString
ListString
ToggleBoolean
\n

For filters with numeric data types, such as Slider style, there should be only two values: min and max.

\n
{field}~{minValue}~{maxValue}\n\n
\n
Sample Filter Parameters
\n
&a=brand~Mybrand snippet\n\n
\n
&a=category~Birds~Cats~Dogs\n\n
\n
&a=price~50~100\n\n
\n
&a=brand~Mybrand&a=price~50~100\n\n
\n

Sample Responses

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDefinition
statusIt is the field that shows the result of the search. This field can be:
- Success: Search API response is valid.
- SuccessFallback: If Search API returns an empty item list, Eureka Search API - sends a request to Recommendation API and returns the items.
- Error: Unexpected internal server errors.
- Invalid: Eureka Search API returns a Validation Exception. The request is invalid.
- BusinessException: Eureka Search API returns a Business Exception. Details are shared in Validation Exceptions section.
dataIt is the object where items, sortings, aggregations, navigations, and noResultPageText are kept as a result of a given query.
data.itemsThis field holds the list of properties for the returned items.
data.items.itemIdIt shows the item ID.
* In the case of item variants, the ID refers to the item to be displayed in search results. The item details are kept under data.items.itemProperties. In addition to that, all the variants, including the item displayed, are also stored in data.items.itemVariants
data.items.itemProperties.item_cardThis field holds all of the fields such as original_price, product_attributes (includes list of fields such as review_count, product_brand etc.).
* It includes the price and original_price fields. If this product does not have a discount, these two fields are the same. However, if there is a discount, the price field is equal to the discounted price.
* These fields might vary depending on your account.
data.items.itemVariantsThis field holds all of the variants of an item. The first element of the list is the item to be displayed in search results. The format of data.items.itemVariants items is the same as the data.items.itemProperties.item_card.
* Variants are options of the same item that have different properties. For instance, yellow and red color options of the same t-shirt might be variants of the t-shirt.
* Use of variants may be active or passive, depending on your account.
data.aggregationsThis field holds a list of different aggregations.
data.aggregations.nameThis field holds the aggregation name.
data.aggregations.labelThis field holds the aggregation label (which shows the aggregation's name to the end user).
data.aggregations.styleThis field holds the aggregation style. Possible values:
Checkboxes, Toggle, Rating, Range, Slider, List, None
data.aggregations.itemsThis field holds a list of item fields for the specified aggregation.
data.aggregations.items.nameThis field holds the aggregation item name.
data.aggregations.items.labelThis field holds the aggregation item label.
data.aggregations.items.minThis field holds the minimum value of the aggregation item.
data.aggregations.items.maxThis field holds the maximum value of the aggregation item.
data.aggregations.items.selectedIt is a boolean field that indicates whether the aggregation item is selected.
data.aggregations.items.documentCountThis field holds the total number of documents of the aggregation item.
data.aggregations.suffixUnitThis field holds the suffix unit for the facet values as a string. For instance, for perfume_size facets, ml is the suffixUnit (50ml - 100ml)
data.aggregations.prefixUnitThis field holds the prefix unit for the facet values as a string.
data.aggregations.sequenceThis field holds the aggregation sequence to show the aggregations to the end-user in the correct order.
data.aggregations.itemOrderTypeThis field holds the item order type of the aggregation. Possible values: KeyAsc, KeyDesc, CountDesc, CountAsc, None
data.navigationThis dictionary shows information such as pagination and total item count.
data.navigation.totalPagesThis field shows how many pages are returned for a given query.
data.navigation.currentPageThis field specifies which page the returned result is.
data.navigation.totalItemsThis field shows how many items are returned for a given query.
data.navigation.itemPerPageIt is the field that shows how many items are on a page.
data.noResultPageTextIf a query does not return any results, this field is used for the empty result page. E.g., No Results
data.sortingsIt is the list where the details about sorting are kept.
data.sortings.typeIt is the field where the sorting type is located. Possible sorting types: Relevancy, PriceAsc, PriceDesc, MostPopularFirst, BestRatedFirst, MostRatedFirst,
NewestFirst, MostFavoriteFirst, MostDiscountedFirst
data.sortings.labelIt is the sorting label that is displayed to the end user.
data.sortings.selectedIt is a boolean field that indicates whether the relevant sorting is selected.
data.appliedSearchStrategyThis field holds the encoded string of applied search strategies.
data.brandsThis field holds the list of recommended brands for the given user, if there are any.
*This field is only available when the response status is SuccessFallback.
data.categoriesThis field holds the list of recommended categories for the given user, if there are any.
*This field is only available when the response status is SuccessFallback.
data.defaultSortingTypeIt is the field where the sorting type of the recommended items is located. It is null when no active sorting is found.
redirectionRedirections can be set from the InOne panel. If the given query matches a redirection rule, this field shows the details.
redirection.redirectToThis field holds the URL for the redirection rule.
redirection.redirectionTextThis field holds the redirection text for the redirection banner.
errorWhen there is a business exception (501), this field is filled with code and message fields.
validationsWhen the request is incorrect (400 Bad Request), this field is filled with an array of type and message fields.
\n

200 Search

\n
{ \n  \"status\": \"Success\",\n  \"data\": {\n    \"items\": [...],\n    \"aggregations\": [...],\n    \"navigation\": {...},\n    \"noResultPageText\": \"...\",\n    \"sortings\": [...]\n  },\n  \"redirection\": null,\n  \"partnerResources\": {...},\n  \"error\": null,\n  \"validations\": null,\n  \"appliedSearchStrategy\": \"...\"\n}\n\n
\n

200 Recommendation

\n
{ \n  \"status\": \"SuccessFallback\",\n  \"data\": {\n    \"items\": [...],\n    \"brands\": [...],\n    \"categories\": [...],\n    \"noResultPageText\": \"...\",\n    \"defaultSortingType\": null\n  },\n  \"redirection\": null,\n  \"partnerResources\": {...},\n  \"error\": null,\n  \"validations\": null,\n  \"appliedSearchStrategy\": \"...\"\n}\n\n
\n

400 Validation Exception

\n
{ \n  \"status\": \"Invalid\", \n  \"data\": null, \n  \"redirection\": null, \n  \"partnerResources\": null,\n  \"error\": null,\n  \"validations\": [\n    {\n      \"type\": \"...\",\n      \"message\": \"...\"\n    }\n  ],\n  \"appliedSearchStrategy\": null\n}\n\n
\n

400 Business Exception

\n
{ \n  \"status\": \"BusinessException\",\n  \"data\": null,\n  \"redirection\": null,\n  \"partnerResources\": null,\n  \"error\": {\n    \"code\": \"...\",\n    \"message\": \"...\" \n  },\n  \"validations\": null,\n  \"appliedSearchStrategy\": null \n}\n\n
\n

429 Rate Limit Exceeded Exception

\n
{\n    \"status\": \"RateLimitExceeded\",\n    \"data\": null,\n    \"redirection\": null,\n    \"partnerResources\": null,\n    \"error\": {\n        \"code\": \"RATE_LIMIT_EXCEEDED\",\n        \"message\": \"Rate limit exceeded. Please retry after 1 second.\"\n    },\n    \"validations\": null,\n    \"appliedSearchStrategy\": null,\n    \"merchandisingRuleBanner\": null\n}\n\n
\n

500 Internal Server Error

\n
{ \n  \"status\": \"Error\",\n  \"data\": null,\n  \"redirection\": null,\n  \"partnerResources\": null,\n  \"error\": {\n    \"code\": \"500 INTERNAL_SERVER_ERROR\",\n    \"message\": \"...\" \n  },\n  \"validations\": null,\n  \"appliedSearchStrategy\": null \n}\n\n
\n

Fail Records Messages

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
AggregationStyleNotFoundAggregation style must be provided in the partner config.400
AggregationConfigNotFoundAggregation configs must be provided in the partner config.400
SortingConfigNotFoundSorting configs must be provided in the partner config400
SortingFieldNotFoundThe sorting field must be provided in the partner config.400
UnsuccessfulSearchResultThe search results cannot be collected as expected.400
InvalidPriceAggregationStyleThe incorrect style for price aggregation is provided in the partner config.400
PartnerConfigNotFoundPartner config cannot be gathered from the cache.400
AggregationResultNotFoundUnexpected aggregation results were received according to the aggregation configs.400
RecommendationApiBrandFieldNameNotFoundName for the brand field used by the Recommendation API cannot be found in the partner configuration.400
LocalizationLanguageSettingsNotFoundLocalization language settings are not defined.400
QueryStrategyIsNotValidThe query strategy parameter passed is not valid and must be taken from the initial response.400
\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
PartnerIdNotFoundp parameter is not provided in the request.400
LocaleNotFoundl parameter is not provided in the request.400
LocaleInvalidFormatThe request provides an incorrect locale format.400
CurrencyNotFoundc parameter is not provided in the request.400
CurrencyInvalidFormatThe request provides the wrong currency format.400
QueryNotFoundq parameter is not provided in the request.400
QueryInvalidFormatThe request contains an incorrect query format.400
QueryInvalidLengthThe query must contain the number of characters between 2 and 280.200
PaginationFromInvalidValueThe wrong pf value is provided in the request.400
PaginationSizeInvalidValueThe wrong ps value is provided in the request.400
PaginationMaxHitSizeExceededPagination exceeds the allowed maximum size.400
AggregationNameNotFoundAggregation name must be provided in the request.400
AggregationItemsNotFoundAggregation items must be provided in the request.400
AggregationInvalidValueAggregation items must be valid values.400
AppliedSearchStrategiesAreRepeatedApplies strategies must be unique.400
SortingTypeInvalidThe wrong st value is provided in the request.400
\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
RateLimitExceededIndicates that the request rate exceeded the allowed limit per account-locale pair.429
\n

Please note that the Search API has a rate limit of 350 requests per second (RPS) per account-locale pair. If you would like to request a higher limit, contact the Insider One team.

\n","urlObject":{"protocol":"https","path":["api","web","search"],"host":["ineureka","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Query String that will be searched.

\n","type":"text/plain"},"key":"q","value":"{SEARCH_QUERY}"},{"disabled":true,"description":{"content":"

Required. This is your partner name. Navigate to InOne > InOne Settings > Account Preferences to copy your partner id.

\n","type":"text/plain"},"key":"p","value":""},{"disabled":true,"description":{"content":"

Required. Locale is required to get partner products in the current language of the website. E.g. en_US, en_GB

\n","type":"text/plain"},"key":"l","value":"en_US"},{"disabled":true,"description":{"content":"

The searched products will be displayed in the given currency (The current currency that has been selected by the end user on your website). E.g. USD, AUD

\n","type":"text/plain"},"key":"c","value":"USD"},{"disabled":true,"description":{"content":"

Number of products will return in the response. For example, if phone is searched with ps=5, then the API will bring the most relevant 5 phones to the current page. The default value is ps=6.

\n","type":"text/plain"},"key":"ps","value":"6"},{"disabled":true,"description":{"content":"

The searched products starting index from the given page number will be displayed. The default value is pf=0.

\n","type":"text/plain"},"key":"pf","value":"0"},{"disabled":true,"description":{"content":"

Filter the products with the following pattern: a={field}~{value}

\n","type":"text/plain"},"key":"a","value":""},{"disabled":true,"description":{"content":"

Sorting type of the searched products. It only takes one of the predefined sorting types. The default value is st=Relevancy.

\n","type":"text/plain"},"key":"st","value":""},{"disabled":true,"description":{"content":"

User ID. It can be found on localstorage by the key name spUID. spUID is a stringified object and it contains data and expire properties. User Id should be sent if the personalized search is active.

\n","type":"text/plain"},"key":"u","value":"a1b2c3d4"},{"disabled":true,"description":{"content":"

The searched products will be displayed as only item ids.

\n","type":"text/plain"},"key":"oi","value":""},{"disabled":true,"description":{"content":"

Applied strategies of the search query. It only takes an encoded string that is auto-generated by the first query in the response. Its data type is string.

\n","type":"text/plain"},"key":"qs","value":""}],"variable":[]}},"response":[],"_postman_id":"cbbec6de-4785-436d-89f8-b4c14074da58"},{"name":"Get search recommendations","id":"fae17da2-eaef-4482-9e88-ca9d92be9f68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://{domain_name}/api/web/suggestions/query","description":"

The Suggestion API offers query recommendations as users type into a search bar. It analyzes the input text and returns a list of relevant suggestions in real time based on user history and other contextual information like category and brand. This feature notably improves the user experience, accelerating the search process and effectively directing users to their intended queries.

\n

Request Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeSampleRequired
qQuery String that will be searchedStringq=sneakersYes
pThis is your partner ID. Navigate to InOne > InOne Settings > Account Preferences to copy your partner ID.String10000000Yes
lLocale is required to get partner products in the current language of the website.Stringl=en_USYes
\n

The q parameter in the query should include a minimum of 2 characters and a maximum of 280 characters. Otherwise, a validation exception will occur.

\n

Sample Responses

\n

API Responses

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDefinition
statusIt is the field that shows the result of the suggestion. This field can be:
- Success: Suggestion API response is valid.
- Error: Unexpected internal server errors.
- Invalid: Suggestion API returns a Validation Exception. The request is invalid.
- BusinessException: Eureka Search API returns a Business Exception. Details are shared in Validation Exceptions section.
dataIt is the object where suggested phrases and their types are kept as a result of the given query.
validationsWhen the request is incorrect (HTTP 4XX), this field is filled with an array of type and message details.
\n

200 Search

\n
{ \n  \"status\": \"Success\",\n  \"data\": [\n    {\n      \"phrase\": \"...\"\n      \"phraseType\": \"...\"\n    }, ...\n  ],\n  \"error\": null,\n  \"validations\": null\n}\n\n
\n

500 Internal Server Error

\n
{ \n  \"status\": \"Error\",\n  \"data\": null,\n  \"redirection\": null,\n  \"partnerResources\": null,\n  \"error\": {\n    \"code\": \"500 INTERNAL_SERVER_ERROR\",\n    \"message\": \"...\" \n  },\n  \"validations\": null,\n  \"appliedSearchStrategy\": null \n}\n\n
\n

400 Validation Exception

\n
{\n  \"status\": \"ValidationException\",\n  \"data\": null,\n  \"error\": null,\n  \"validations\": [\n    \"...\"\n  ]\n}\n\n
\n

Fail Records Messages

\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
PartnerConfigNotFoundPartner config cannot be gathered from the cache.400
\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
MessageDefinitionHTTP Code
QueryNotFoundq parameter is not provided in the request.400
QueryInvalidFormatThe wrong query format is provided in the request.400
QueryInvalidLengthThe query must contain the number of characters between 2 and 280.200
\n
","urlObject":{"protocol":"https","path":["api","web","suggestions","query"],"host":["{domain_name}"],"query":[{"disabled":true,"description":{"content":"

Required. Query String that will be searched.

\n","type":"text/plain"},"key":"q","value":"{SEARCH_QUERY}"},{"disabled":true,"description":{"content":"

Required. This is your partner name. Navigate to InOne > InOne Settings > Account Preferences to copy your partner id.

\n","type":"text/plain"},"key":"p","value":""},{"disabled":true,"description":{"content":"

Required. Locale is required to get partner products in the current language of the website. E.g. en_US, en_GB

\n","type":"text/plain"},"key":"l","value":"en_US"}],"variable":[]}},"response":[],"_postman_id":"fae17da2-eaef-4482-9e88-ca9d92be9f68"}],"id":"de7e02ce-4ff2-411f-8e30-d7d67bf466a0","description":"

Search API allows you to get products that match your search criteria and available facet options to further refine the results.

\n","_postman_id":"de7e02ce-4ff2-411f-8e30-d7d67bf466a0"},{"name":"Reports & Analysis APIs","item":[{"name":"Email","item":[{"name":"Get email campaign list","id":"e4ee8140-16a5-4c4d-a4d1-fef6c4e9132e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v1/campaign/list?page=Integer&perPage=Integer","description":"

This request allows you to get the analytics of your email campaigns for a given time period.

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
pageIntegerSpecifies the number of pages of email campaignsYes
perPageIntegerSpecifies the number of emails to be listed per pageYes
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"currentPage\": 1,\n    \"data\": [\n        {\n            \"id\": 67,\n            \"campaignName\": \"My awesome campaign\",\n            \"startTime\": \"01-01-2023 12:30:15\"\n        },\n        {\n            \"id\": 66,\n            \"campaignName\": \"This is a great campaign\",\n            \"startTime\": \"01-12-2022 09:30:17\"\n        },\n        {\n            \"id\": 65,\n            \"campaignName\": \"This is a recurring campaign\",\n            \"startTime\": \"12-12-2022 12:45:15\"\n        },\n        {\n            \"id\": 64,\n            \"campaignName\": \"This is a newsletter\",\n            \"startTime\": \"22-07-2022 16:00:01\"\n        },\n        {\n            \"id\": 63,\n            \"campaignName\": \"My email campaign\",\n            \"startTime\": \"01-01-2022 18:30:00\"\n        }\n    ],\n    \"firstPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=1&perPage=5\",\n    \"from\": 0,\n    \"lastPage\": 14,\n    \"lastPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=14&perPage=5\",\n    \"nextPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=2&perPage=5\",\n    \"path\": \"/email/v1/campaign/list\",\n    \"perPage\": 5,\n    \"prevPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=1&perPage=5\",\n    \"to\": 0,\n    \"total\": 67\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations:

\n\n","urlObject":{"protocol":"https","path":["email","v1","campaign","list"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

Specifies the number of pages of email campaigns.

\n","type":"text/plain"},"key":"page","value":"Integer"},{"description":{"content":"

Specifies the number of emails to be listed per page.

\n","type":"text/plain"},"key":"perPage","value":"Integer"}],"variable":[]}},"response":[{"id":"491c963e-a03f-44d1-8d18-e657746819f3","name":"Request email campaign list","originalRequest":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"}],"url":{"raw":"https://analytics.api.useinsider.com/email/v1/campaign/list?page=2&perPage=5","protocol":"https","host":["analytics","api","useinsider","com"],"path":["email","v1","campaign","list"],"query":[{"key":"page","value":"2","description":"Specifies the number of pages of email campaigns."},{"key":"perPage","value":"5","description":"Specifies the number of emails to be listed per page."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 10 May 2023 17:31:44 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"Vary","value":"Origin","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c53eae37d570784-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"currentPage\": 2,\n \"data\": [\n {\n \"id\": 1084265,\n \"campaignName\": \"Email 1\",\n \"startTime\": \"05-05-2023 10:09:28\"\n },\n {\n \"id\": 1083699,\n \"campaignName\": \"A great email campaign\",\n \"startTime\": \"29-04-2023 14:05:04\"\n },\n {\n \"id\": 1083536,\n \"campaignName\": \"My amazing email campaign\",\n \"startTime\": \"27-04-2023 15:28:33\"\n },\n {\n \"id\": 1083532,\n \"campaignName\": \"RSS Email\",\n \"startTime\": \"27-04-2023 15:13:11\"\n },\n {\n \"id\": 1083530,\n \"campaignName\": \"Email campaign\",\n \"startTime\": \"27-04-2023 14:34:05\"\n }\n ],\n \"firstPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=1&perPage=5\",\n \"from\": 5,\n \"lastPage\": 38,\n \"lastPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=38&perPage=5\",\n \"nextPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=3&perPage=5\",\n \"path\": \"/email/v1/campaign/list\",\n \"perPage\": 5,\n \"prevPageUrl\": \"https://analytics.useinsider.com/email/v1/campaign/list?page=1&perPage=5\",\n \"to\": 10,\n \"total\": 190\n}"}],"_postman_id":"e4ee8140-16a5-4c4d-a4d1-fef6c4e9132e"},{"name":"Get email campaign list V2","id":"7dbdbbd2-cc87-49f8-89ff-1cc5cc2a458c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v2/campaign/list?page=Integer&perPage=Integer","description":"

This request allows you to get the analytics of your email campaigns for a given time period with more metrics than V1.

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
pageIntegerSpecifies the number of pages of email campaignsYes
perPageIntegerSpecifies the number of emails to be listed per pageYes
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n   \"currentPage\": 1,\n   \"data\": [\n       {\n           \"id\": 6648,\n           \"name\": \"My Email Campaign\",\n           \"tags\": \"marketing\",\n           \"type\": \"experiment\",\n           \"subject\": \"Here is your experiment\",\n           \"senderDomain\": \"@useinsider.com\",\n           \"utmParameters\": {\n               \"utm_term\": \"\",\n               \"utm_medium\": \"email\",\n               \"utm_source\": \"insider\",\n               \"utm_status\": true,\n               \"utm_content\": \"example\",\n               \"utm_campaign\": \"insider_0225\"\n           },\n           \"startTime\": \"05-02-2025 09:00:05\"\n       }\n   ],\n“firstPageUrl”: “https://analytics.useinsider.com/email/v2/campaign/list?page=1&perPage=10”,\n    “from”: 0,\n    “lastPage”: 79,\n    “lastPageUrl”: “https://analytics.useinsider.com/email/v2/campaign/list?page=79&perPage=10”,\n    “nextPageUrl”: “https://analytics.useinsider.com/email/v2/campaign/list?page=2&perPage=10”,\n    “path”: “/email/v2/campaign/list”,\n    “perPage”: 10,\n    “prevPageUrl”: “https://analytics.useinsider.com/email/v2/campaign/list?page=1&perPage=10”,\n    “to”: 0,\n    “total”: 787\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations:

\n\n","urlObject":{"protocol":"https","path":["email","v2","campaign","list"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

Specifies the number of pages of email campaigns.

\n","type":"text/plain"},"key":"page","value":"Integer"},{"description":{"content":"

Specifies the number of emails to be listed per page.

\n","type":"text/plain"},"key":"perPage","value":"Integer"}],"variable":[]}},"response":[],"_postman_id":"7dbdbbd2-cc87-49f8-89ff-1cc5cc2a458c"},{"name":"Get email campaign analytics","id":"25034067-18e9-449b-92bb-8010a33b1939","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v1/campaign/statistics?campaignId=integer&startTime=int64","description":"

This request allows you to get the analytics of your email campaigns for a given time period.

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
campaignIdIntegerYour campaign ID that can be found on the campaign URL.Yes
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The current date (today’s date on the payload). It can be customizable according to your use case. Specifies a 10-digit epoch start time.No
\n
\n

If the endTime value is empty, it will be populated with today’s date and time in UTC.

\n
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"data\": {\n        \"details\": {},\n        \"summary\": {\n            \"blocks\": 300,\n            \"bounces\": 0,\n            \"clickRate\": 1.45,\n            \"clickToOpen\": 2860,\n            \"conversion\": 22,\n            \"conversionRate\": 0.01,\n            \"delivered\": 235746,\n            \"frequencyDrop\": 0,\n            \"invalid\": 0,\n            \"linkActivities\": [\n            {\n                \"totalClick\": 1,\n                \"uniqueClick\": 1,\n                \"url\": \"https://google.com\"\n            }\n        ],\n            \"machineOpen\": 0,\n            \"openRate\": 6.48,\n            \"revenue\": 0,\n            \"sendingDrop\": 0,\n            \"sent\": 236573,\n            \"spams\": 2,\n            \"systemDrop\": 0,\n            \"totalClick\": 4931,\n            \"totalOpen\": 64518,\n            \"uniqueClick\": 3429,\n            \"uniqueOpen\": 15272,\n            \"unsubscribes\": 100\n        }\n    }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

400 Bad Request

\n

Sorry, we detected an invalid Campaign ID in your request. The Campaign ID is not found in the database. You can confirm your Campaign ID by checking the InOne panel.

\n

406 Not Acceptable Request

\n

Sorry, we received an invalid request. We are able to provide the analytics data for only the last 1 year.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v1","campaign","statistics"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

Your campaign ID that can be found on the campaign URL.

\n","type":"text/plain"},"key":"campaignId","value":"integer"},{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

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.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[{"id":"0c3fcd12-b75a-43dc-83d9-ff6098684fd9","name":"Request email campaign analytics","originalRequest":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"}],"url":{"raw":"https://analytics.api.useinsider.com/email/v1/campaign/statistics?campaignId=2000&startTime=1683726709","protocol":"https","host":["analytics","api","useinsider","com"],"path":["email","v1","campaign","statistics"],"query":[{"key":"campaignId","value":"2000","description":"Your campaign ID that can be found on the campaign URL."},{"key":"startTime","value":"1683726709","description":"The time campaign is being launched. Specifies a 10-digit epoch start time."},{"key":"endTime","value":"int64","description":"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.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 13:57:10 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"Vary","value":"Origin","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Set-Cookie","value":"__cf_bm=vGyEoG.yYHgHbceASXMqosYtunUU1OYDfzjjZZbsHm4-1685023030-0-AdKAHZEot48TF9AnLKddAejpa83DwvMeO2139K3m+DCGlV5RQkQIGsxKEEP3V8cSZlUzYKnoj99i1k/IGki6tIs=; path=/; expires=Thu, 25-May-23 14:27:10 GMT; domain=.useinsider.com; HttpOnly; Secure; SameSite=None","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cce49306a20588a-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"details\": {\n \"4160\": {\n \"blocks\": 0,\n \"bounces\": 0,\n \"clickRate\": 0,\n \"clickToOpen\": 0,\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"delivered\": 12,\n \"frequencyDrop\": 0,\n \"invalid\": 0,\n \"invalidDrop\": 0,\n \"linkActivity\": [],\n \"machineOpen\": 2,\n \"mobileRevenue\": 0,\n \"openRate\": 16.666666666666664,\n \"recommendationRevenue\": 0,\n \"revenue\": 0,\n \"sendingDrop\": 0,\n \"sent\": 12,\n \"spams\": 0,\n \"systemDrop\": 0,\n \"totalClick\": 0,\n \"totalOpen\": 2,\n \"uniqueClick\": 0,\n \"uniqueMachineOpen\": 2,\n \"uniqueOpen\": 2,\n \"unsubscribes\": 0\n }\n },\n \"isp\": [\n {\n \"metrics\": {\n \"blocks\": 0,\n \"bounces\": 0,\n \"clickThroughRate\": 0,\n \"delivered\": 10,\n \"openRate\": 0,\n \"totalClick\": 0,\n \"totalOpen\": 0,\n \"uniqueClick\": 0,\n \"uniqueOpen\": 0\n },\n \"name\": \"name1\"\n },\n {\n \"metrics\": {\n \"blocks\": 0,\n \"bounces\": 0,\n \"clickThroughRate\": 0,\n \"delivered\": 1,\n \"openRate\": 100,\n \"totalClick\": 0,\n \"totalOpen\": 1,\n \"uniqueClick\": 0,\n \"uniqueOpen\": 1\n },\n \"name\": \"name2\"\n },\n {\n \"metrics\": {\n \"blocks\": 0,\n \"bounces\": 0,\n \"clickThroughRate\": 0,\n \"delivered\": 1,\n \"openRate\": 100,\n \"totalClick\": 0,\n \"totalOpen\": 1,\n \"uniqueClick\": 0,\n \"uniqueOpen\": 1\n },\n \"name\": \"name3\"\n }\n ],\n \"summary\": {\n \"blocks\": 0,\n \"bounces\": 0,\n \"clickRate\": 0,\n \"clickToOpen\": 0,\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"delivered\": 12,\n \"frequencyDrop\": 0,\n \"invalid\": 0,\n \"invalidDrop\": 0,\n \"linkActivity\": [],\n \"machineOpen\": 2,\n \"mobileRevenue\": 0,\n \"openRate\": 16.666666666666664,\n \"recommendationRevenue\": 0,\n \"revenue\": 0,\n \"sendingDrop\": 0,\n \"sent\": 12,\n \"spams\": 0,\n \"systemDrop\": 0,\n \"totalClick\": 0,\n \"totalOpen\": 2,\n \"uniqueClick\": 0,\n \"uniqueMachineOpen\": 2,\n \"uniqueOpen\": 2,\n \"unsubscribes\": 0\n }\n }\n}"}],"_postman_id":"25034067-18e9-449b-92bb-8010a33b1939"},{"name":"Get email campaign analytics V2","id":"cc55f6b1-e2b5-45ba-8a69-34a85361b877","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v2/campaign/statistics?campaignId=integer&startTime=int64","description":"

This request allows you to get the analytics of your email campaigns for a given time period with more metrics than V1.

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
campaignIdIntegerYour campaign ID that can be found on the campaign URL.Yes
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The current date (today’s date on the payload). It can be customizable according to your use case. Specifies a 10-digit epoch start time.No
\n
\n

If the endTime value is empty, it will be populated with today’s date and time in UTC.

\n
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"data\": {\n    \"details\": {\n      \"1199\": {\n        \"sent\": 76982,\n        \"delivered\": 75999,\n        \"deliveryRate\": 98.72307812215843,\n        \"openRate\": 19.88315635732049,\n        \"totalOpens\": 18763,\n        \"uniqueOpens\": 15111,\n        \"clickThroughRate\": 0.3710575139146568,\n        \"totalClicks\": 581,\n        \"uniqueClicks\": 282,\n        \"clickToOpenRate\": 1.8661901925749453,\n        \"conversions\": 5,\n        \"conversionRate\": 0.0065790339346570356,\n        \"revenue\": 337.56999588012695,\n        \"unsubscribe\": 131,\n        \"bounce\": 9,\n        \"bounceRate\": 0.0116910446597906,\n        \"blocks\": 1166,\n        \"spamReports\": 7,\n        \"uniqueUserOpens\": 4098,\n        \"uniqueUserOpenRate\": 5.392176212844906,\n        \"uniqueMachineOpens\": 11013,\n        \"uniqueMachineOpenRate\": 14.490980144475586,\n        \"systemDrops\": 0,\n        \"sendingDrops\": 1899,\n        \"frequencyDrop\": 0,\n        \"unsubscribeDrop\": 712,\n        \"spamDrop\": 0,\n        \"invalidDrop\": 0,\n        \"bounceDrop\": 5,\n        \"linkClickActivity\": [\n          {\n            \"totalClick\": 94,\n            \"uniqueClick\": 73,\n            \"link\": \"https://www.insider.com/products\"\n          },\n          {\n            \"totalClick\": 89,\n            \"uniqueClick\": 71,\n            \"link\": \"https://www.insider.com/collections/c\"\n          },\n          {\n            \"totalClick\": 9,\n            \"uniqueClick\": 6,\n            \"link\": \"https://www.insider.com/collections/f\"\n          }\n        ],\n        \"utmParameters\": \"{\\\"utm_source\\\":\\\"insider\\\",\\\"utm_medium\\\":\\\"email\\\",\\\"utm_campaign\\\":\\\"insider_2025\\\",\\\"utm_term\\\":\\\"\\\",\\\"utm_content\\\":\\\"\\\",\\\"utm_status\\\":true}\"\n      }\n    },\n    \"isp\": [\n      {\n        \"name\": \"gmail\",\n        \"metrics\": {\n          \"blocks\": 283,\n          \"bounces\": 4,\n          \"clickThroughRate\": 0.1826458356749466,\n          \"delivered\": 35588,\n          \"openRate\": 10.006181859053614,\n          \"spams\": 0,\n          \"totalClick\": 91,\n          \"totalOpen\": 4854,\n          \"uniqueClick\": 65,\n          \"uniqueOpen\": 3561,\n          \"unsubscribes\": 33\n        }\n      },\n      {\n        \"name\": \"hotmail\",\n        \"metrics\": {\n          \"blocks\": 139,\n          \"bounces\": 0,\n          \"clickThroughRate\": 0.3071253071253071,\n          \"delivered\": 14652,\n          \"openRate\": 28.77422877422877,\n          \"spams\": 1,\n          \"totalClick\": 51,\n          \"totalOpen\": 4796,\n          \"uniqueClick\": 45,\n          \"uniqueOpen\": 4216,\n          \"unsubscribes\": 24\n        }\n      },\n      {\n        \"name\": \"orange\",\n        \"metrics\": {\n          \"blocks\": 17,\n          \"bounces\": 0,\n          \"clickThroughRate\": 1.0698096101541252,\n          \"delivered\": 5515,\n          \"openRate\": 31.677243880326383,\n          \"spams\": 0,\n          \"totalClick\": 117,\n          \"totalOpen\": 2269,\n          \"uniqueClick\": 59,\n          \"uniqueOpen\": 1747,\n          \"unsubscribes\": 16\n        }\n      },\n      {\n        \"name\": \"yahoo\",\n        \"metrics\": {\n          \"blocks\": 6,\n          \"bounces\": 2,\n          \"clickThroughRate\": 0.690376569037657,\n          \"delivered\": 4780,\n          \"openRate\": 31.23430962343096,\n          \"spams\": 1,\n          \"totalClick\": 44,\n          \"totalOpen\": 1789,\n          \"uniqueClick\": 33,\n          \"uniqueOpen\": 1493,\n          \"unsubscribes\": 14\n        }\n      },\n      {\n        \"name\": \"icloud\",\n        \"metrics\": {\n          \"blocks\": 128,\n          \"bounces\": 0,\n          \"clickThroughRate\": 0.17921146953405018,\n          \"delivered\": 1674,\n          \"openRate\": 46.415770609319,\n          \"spams\": 0,\n          \"totalClick\": 3,\n          \"totalOpen\": 913,\n          \"uniqueClick\": 3,\n          \"uniqueOpen\": 777,\n          \"unsubscribes\": 2\n        }\n      },\n      {\n        \"name\": \"free\",\n        \"metrics\": {\n          \"blocks\": 57,\n          \"bounces\": 0,\n          \"clickThroughRate\": 0.5847953216374269,\n          \"delivered\": 1539,\n          \"openRate\": 30.734243014944767,\n          \"spams\": 0,\n          \"totalClick\": 11,\n          \"totalOpen\": 599,\n          \"uniqueClick\": 9,\n          \"uniqueOpen\": 473,\n          \"unsubscribes\": 7\n        }\n      },\n      {\n        \"name\": \"msn\",\n        \"metrics\": {\n          \"blocks\": 4,\n          \"bounces\": 0,\n          \"clickThroughRate\": 0,\n          \"delivered\": 264,\n          \"openRate\": 27.65151515151515,\n          \"spams\": 0,\n          \"totalClick\": 0,\n          \"totalOpen\": 85,\n          \"uniqueClick\": 0,\n          \"uniqueOpen\": 73,\n          \"unsubscribes\": 0\n        }\n      },\n      {\n        \"name\": \"bbox\",\n        \"metrics\": {\n          \"blocks\": 10,\n          \"bounces\": 1,\n          \"clickThroughRate\": 0.5524861878453038,\n          \"delivered\": 181,\n          \"openRate\": 17.12707182320442,\n          \"spams\": 0,\n          \"totalClick\": 1,\n          \"totalOpen\": 41,\n          \"uniqueClick\": 1,\n          \"uniqueOpen\": 31,\n          \"unsubscribes\": 0\n        }\n      }\n    ]\n  }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

400 Bad Request

\n

Sorry, we detected an invalid Campaign ID in your request. The Campaign ID is not found in the database. You can confirm your Campaign ID by checking the InOne panel.

\n

406 Not Acceptable Request

\n

Sorry, we received an invalid request. We are able to provide the analytics data for only the last 1 year.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["email","v2","campaign","statistics"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

Your campaign ID that can be found on the campaign URL.

\n","type":"text/plain"},"key":"campaignId","value":"integer"},{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

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.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[],"_postman_id":"cc55f6b1-e2b5-45ba-8a69-34a85361b877"},{"name":"Get overall analytics","id":"9afeb0ff-a180-493f-bd14-296207bca861","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v1/overall?startTime=int64&endTime=int64","description":"

This request allows you to get the overall analytics of your email campaigns for a given time period

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The current date (today’s date on the payload). It can be customizable according to your case. Specifies a 10-digit epoch start time.No
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"data\": {\n        \"summary\": {\n            \"blocks\": 0,\n            \"bounceDrop\": 0,\n            \"bounces\": 0,\n            \"clickRate\": 5.88,\n            \"conversion\": 0,\n            \"conversionRate\": 0,\n            \"delivered\": 17,\n            \"frequencyDrop\": 0,\n            \"invalid\": 0,\n            \"invalidDrop\": 0,\n            \"machineOpen\": 0,\n            \"openRate\": 47.05,\n            \"revenue\": 0,\n            \"sendingDrop\": 0,\n            \"sent\": 27,\n            \"spamDrop\": 0,\n            \"spams\": 0,\n            \"systemDrop\": 0,\n            \"totalClick\": 1,\n            \"totalOpen\": 15,\n            \"unsubscribeDrop\": 0,\n            \"unsubscribes\": 0\n        },\n        \"linkActivities\": [\n            {\n                \"totalClick\": 1,\n                \"uniqueClick\": 1,\n                \"url\": \"https://google.com\"\n            }\n        ]\n    }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

429 Rate Limited

\n

Rate limited

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations:

\n\n","urlObject":{"protocol":"https","path":["email","v1","overall"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"description":{"content":"

The current date (today’s date on the payload). It can be customizable according to your case. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[{"id":"85eaa7ab-54d4-46e2-81b2-99a0ac1713fe","name":"Request overall analytics","originalRequest":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).","type":"text"}],"url":{"raw":"https://analytics.api.useinsider.com/email/v1/overall?startTime=1683731363&endTime=1685027363","protocol":"https","host":["analytics","api","useinsider","com"],"path":["email","v1","overall"],"query":[{"key":"startTime","value":"1683731363","description":"The time campaign is being launched. Specifies a 10-digit epoch start time."},{"key":"endTime","value":"1685027363","description":"The current date (today’s date on the payload). It can be customizable according to your case. Specifies a 10-digit epoch start time."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 25 May 2023 15:10:34 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"Vary","value":"Origin","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7cceb4b77d572012-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"summary\": {\n \"blocks\": 4791,\n \"bounceDrop\": 0,\n \"bounces\": 0,\n \"clickRate\": 0.7633587786259541,\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"delivered\": 43261,\n \"frequencyDrop\": 0,\n \"invalid\": 0,\n \"invalidDrop\": 0,\n \"machineOpen\": 2,\n \"openRate\": 6.106870229007633,\n \"revenue\": 0,\n \"sendingDrop\": 4792,\n \"sent\": 48053,\n \"spamDrop\": 0,\n \"spams\": 1,\n \"systemDrop\": 0,\n \"totalClick\": 2,\n \"totalOpen\": 12,\n \"uniqueClick\": 1,\n \"uniqueMachineOpen\": 2,\n \"uniqueOpen\": 8,\n \"unsubscribeDrop\": 0,\n \"unsubscribes\": 3\n },\n \"linkActivities\": [\n {\n \"totalClick\": 2,\n \"uniqueClick\": 1,\n \"url\": \"https://mycampaign.useinsider\"\n }\n ]\n }\n}"}],"_postman_id":"9afeb0ff-a180-493f-bd14-296207bca861"},{"name":"Get overall analytics V2","id":"bfa4c7f9-e092-40c0-934e-c747294e2761","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"}],"url":"https://analytics.api.useinsider.com/email/v2/overall?startTime=int64&endTime=int64","description":"

This request allows you to get the overall analytics of your email campaigns for a given time period with more metrics than V1.

\n
\n

The campaigns on the Draft and Scheduled statuses are not listed in the response.

\n
\n

Query Parameters

\n

The following are the query parameters you need to use in your request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The current date (today’s date on the payload). It can be customizable according to your case. Specifies a 10-digit epoch start time.No
\n

Before sending the request, make sure:

\n\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n  \"data\": {\n    \"summary\": {\n      \"sent\": 28177222,\n      \"delivered\": 27174347,\n      \"deliveryRate\": 96.44083082427359,\n      \"openRate\": 15.377410908898751,\n      \"totalOpens\": 5028722,\n      \"uniqueOpens\": 4178711,\n      \"clickThroughRate\": 0.10888946107886237,\n      \"totalClicks\": 291619,\n      \"uniqueClicks\": 29590,\n      \"clickToOpenRate\": 0.708113099948764,\n      \"conversions\": 365,\n      \"conversionRate\": 0.0013431785499758283,\n      \"revenue\": 54860988,\n      \"unsubscribe\": 5083,\n      \"bounce\": 2238,\n      \"bounceRate\": 0.007942585681441554,\n      \"blocks\": 1013573,\n      \"spamReports\": 480,\n      \"uniqueUserOpens\": 1216549,\n      \"uniqueUserOpenRate\": 4.4768288268343674,\n      \"uniqueMachineOpens\": 2962162,\n      \"uniqueMachineOpenRate\": 10.900582082064382,\n      \"systemDrops\": 541566,\n      \"sendingDrops\": 1558662,\n      \"frequencyDrop\": 0,\n      \"unsubscribeDrop\": 533725,\n      \"spamDrop\": 22,\n      \"invalidDrop\": 12,\n      \"bounceDrop\": 8612\n    },\n    \"linkActivities\": [\n      {\n        \"totalClick\": 9908,\n        \"uniqueClick\": 5923,\n        \"link\": \"https://sample.useinsider.com/download\"\n      },\n      {\n        \"totalClick\": 379,\n        \"uniqueClick\": 109,\n        \"link\": \"https://sample.useinsider.com/download/v\"\n      },\n      {\n        \"totalClick\": 378,\n        \"uniqueClick\": 116,\n        \"link\": \"https://sample.useinsider.com/download_insider\"\n      },\n      {\n        \"totalClick\": 378,\n        \"uniqueClick\": 115,\n        \"link\": \"https://sample.useinsider.com/download_useinsider\"\n      },\n      {\n        \"totalClick\": 375,\n        \"uniqueClick\": 113,\n        \"link\": \"https://sample.useinsider.com/download_open\"\n      }\n    ],\n    \"topEmailClients\": {\n      \"android\": 0.46,\n      \"apple-mail\": 0.1,\n      \"g-mail\": 84.54,\n      \"i-pad\": 0.02,\n      \"i-phone\": 0.08,\n      \"other\": 7.56,\n      \"other-web-mail\": 0.05,\n      \"outlook\": 0.01,\n      \"yahoo\": 7.19\n    },\n    \"topEmailDevices\": {\n      \"desktop\": 0.13,\n      \"mobile\": 0.53,\n      \"others\": 7.57,\n      \"tablet\": 0.07,\n      \"web-mail\": 91.7\n    }\n  }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we couldn’t validate the request at the moment. You can try again later.

\n

429 Rate Limited

\n

Rate limited

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations:

\n\n","urlObject":{"protocol":"https","path":["email","v2","overall"],"host":["analytics","api","useinsider","com"],"query":[{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"description":{"content":"

The current date (today’s date on the payload). It can be customizable according to your case. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[],"_postman_id":"bfa4c7f9-e092-40c0-934e-c747294e2761"}],"id":"7b47187a-1b86-4448-b919-1b39f39ee94f","description":"

Email Analytics APIs enable you to get your email campaign list, email campaign analytics, and overall email analytics from your back-end without using Insider's platform.

\n","_postman_id":"7b47187a-1b86-4448-b919-1b39f39ee94f"},{"name":"Web Push","item":[{"name":"Get web push top metrics analytics","id":"84e062f9-afbf-474f-9a65-bdad6963be9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\" : \"2023-06-01\",\n \"end_date\" : \"2023-06-08\"\n}"},"url":"https://web-push.api.useinsider.com/v1/statistics/top-metrics","description":"

Insider's web push API allows you to get the campaigns analytics of your web push notifications from your own back-end without using the Insider's InOne panel. This API returns top metric analytics (without campaign information) in the given time interval in API request payload.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
start_dateThis specifies the date on which you will start requesting campaign analytics. The date format should be YYYY-MM-DD. The Start Date cannot be earlier than the Campaign Create Date.StringYes
end_dateThis specifies the date on which you will stop requesting campaign analytics. The date format should be YYYY-MM-DD.StringYes
\n

Sample Example

\n

Sample Request

\n

Before sending the request, make sure:

\n\n
curl --location --request POST 'https://web-push.api.useinsider.com/v1/statistics/top-metrics' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data '{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\" : \"2023-06-01\",\n \"end_date\" : \"2023-06-08\"\n}'\n\n
\n

Sample Responses

\n

200 OK

\n
{\n  \"overview\": {\n    \"total\": {\n      \"targeted\": \"9,550,384\",\n      \"deliveryRate\": \"32.42%\",\n      \"ctr\": \"0.76%\",\n      \"conversionRate\": \"0.01%\"\n    },\n    \"targeted\": {\n      \"sent\": \"9,505,769\",\n      \"dropped\": \"44,615\"\n    },\n    \"deliveryRate\": {\n      \"delivered\": \"3,082,158\",\n      \"undelivered\": \"6,423,611\"\n    },\n    \"ctr\": {\n      \"clicks\": \"23,419\"\n    },\n    \"conversionRate\": {\n      \"conversions\": \"3\"\n    },\n    \"revenue\": \"2,480 TRY\"\n  },\n  \"performance\": [\n    {\n      \"label\": \"Bulk\",\n      \"campaignCount\": 22,\n      \"deliveryRate\": \"32.42\",\n      \"ctr\": \"0.76\",\n      \"conversionRate\": \"0.01\",\n      \"revenue\": \"2479.6600112915\"\n    },\n    {\n      \"label\": \"In Stock Alert\",\n      \"campaignCount\": 4,\n      \"deliveryRate\": \"0.00\",\n      \"ctr\": \"0.00\",\n      \"conversionRate\": \"0.00\",\n      \"revenue\": \"0\"\n    },\n    {\n      \"label\": \"Segment\",\n      \"campaignCount\": 2,\n      \"deliveryRate\": \"0.00\",\n      \"ctr\": \"0.00\",\n      \"conversionRate\": \"0.00\",\n      \"revenue\": \"0\"\n    },\n    {\n      \"label\": \"Cart Reminder\",\n      \"campaignCount\": 4,\n      \"deliveryRate\": \"0.00\",\n      \"ctr\": \"0.00\",\n      \"conversionRate\": \"0.00\",\n      \"revenue\": \"0\"\n    },\n    {\n      \"label\": \"Price Alert\",\n      \"campaignCount\": 6,\n      \"deliveryRate\": \"0.00\",\n      \"ctr\": \"0.00\",\n      \"conversionRate\": \"0.00\",\n      \"revenue\": \"0\"\n    },\n    {\n      \"label\": \"Trigger\",\n      \"campaignCount\": 10,\n      \"deliveryRate\": \"0.00\",\n      \"ctr\": \"0.00\",\n      \"conversionRate\": \"0.00\",\n      \"revenue\": \"0\"\n    }\n  ],\n  \"dropped\": [\n    {\n      \"label\": \"frequencyCapped\",\n      \"count\": \"0\",\n      \"percentage\": \"0.00\"\n    },\n    {\n      \"label\": \"silentHours\",\n      \"count\": \"0\",\n      \"percentage\": \"0.00\"\n    },\n    {\n      \"label\": \"unsubscriptions\",\n      \"count\": \"44,203\",\n      \"percentage\": \"99.08\"\n    },\n    {\n      \"label\": \"serviceProviderErrors\",\n      \"count\": \"412\",\n      \"percentage\": \"0.92\"\n    },\n    {\n      \"label\": \"internalErrors\",\n      \"count\": \"0\",\n      \"percentage\": \"0.00\"\n    }\n  ],\n  \"undelivered\": [\n    {\n      \"label\": \"offlineRecipients\",\n      \"count\": \"6,413,534\",\n      \"percentage\": \"99.84\"\n    },\n    {\n      \"label\": \"other\",\n      \"count\": \"10,077\",\n      \"percentage\": \"0.16\"\n    }\n  ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"status_code\": 401\n}\n\n
\n

422 UNPROCESSABLE ENTITY

\n
{\n    \"status_code\": 422,\n    \"errors\": {\n        \"end_date\": [\n            \"The end date does not match the format Y-m-d.\"\n        ]\n    }\n}\n\n
\n

Error Codes

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","statistics","top-metrics"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"84e062f9-afbf-474f-9a65-bdad6963be9d"},{"name":"Get web push overall metrics analytics","id":"3676d8f6-af41-476b-aaf0-0549493e827e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\" : \"2023-06-01\",\n \"end_date\" : \"2023-06-08\",\n \"per_page\" : \"100\",\n\n\"page\" : \"1\"\n}"},"url":"https://web-push.api.useinsider.com/v1/statistics/overall-metrics","description":"

Insider's web push API allows you to get the campaigns analytics of your web push notifications from your own back-end without using the Insider's InOne panel. This API returns overall metric analytics with campaign information in the given time interval in API request payload.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
start_dateThis specifies the date on which you will start requesting campaign analytics. The date format should be YYYY-MM-DD. The Start Date cannot be earlier than the Campaign Create Date.StringYes
end_dateThis specifies the date on which you will stop requesting campaign analytics. The date format should be YYYY-MM-DD.StringYes
pageSpecifies the number of campaigns to be listed per page. Default value is 1.StringNo
per_pageSpecifies the number of pages of campaign campaigns. Default value is 10.StringNo
\n

Sample Example

\n

Sample Request

\n

Before sending the request, make sure:

\n\n
curl --location --POST 'https://web-push.api.useinsider.com/v1/statistics/overall-metrics' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data '{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\": \"2023-12-02\",\n \"end_date\": \"2023-12-19\"\n \"page\": 1,\n \"per_page\": 10\n}'\n\n
\n

Sample Responses

\n

200 OK

\n
{\n  \"page\": 1,\n  \"per_page\": 2,\n  \"total\": 48,\n  \"data\": [\n    {\n      \"id\": 12345,\n      \"tags\": [\n        \"Discount\",\n        \"Baby\",\n        \"Powder\"\n      ],\n      \"type\": \"Bulk\",\n      \"campName\": \"08.06.2023-2100-BabyCare\",\n      \"status\": \"Active\",\n      \"builderId\": 11111,\n      \"sendDate\": \"2023-06-08 21:15:10\",\n      \"startDate\": \"2023-06-08 21:15:00\",\n      \"endDate\": \"2023-06-08 21:15:00\",\n      \"daysActive\": 1,\n      \"messageLink\": \"https://sample.useinsider.com/discount/all-baby-care-products\",\n      \"firstButtonLink\": \"N/A\",\n      \"secondButtonLink\": \"N/A\",\n      \"targeted\": 411840,\n      \"sent\": 411344,\n      \"dropped\": 496,\n      \"deliveryRate\": 0.340792621261037,\n      \"delivered\": 140183,\n      \"undelivered\": 271161,\n      \"ctr\": 0.005157544067397616,\n      \"clicks\": 723,\n      \"conversionRate\": 0,\n      \"conversions\": 0,\n      \"revenue\": 0\n    },\n    {\n      \"id\": 22222,\n      \"tags\": [\n        \"Baby\"\n      ],\n      \"type\": \"Bulk\",\n      \"campName\": \"08.06.2023-Bebekcom-BabyProducts\",\n      \"status\": \"Active\",\n      \"builderId\": 10101,\n      \"sendDate\": \"2023-06-08 16:00:27\",\n      \"startDate\": \"2023-06-08 16:00:00\",\n      \"endDate\": \"2023-06-08 16:00:00\",\n      \"daysActive\": 1,\n      \"messageLink\": \"https://sample.useinsider.com/baby-products/\",\n      \"firstButtonLink\": \"N/A\",\n      \"secondButtonLink\": \"N/A\",\n      \"targeted\": 411733,\n      \"sent\": 411279,\n      \"dropped\": 454,\n      \"deliveryRate\": 0.3351933845394489,\n      \"delivered\": 137858,\n      \"undelivered\": 273421,\n      \"ctr\": 0.008399947772345456,\n      \"clicks\": 1158,\n      \"conversionRate\": 0,\n      \"conversions\": 0,\n      \"revenue\": 0\n    }\n  ]\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"status_code\": 401\n}\n\n
\n

422 UNPROCESSABLE ENTITY

\n
{\n    \"status_code\": 422,\n    \"errors\": {\n        \"end_date\": [\n            \"The end date does not match the format Y-m-d.\"\n        ]\n    }\n}\n\n
\n

Error Codes

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","statistics","overall-metrics"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3676d8f6-af41-476b-aaf0-0549493e827e"},{"name":"Get web push campaign metrics analytics","id":"d921be9b-f15e-45f1-a8c8-f8ba536c5b74","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\" : \"2023-06-01\",\n \"end_date\" : \"2023-06-08\",\n\n\"campaign_id\" : \"11111\"\n}"},"url":"https://web-push.api.useinsider.com/v1/statistics/campaign-metrics","description":"

Insider's web push API allows you to get the campaigns analytics of your web push notifications from your own back-end without using the Insider's InOne panel. This API returns analytics specific to a single campaign in the given time interval in API request payload.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
partner_idThis is your partner identification number, available from InOne Settings > Account Preferences.StringYes
start_dateThis specifies the date on which you will start requesting campaign analytics. The date format should be YYYY-MM-DD. The Start Date cannot be earlier than the Campaign Create Date.StringYes
end_dateThis specifies the date on which you will stop requesting campaign analytics. The date format should be YYYY-MM-DD.StringYes
campaign_idThis is your campaign ID. It returns in the response and is needed to send push notifications.StringYes
\n

Sample Example

\n

Sample Request

\n

Before sending the request, make sure:

\n\n
\ncurl --location --POST 'https://web-push.api.useinsider.com/v1/statistics/campaign-metrics' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: {{vault:bearer-token}}' \\\n--data '{\n \"partner_id\": \"YOURPARTNERID\",\n \"start_date\" : \"2023-06-01\",\n \"end_date\" : \"2023-06-08\",\n\n\"campaign_id\" : \"11111\"\n}'\n\n
\n

Sample Responses

\n

200 OK

\n
{\n  \"name\": \"08.06.2023-2100\",\n  \"primaryGoal\": \"salesFromClick\",\n  \"startDate\": \"2023-05-31T21:00:00.000000Z\",\n  \"endDate\": \"2023-06-08T20:59:59.999999Z\",\n  \"isRecurring\": false,\n  \"alias\": \"bulk\",\n  \"preferredCurrency\": \"USD\",\n  \"personalizationStatus\": \"Active\",\n  \"isTTLEnded\": true,\n  \"goalMenu\": {\n    \"camp-join\": \"Clicks\",\n    \"sales-from-click\": \"Purchases From Click...\"\n  },\n  \"overview\": {\n    \"total\": {\n      \"targeted\": \"411,840\",\n      \"deliveryRate\": \"34.08%\",\n      \"ctr\": \"0.52%\",\n      \"conversionRate\": \"0.00%\"\n    },\n    \"targeted\": {\n      \"sent\": \"411,344\",\n      \"dropped\": \"496\"\n    },\n    \"deliveryRate\": {\n      \"delivered\": \"140,183\",\n      \"undelivered\": \"271,161\"\n    },\n    \"ctr\": {\n      \"clicks\": \"723\"\n    },\n    \"conversionRate\": {\n      \"conversions\": \"0\"\n    },\n    \"revenue\": \"0 USD\"\n  },\n  \"deviceMetrics\": [\n    {\n      \"device\": \"Desktop\",\n      \"sent\": \"36,752\",\n      \"delivered\": \"3,077\",\n      \"deliveryRate\": \"8.37%\",\n      \"clicks\": \"4\",\n      \"ctr\": \"0.13%\",\n      \"conversions\": \"0\",\n      \"conversionRate\": \"0.00%\",\n      \"revenue\": \"USD\"\n    },\n    {\n      \"device\": \"Mobile\",\n      \"sent\": \"374,592\",\n      \"delivered\": \"137,106\",\n      \"deliveryRate\": \"36.60%\",\n      \"clicks\": \"719\",\n      \"ctr\": \"0.52%\",\n      \"conversions\": \"0\",\n      \"conversionRate\": \"0.00%\",\n      \"revenue\": \"0 USD\"\n    }\n  ],\n  \"clickMetrics\": [\n    {\n      \"name\": \"mainAction\",\n      \"header\": \"Main Element\",\n      \"clicks\": \"723\",\n      \"clickRatio\": \"100.00%\"\n    },\n    {\n      \"name\": \"primaryAction\",\n      \"header\": \"\",\n      \"clicks\": \"0\",\n      \"clickRatio\": \"0.00%\"\n    },\n    {\n      \"name\": \"secondaryAction\",\n      \"header\": \"\",\n      \"clicks\": \"0\",\n      \"clickRatio\": \"0.00%\"\n    }\n  ],\n  \"unsuccessfulMessages\": {\n    \"dropped\": [\n      {\n        \"label\": \"frequencyCapped\",\n        \"count\": \"0\",\n        \"percentage\": \"0.00\"\n      },\n      {\n        \"label\": \"silentHours\",\n        \"count\": \"0\",\n        \"percentage\": \"0.00\"\n      },\n      {\n        \"label\": \"unsubscriptions\",\n        \"count\": \"453\",\n        \"percentage\": \"91.33\"\n      },\n      {\n        \"label\": \"serviceProviderErrors\",\n        \"count\": \"43\",\n        \"percentage\": \"8.67\"\n      },\n      {\n        \"label\": \"internalErrors\",\n        \"count\": \"0\",\n        \"percentage\": \"0.00\"\n      }\n    ],\n    \"undelivered\": [\n      {\n        \"label\": \"offlineRecipients\",\n        \"count\": \"270,807\",\n        \"percentage\": \"99.87\"\n      },\n      {\n        \"label\": \"other\",\n        \"count\": \"354\",\n        \"percentage\": \"0.13\"\n      }\n    ]\n  },\n  \"comparisonData\": []\n}\n\n
\n

401 UNAUTHORIZED

\n
{\n    \"status_code\": 401\n}\n\n
\n

422 UNPROCESSABLE ENTITY

\n
{\n    \"status_code\": 422,\n    \"errors\": {\n        \"end_date\": [\n            \"The end date does not match the format Y-m-d.\"\n        ]\n    }\n}\n\n
\n

Error Codes

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","statistics","campaign-metrics"],"host":["web-push","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d921be9b-f15e-45f1-a8c8-f8ba536c5b74"}],"id":"e3248e8e-df86-4864-9f34-5d4a68effe31","_postman_id":"e3248e8e-df86-4864-9f34-5d4a68effe31","description":""},{"name":"Mobile App","item":[{"name":"Get app push analytics","id":"7efb1b62-2135-4294-8fa8-ed2d94707ab1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{mobileAppApiKey}\"\n}"},"url":"https://mobile.useinsider.com/api/v1/notification/get_statistics","description":"

You can use this service to get the analytics of the single push notifications that are sent in the current day using a predefined web service. These analytics include the campaigns created from the beginning of the day (00:00) to the time of the API request. For instance, if you send a request at 14:50, the API will return the campaigns created between 00:00-14:50.

\n

Body Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
api_keyYour API key. Refer to API Authentication Tokens to get your API key.StringYes
\n

Sample Body

\n

The following is a sample body to send this request.

\n
{\n    \"api_key\": \"Your API Key goes here\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"campaigns\": [\n        {\n            \"id\": 5125,\n            \"name\": \"My app push name\",\n            \"delivery_count\": 1640069,\n            \"session_count\": 1085,\n            \"open_rate\": \"% 0.07\",\n            \"message\": \"This is my message\",\n            \"title\": \"This is my title\",\n            \"segment_name\": \"This is my segment\",\n            \"deep_link\": {\n                \"dl_key1\": \"value1\",\n                \"dl_key2\": \"value2\"\n            },\n            \"push_image\": \"https://pushimage1.useinsider.com\"\n        },\n        {\n            \"id\": 5126,\n            \"name\": \"My app push name 2\",\n            \"delivery_count\": 683618,\n            \"session_count\": 914,\n            \"open_rate\": \"% 0.13\",\n            \"message\": \"This is my message\",\n            \"title\": \"This is my title\",\n            \"segment_name\": \"English_lang_users\",\n            \"deep_link\": {\n                \"dl_key3\": \"value3\",\n                \"dl_key4\": \"value4\"\n            },\n            \"push_image\": \"https://pushimage2.useinsider.com\"\n        }\n    ],\n    \"total_camp_count\": 2,\n    \"total_delivery_count\": 2323687,\n    \"total_session_count\": 1999,\n    \"total_open_rate\": \"% 0.09\"\n}\n\n
\n

The successful response returns the following metrics:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDefinition
idCampaign ID
nameCampaign name
delivery_countThe number of users the campaign is delivered to
session_countThe number of users who open the campaign
open_rateOpens/deliveries
messageThe campaign message
titleThe campaign title
segment_nameThe name of the segment that is targeted in the campaign
deep_link/deep link keyThe deep link the users are redirected to
push_imageThe image URL of the campaign
\n

401 Unauthorized

\n

The following response returns if the API Key is invalid or incorrect.

\n
{\n    \"error\": \"Bad Api Key.\"\n}\n\n
\n

401 Unauthorized

\n

The following response returns if the API Key is empty.

\n
Api key can not be empty.\n\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"https","path":["api","v1","notification","get_statistics"],"host":["mobile","useinsider","com"],"query":[],"variable":[]}},"response":[{"id":"f315604d-c325-4afc-af6b-ef959f3918f8","name":"Get app push analytics","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"This header specifies the media type of the resource.","type":"text"}],"body":{"mode":"raw","raw":"{\n \"api_key\": \"{apiKey]\"\n}","options":{"raw":{"language":"json"}}},"url":"https://mobile.useinsider.com/api/v1/notification/get_statistics"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 11 May 2023 16:38:44 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"vary","value":"Origin, Accept-Encoding","enabled":true},{"key":"x-envoy-upstream-service-time","value":"197","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c5bda9aeeee0622-IAD","enabled":true},{"key":"Content-Encoding","value":"br","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"campaigns\": [\n {\n \"id\": 5125,\n \"name\": \"My app push name\",\n \"delivery_count\": 1640069,\n \"session_count\": 1085,\n \"open_rate\": \"% 0.07\",\n \"message\": \"This is my message\",\n \"title\": \"This is my title\",\n \"segment_name\": \"This is my segment\",\n \"deep_link\": {\n \"dl_key1\": \"value1\",\n \"dl_key2\": \"value2\"\n },\n \"push_image\": \"https://pushimage1.useinsider.com\"\n },\n {\n \"id\": 5126,\n \"name\": \"My app push name 2\",\n \"delivery_count\": 683618,\n \"session_count\": 914,\n \"open_rate\": \"% 0.13\",\n \"message\": \"This is my message\",\n \"title\": \"This is my title\",\n \"segment_name\": \"English_lang_users\",\n \"deep_link\": {\n \"dl_key3\": \"value3\",\n \"dl_key4\": \"value4\"\n },\n \"push_image\": \"https://pushimage2.useinsider.com\"\n }\n ],\n \"total_camp_count\": 2,\n \"total_delivery_count\": 2323687,\n \"total_session_count\": 1999,\n \"total_open_rate\": \"% 0.09\"\n}"}],"_postman_id":"7efb1b62-2135-4294-8fa8-ed2d94707ab1"},{"name":"Export app push results with raw user data","id":"54ffdc96-bd14-42fd-8c04-e7476da86075","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segment\": {\n \"segment_id\": 123456789\n },\n \"attributes\": [\n \"iid\",\n \"udid\",\n \"pn\",\n \"uuid\",\n \"em\",\n \"app_version\",\n \"mo\",\n \"ov\"\n ],\n \"events\": {\n \"start_date\": 1693907940,\n \"end_date\": 1693994340,\n \"wanted\": [\n {\n \"event_name\": \"push_delivered\",\n \"params\": [\n \"timestamp\",\n \"camp_id\",\n \"camp_type\",\n \"variant_id\"\n ]\n },\n {\n \"event_name\": \"push_session\",\n \"params\": [\n \"timestamp\",\n \"camp_id\",\n \"camp_type\",\n \"variant_id\"\n ]\n }\n ]\n },\n \"format\": \"csv\",\n \"hook\": \"xyz.test.com\"\n}"},"url":"https://unification.useinsider.com/api/raw/v1/export","description":"

Export Raw User Data API   prepares the raw data for events and attributes together, and also allows you to export App Push results for multiple requested events and attributes of a user (e.g. name, phone number, age, city, etc.) into Insider's AWS S3 bucket. The request returns a link to partner's webhook endpoint, and this link enables you to have access to the raw user data and transfer it to your end.

\n

When you deliver an app push to a user and they click it, these actions trigger the push_delivered and push_session events respectively along with their timestamp, camp ID, camp type, and variant ID event parameters. These events and their parameters are listed on the respective user's User Profile.

\n
\n

Suggested Reading: Understanding Events and Attributes

\n
\n

You should provide a webhook endpoint in the request to be notified when the export link is ready. After sending a request, your webhook endpoint receives an export link as follows to have access to the raw user data.

\n

https://insider-data-export.useinsider.com/{partner name}/p/{file name}

\n

You can export raw user data in the following use cases:

\n\n

Body Parameters

\n

Before starting the implementation, make sure to share the following information with your Insider Technical Account Manager:

\n\n

You can consult your Insider Technical Account Manager on which parameters to add in the request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
segmentSegment ID of the user filter. To find your dynamic segment ID, navigate to Audience > Segments > Saved Segments > Dynamic Segments. Click on the Segment whose ID you want to get. You can see it on the top right corner on the summary page. Refer here for further information.ObjectYes
attributesArray of attributesArray (of string)No
eventsArray of eventsObjectYes
start_dateBeginning of the date range for the wanted eventsNumberYes
end_dateEnd of the date range for the wanted eventsNumberYes
wantedObject of the wanted eventsArrayYes
event_nameName of the eventStringYes
paramsEvent parameters of the eventArray (of string)Yes
formatThe export formatStringYes
hookYour webhook endpointStringYes
\n

Sample Body

\n

The sample below displays a request to get the app template results along with raw user data (e.g. insider ID (iid), unique device ID (udid), phone number (pn), unique user ID (uuid), email (em), app version, model (mo), device software version (ov)).

\n
{\n    \"segment\": {\n        \"segment_id\": 123456789\n    },\n    \"attributes\": [\n        \"iid\",\n        \"udid\",\n        \"pn\",\n        \"uuid\",\n        \"em\",\n        \"app_version\",\n        \"mo\",\n        \"ov\"\n    ],\n    \"events\": {\n        \"start_date\": 1693907940,\n        \"end_date\": 1693994340,\n        \"wanted\": [\n            {\n                \"event_name\": \"push_delivered\",\n                \"params\": [\n                    \"timestamp\",\n                    \"camp_id\",\n                    \"camp_type\",\n                    \"variant_id\"\n                ]\n            },\n            {\n                \"event_name\": \"push_session\",\n                \"params\": [\n                    \"timestamp\",\n                    \"camp_id\",\n                    \"camp_type\",\n                    \"variant_id\"\n                ]\n            }\n        ]\n    },\n    \"format\": \"csv\",\n    \"hook\": \"xyz.test.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

When the data is ready to download, you will receive the export link on your webhook URL as displayed below.

\n
{\"url\":\"https://insider-data-export.useinsider.com/{partner name}/p/{file name}\"}\n\n
\n
\n

If a user has performed the requested event(s) N times, that user will be displayed in N rows in the exported file. However, since attributes always display the latest information of the user, the attributes on N rows will be the same.

\n
\n

429 Too Many Requests

\n

If you exceed the rate limits, you receive an error shown below.

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

Depending on your request, you might also receive 400 Empty Partner, 400 Empty Token, or 403 Authentication Failed responses.

\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","raw","v1","export"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"54ffdc96-bd14-42fd-8c04-e7476da86075"},{"name":"Export app template results with raw user data","id":"d68a7b61-d8dd-4684-924f-507aed95cb62","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segment\": {\n \"segment_id\": 123456789\n },\n \"attributes\": [\n \"iid\",\n \"udid\",\n \"pn\",\n \"uuid\",\n \"em\",\n \"app_version\",\n \"mo\",\n \"ov\"\n ],\n \"events\": {\n \"start_date\": 1693907940,\n \"end_date\": 1693994340,\n \"wanted\": [\n {\n \"event_name\": \"inapp_seen\",\n \"params\": [\n \"timestamp\",\n \"inapp_id\",\n \"variant_id\",\n \"dismiss_type\"\n ]\n }\n ]\n },\n \"format\": \"csv\",\n \"hook\": \"xyz.test.com\"\n}"},"url":"https://unification.useinsider.com/api/raw/v1/export","description":"

Export Raw User Data API   prepares the raw data for events and attributes together, and also allows you to export App Template results for multiple requested events and attributes of a user (e.g. name, phone number, age, city, etc.) into Insider's AWS S3 bucket. The request returns a link to partner's webhook endpoint, and this link enables you to have access to the raw user data and transfer it to your end.

\n

When a user sees an app template, this action triggers the inapp_seen event respectively along with its timestamp, inapp ID, variant ID, and dismiss type event parameters. These events and their parameters can be listed on the respective user's User Profile.

\n
\n

Suggested Reading: Understanding Events and Attributes

\n
\n

You should provide a webhook endpoint in the request to be notified when the export link is ready. After sending a request, your webhook endpoint receives an export link as follows to have access to the raw user data.

\n

https://insider-data-export.useinsider.com/{partner name}/p/{file name}

\n

You can export raw user data in the following use cases:

\n\n

Body Parameters

\n

Before starting the implementation, make sure to share the following information with your Insider Technical Account Manager:

\n\n

You can consult your Insider Technical Account Manager on which parameters to add in the request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
segmentSegment ID of the user filter. To find your dynamic segment ID, navigate to Audience > Segments > Saved Segments > Dynamic Segments. Click on the Segment whose ID you want to get. You can see it on the top right corner on the summary page. Refer here for further information.ObjectYes
attributesArray of attributesArray (of string)No
eventsArray of eventsObjectYes
start_dateBeginning of the date range for the wanted eventsNumberYes
end_dateEnd of the date range for the wanted eventsNumberYes
wantedObject of the wanted eventsArrayYes
event_nameName of the eventStringYes
paramsEvent parameters of the eventArray (of string)Yes
formatThe export formatStringYes
hookYour webhook endpointStringYes
\n

Sample Body

\n

The sample below displays a request to get the app template results along with raw user data (e.g. insider ID (iid), unique device ID (udid), phone number (pn), unique user ID (uuid), email (em), app version, model (mo), device software version (ov)).

\n
{\n    \"segment\": {\n        \"segment_id\": 123456789\n    },\n    \"attributes\": [\n        \"iid\",\n        \"udid\",\n        \"pn\",\n        \"uuid\",\n        \"em\",\n        \"app_version\",\n        \"mo\",\n        \"ov\"\n    ],\n    \"events\": {\n        \"start_date\": 1693907940,\n        \"end_date\": 1693994340,\n        \"wanted\": [\n            {\n                \"event_name\": \"inapp_seen\",\n                \"params\": [\n                    \"timestamp\",\n                    \"inapp_id\",\n                    \"variant_id\",\n                    \"dismiss_type\"\n                ]\n            }\n        ]\n    },\n    \"format\": \"csv\",\n    \"hook\": \"xyz.test.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

When the data is ready to download, you will receive the export link on your webhook URL as displayed below.

\n
{\"url\":\"https://insider-data-export.useinsider.com/{partner name}/p/{file name}\"}\n\n
\n
\n

If a user has performed the requested event(s) N times, that user will be displayed in N rows in the exported file. However, since attributes always display the latest information of the user, the attributes on N rows will be the same.

\n
\n

429 Too Many Requests

\n

If you exceed the rate limits, you receive an error shown below.

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n
\n

Depending on your request, you might also receive 400 Empty Partner, 400 Empty Token, or 403 Authentication Failed responses.

\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","raw","v1","export"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d68a7b61-d8dd-4684-924f-507aed95cb62"},{"name":"Export app survey results with raw user data","id":"57dcfeef-7e38-4e3c-8e15-f40cb3b0dbe0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-PARTNER-NAME","value":"","description":"

This is your partner name. Navigate to Inone > Inone Settings > Account Preferences to copy your partner name.

\n","type":"text"},{"key":"X-REQUEST-TOKEN","value":"","description":"

This key is required to authorize your request. Navigate to Inone > Inone Settings > Integration Settings to generate your request token (API key).

\n","type":"text"},{"key":"Content-Type","value":"application/json","description":"

This header specifies the media type of the resource.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"segment\": {\n \"segment_id\": 123456789\n },\n \"attributes\":[\n \"iid\",\n \"udid\",\n \"pn\",\n \"uuid\",\n \"em\",\n \"app_version\",\n \"mo\",\n \"ov\"\n ],\n \"events\":{\n \"start_date\":1606311893,\n \"end_date\":1611582293,\n \"wanted\":[\n {\n \"event_name\":\"survey_result\",\n \"params\":[\n \"timestamp\",\n \"answer\",\n \"camp_id\",\n \"question\",\n \"variant_id\"\n ]\n }\n ]\n },\n \"format\":\"parquet\",\n \"hook\":\"xyz.test.com\"\n}"},"url":"https://unification.useinsider.com/api/raw/v1/export","description":"

Export Raw User Data API   prepares the raw data for events and attributes together, and also allows you to export App Survey results for multiple requested events and attributes of a user (e.g. name, phone number, age, city, etc.) into Insider's AWS S3 bucket. The request returns a link to partner's webhook endpoint, and this link enables you to have access to the raw user data and transfer it to your end.

\n

When a user sees an app template, this action triggers the survey_result event respectively along with its timestamp, answer, camp ID, question, and variant ID event parameters. These events and their parameters can be listed on the respective user's User Profile.

\n
\n

Suggested Reading: Understanding Events and Attributes

\n
\n

You should provide a webhook endpoint in the request to be notified when the export link is ready. After sending a request, your webhook endpoint receives an export link as follows to have access to the raw user data.

\n

https://insider-data-export.useinsider.com/{partner name}/p/{file name}

\n

You can export raw user data in the following use cases:

\n\n

Body Parameters

\n

Before starting the implementation, make sure to share the following information with your Insider Technical Account Manager:

\n\n

You can consult your Insider Technical Account Manager on which parameters to add in the request.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionData TypeRequired
segmentSegment ID of the user filter. To find your dynamic segment ID, navigate to Audience > Segments > Saved Segments > Dynamic Segments. Click on the Segment whose ID you want to get. You can see it on the top right corner on the summary page. Refer here for further information.ObjectYes
attributesArray of attributesArray (of string)No
eventsArray of eventsObjectYes
start_dateBeginning of the date range for the wanted eventsNumberYes
end_dateEnd of the date range for the wanted eventsNumberYes
wantedObject of the wanted eventsArrayYes
event_nameName of the eventStringYes
paramsEvent parameters of the eventArray (of string)Yes
formatThe export formatStringYes
hookYour webhook endpointStringYes
\n

Sample Body

\n

The sample below displays a request to get the app template results along with raw user data (e.g. insider ID (iid), unique device ID (udid), phone number (pn), unique user ID (uuid), email (em), app version, model (mo), device software version (ov)).

\n
{\n   \"segment\": {\n        \"segment_id\": 123456789\n    },\n   \"attributes\":[\n        \"iid\",\n        \"udid\",\n        \"pn\",\n        \"uuid\",\n        \"em\",\n        \"app_version\",\n        \"mo\",\n        \"ov\"\n    ],\n   \"events\":{\n      \"start_date\":1606311893,\n      \"end_date\":1611582293,\n      \"wanted\":[\n         {\n            \"event_name\":\"survey_result\",\n            \"params\":[\n               \"timestamp\",\n               \"answer\",\n               \"camp_id\",\n               \"question\",\n               \"variant_id\"\n            ]\n         }\n      ]\n   },\n   \"format\":\"parquet\",\n   \"hook\":\"xyz.test.com\"\n}\n\n
\n

Sample Responses

\n

200 OK

\n

When the data is ready to download, you will receive the export link on your webhook URL as displayed below.

\n
{\"url\":\"https://insider-data-export.useinsider.com/{partner name}/p/{file name}\"}\n\n
\n
\n

If a user has performed the requested event(s) N times, that user will be displayed in N rows in the exported file. However, since attributes always display the latest information of the user, the attributes on N rows will be the same.

\n
\n

429 Too Many Requests

\n

If you exceed the rate limits, you receive an error shown below.

\n
{\n    \"error\": \"rejected: too many requests\"\n}\n\n
\n

Depending on your request, you might also receive 400 Empty Partner, 400 Empty Token, or 403 Authentication Failed responses.

\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["api","raw","v1","export"],"host":["unification","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"57dcfeef-7e38-4e3c-8e15-f40cb3b0dbe0"}],"id":"a7ec4d15-85ed-42f8-ae30-95e8e8f656a1","description":"

Mobile App Reporting APIs help you get your app push analytics, export your app push and inApp engagement reports, and export your survey results.

\n","_postman_id":"a7ec4d15-85ed-42f8-ae30-95e8e8f656a1"},{"name":"OnSite","item":[{"name":"Get onsite campaign analytics","id":"62883d70-3fa1-46bf-97c6-ebd43614792e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Go to InOne Settings > Integration Settings > API Keys to generate your token.

\n","type":"text"}],"url":"http://analytics.api.useinsider.com/onsite/v1/campaign","description":"

This API enables you to change the filter values on OnSite campaign analytics from your own back-end without using Insider’s platform.

\n

Query Parameters

\n

You need to send the filters in body parameters.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
startTimeint64Specifies a 10-digit epoch start time1606669200Yes
endTimeint64Specifies a 10-digit epoch end time1606755599No
campaignReportTypeStringThe campaign report type to be used\"ab\", \"hundred\"Yes
selectedGoalTypeStringThe goal type of the data“sales”, “click”, “salesFromClick”, “custom”Yes
reportTypeStringThe report type for data to be fetched“detail”, “summary”Yes
filtersStringUsed for filtering campaignsYes (if you would like to get filtered results)
fieldStringMetrics used in analytics“impression”, “significance”Yes (if you add filters)
operatorStringUsed for searching for values in a given field.”gte”, “gt”, “eq”, “lt”, “lte”Yes (if you add filters)
valueFloatThe value of the field.0No
\n

Adding filters is only valid for all campaign stats.

\n

If you add filters parameter to body and there is no value, the request is sent with default values of the filters that you can see below:

\n
\"filters\": [\n{\n\"field\": \"impression\",\n\"operator\": \"gte\",\n\"value\": 200\n},\n{\n\"field\": \"significance\",\n\"operator\": \"gte\",\n\"value\": 0\n}\n]\n\n
\n

Before sending the request, make sure to replace the authorization value with your own OnSite Campaign Analytics API key.

\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"data\": {\n        \"details\": [\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 260.53068340306834,\n                \"averageOrderValueUplift\": 0.2435810228696742,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 8,\n                \"campaignName\": \"My campaign\",\n                \"clickConversion\": 19598,\n                \"clickThroughRate\": 0.19069767441860466,\n                \"conversionRateUplift\": 0.4216142270861831,\n                \"goalId\": 0,\n                \"impression\": 102770,\n                \"incrementalConversion\": 1701.150115473441,\n                \"incrementalRevenue\": 649101.4595842956,\n                \"revenue\": 1494404,\n                \"revenueFromClick\": 373601,\n                \"salesConversion\": 5736,\n                \"salesConversionRate\": 0.05581395348837209,\n                \"salesFromClick\": 1434,\n                \"selectedGoalConversion\": 5736,\n                \"selectedGoalConversionRate\": 0.05581395348837209,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            },\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 227.98419339841934,\n                \"averageOrderValueUplift\": 0.24369133790924957,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 20,\n                \"campaignName\": \"My amazing campaign\",\n                \"clickConversion\": 26768,\n                \"clickThroughRate\": 0.2196078431372549,\n                \"conversionRateUplift\": 0.39276018099547527,\n                \"goalId\": 0,\n                \"impression\": 121890,\n                \"incrementalConversion\": 1213.1695906432751,\n                \"incrementalRevenue\": 414566.7134502925,\n                \"revenue\": 980788,\n                \"revenueFromClick\": 217953,\n                \"salesConversion\": 4302,\n                \"salesConversionRate\": 0.03529411764705882,\n                \"salesFromClick\": 956,\n                \"selectedGoalConversion\": 4302,\n                \"selectedGoalConversionRate\": 0.03529411764705882,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            }\n        ],\n        \"goalIdList\": [\n            1001362,\n            1001365,\n            1001368\n        ]\n    }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we received an invalid request. The start date cannot be after the end date.

\n

406 Not Acceptable Request

\n

Sorry, we received an invalid request. We are able to provide the analytics data for only the last 1 year.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"http","path":["onsite","v1","campaign"],"host":["analytics","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Specifies a 10-digit epoch start time

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

Specifies a 10-digit epoch end time

\n","type":"text/plain"},"key":"endTime","value":"int64"},{"disabled":true,"description":{"content":"

Required. Your campaign builder ID

\n","type":"text/plain"},"key":"campaignBuilderId","value":"integer"}],"variable":[]}},"response":[{"id":"0958084a-b9c4-41d7-99c5-3bab6638d0cd","name":"Get analytics with campaign builder ID","originalRequest":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Go to InOne Settings > Integration Settings > API Keys to generate your token.","type":"text"}],"url":{"raw":"http://analytics.api.useinsider.com/onsite/v1/campaign?startTime=1672592719&endTime=1683738339&campaignBuilderId=68","protocol":"http","host":["analytics","api","useinsider","com"],"path":["onsite","v1","campaign"],"query":[{"key":"startTime","value":"1672592719","description":"Specifies a 10-digit epoch start time"},{"key":"endTime","value":"1683738339","description":"Specifies a 10-digit epoch end time"},{"key":"campaignBuilderId","value":"68","description":"Your campaign builder ID"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 10 May 2023 17:11:38 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"Vary","value":"Origin","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c53cd6f9c1c38f9-IAD","enabled":true},{"key":"Content-Encoding","value":"gzip","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"detail\": {\n \"click\": {\n \"98\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0,\n \"campaignId\": 98,\n \"campaignName\": \"My campaign\",\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"conversionRateUplift\": 0,\n \"goal\": \"click\",\n \"goalConversion\": 0,\n \"goalConversionRate\": 0,\n \"impression\": 2325,\n \"incrementalConversion\": 0,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0\n }\n ],\n \"99\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.9999,\n \"campaignId\": 99,\n \"campaignName\": \"My amazing campaign\",\n \"conversion\": 364,\n \"conversionRate\": 0.023144910027341516,\n \"conversionRateUplift\": 0,\n \"goal\": \"click\",\n \"goalConversion\": 364,\n \"goalConversionRate\": 0.023144910027341516,\n \"impression\": 15727,\n \"incrementalConversion\": 364,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0.9999\n }\n ]\n },\n \"sales\": {\n \"98\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.8702,\n \"campaignId\": 98,\n \"campaignName\": \"My campaign\",\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"conversionRateUplift\": 0,\n \"goal\": \"sales\",\n \"goalConversion\": 0,\n \"goalConversionRate\": 0,\n \"impression\": 2325,\n \"incrementalConversion\": 0,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0\n }\n ],\n \"99\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.1297,\n \"campaignId\": 99,\n \"campaignName\": \"My amazing campaign\",\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"conversionRateUplift\": 0,\n \"goal\": \"sales\",\n \"goalConversion\": 0,\n \"goalConversionRate\": 0,\n \"impression\": 15727,\n \"incrementalConversion\": 0,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0\n }\n ]\n },\n \"salesFromClick\": {\n \"98\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.8702,\n \"campaignId\": 98,\n \"campaignName\": \"My campaign\",\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"conversionRateUplift\": 0,\n \"goal\": \"salesFromClick\",\n \"goalConversion\": 0,\n \"goalConversionRate\": 0,\n \"impression\": 2325,\n \"incrementalConversion\": 0,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0\n }\n ],\n \"99\": [\n {\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.1297,\n \"campaignId\": 99,\n \"campaignName\": \"My amazing campaign\",\n \"conversion\": 0,\n \"conversionRate\": 0,\n \"conversionRateUplift\": 0,\n \"goal\": \"salesFromClick\",\n \"goalConversion\": 0,\n \"goalConversionRate\": 0,\n \"impression\": 15727,\n \"incrementalConversion\": 0,\n \"incrementalRevenue\": 0,\n \"leadCount\": 0,\n \"platform\": \"all\",\n \"revenue\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"significance\": 0\n }\n ]\n }\n },\n \"summary\": {\n \"98\": 64,\n \"99\": 87\n }\n }\n}"}],"_postman_id":"62883d70-3fa1-46bf-97c6-ebd43614792e"},{"name":"Get onsite overall analytics","id":"a1ee4686-a07a-4317-9e1c-90a611f9016c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"

This key is required to authorize your request. Go to InOne Settings > Integration Settings > API Keys to generate your token.

\n","type":"text"}],"url":"http://analytics.api.useinsider.com/onsite/v1/all","description":"

This API enables you to change the filter values on OnSite campaign analytics from your own back-end without using Insider’s platform.

\n

Query Parameters

\n

You need to send the filters in body parameters.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
startTimeint64Specifies a 10-digit epoch start time1606669200Yes
endTimeint64Specifies a 10-digit epoch end time1606755599No
campaignReportTypeStringThe campaign report type to be used\"ab\", \"hundred\"Yes
selectedGoalTypeStringThe goal type of the data“sales”, “click”, “salesFromClick”, “custom”Yes
reportTypeStringThe report type for data to be fetched“detail”, “summary”Yes
filtersStringUsed for filtering campaignsYes (if you would like to get filtered results)
fieldStringMetrics used in analytics“impression”, “significance”Yes (if you add filters)
operatorStringUsed for searching for values in a given field.”gte”, “gt”, “eq”, “lt”, “lte”Yes (if you add filters)
valueFloatThe value of the field.0No
\n

Adding filters is only valid for all campaign stats.

\n

If you add filters parameter to body and there is no value, the request is sent with default values of the filters that you can see below:

\n
\"filters\": [\n{\n\"field\": \"impression\",\n\"operator\": \"gte\",\n\"value\": 200\n},\n{\n\"field\": \"significance\",\n\"operator\": \"gte\",\n\"value\": 0\n}\n]\n\n
\n

Before sending the request, make sure to replace the authorization value with your own OnSite Campaign Analytics API key.

\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"data\": {\n        \"details\": [\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 260.53068340306834,\n                \"averageOrderValueUplift\": 0.2435810228696742,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 8,\n                \"campaignName\": \"My campaign\",\n                \"clickConversion\": 19598,\n                \"clickThroughRate\": 0.19069767441860466,\n                \"conversionRateUplift\": 0.4216142270861831,\n                \"goalId\": 0,\n                \"impression\": 102770,\n                \"incrementalConversion\": 1701.150115473441,\n                \"incrementalRevenue\": 649101.4595842956,\n                \"revenue\": 1494404,\n                \"revenueFromClick\": 373601,\n                \"salesConversion\": 5736,\n                \"salesConversionRate\": 0.05581395348837209,\n                \"salesFromClick\": 1434,\n                \"selectedGoalConversion\": 5736,\n                \"selectedGoalConversionRate\": 0.05581395348837209,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            },\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 227.98419339841934,\n                \"averageOrderValueUplift\": 0.24369133790924957,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 20,\n                \"campaignName\":\"My amazing campaign\",\n                \"clickConversion\": 26768,\n                \"clickThroughRate\": 0.2196078431372549,\n                \"conversionRateUplift\": 0.39276018099547527,\n                \"goalId\": 0,\n                \"impression\": 121890,\n                \"incrementalConversion\": 1213.1695906432751,\n                \"incrementalRevenue\": 414566.7134502925,\n                \"revenue\": 980788,\n                \"revenueFromClick\": 217953,\n                \"salesConversion\": 4302,\n                \"salesConversionRate\": 0.03529411764705882,\n                \"salesFromClick\": 956,\n                \"selectedGoalConversion\": 4302,\n                \"selectedGoalConversionRate\": 0.03529411764705882,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            }\n        ],\n        \"goalIdList\": [\n            1001362,\n            1001365,\n            1001368\n        ]\n    }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we received an invalid request. The start date cannot be after the end date.

\n

406 Not Acceptable Request

\n

Sorry, we received an invalid request. We are able to provide the analytics data for only the last 1 year.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"protocol":"http","path":["onsite","v1","all"],"host":["analytics","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Specifies a 10-digit epoch start time

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

Specifies a 10-digit epoch end time

\n","type":"text/plain"},"key":"endTime","value":"int64"},{"disabled":true,"description":{"content":"

Required. Your campaign report time. Its values can be \"ab\", \"hundred\".

\n","type":"text/plain"},"key":"campaignReportType","value":"string"},{"disabled":true,"description":{"content":"

Required. Your goal type of the data. Its values can be \"sales\", \"click\", \"salesFromClick\".

\n","type":"text/plain"},"key":"selectedGoalType","value":"string"},{"disabled":true,"description":{"content":"

Required. Your report type for the data to be fetched. Its values can be \"detail\", \"summary\".

\n","type":"text/plain"},"key":"reportType","value":"string"}],"variable":[]}},"response":[{"id":"2ddf1b0c-81a3-4647-be29-4e98b8670aeb","name":"Get click goal for ab campaigns","originalRequest":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"","description":"This key is required to authorize your request. Go to InOne Settings > Integration Settings > API Keys to generate your token.","type":"text"}],"url":{"raw":"http://analytics.api.useinsider.com/onsite/v1/all?startTime=1672592719&endTime=1683738339&campaignReportType=ab&selectedGoalType=click&reportType=detail","protocol":"http","host":["analytics","api","useinsider","com"],"path":["onsite","v1","all"],"query":[{"key":"startTime","value":"1672592719","description":"Specifies a 10-digit epoch start time"},{"key":"endTime","value":"1683738339","description":"Specifies a 10-digit epoch end time"},{"key":"campaignReportType","value":"ab","description":"Your campaign report time. Its values can be \"ab\", \"hundred\"."},{"key":"selectedGoalType","value":"click","description":"Your goal type of the data. Its values can be \"sales\", \"click\", \"salesFromClick\"."},{"key":"reportType","value":"detail","description":"Your report type for the data to be fetched. Its values can be \"detail\", \"summary\"."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 10 May 2023 17:09:22 GMT","enabled":true},{"key":"Content-Type","value":"application/json; charset=UTF-8","enabled":true},{"key":"Transfer-Encoding","value":"chunked","enabled":true},{"key":"Connection","value":"keep-alive","enabled":true},{"key":"Vary","value":"Origin","enabled":true},{"key":"CF-Cache-Status","value":"DYNAMIC","enabled":true},{"key":"Server","value":"cloudflare","enabled":true},{"key":"CF-RAY","value":"7c53ca19de3081df-IAD","enabled":true},{"key":"Content-Encoding","value":"gzip","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n \"data\": {\n \"details\": [\n {\n \"activeDays\": 87,\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.9999,\n \"builderType\": \"custom\",\n \"campaignId\": 99,\n \"campaignName\": \"My campaign\",\n \"clickConversion\": 364,\n \"clickThroughRate\": 0.023144910027341516,\n \"conversionRateUplift\": 0,\n \"goalId\": 0,\n \"impression\": 15727,\n \"incrementalConversion\": 364,\n \"incrementalRevenue\": 0,\n \"revenue\": 0,\n \"revenueFromClick\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"salesFromClick\": 0,\n \"selectedGoalConversion\": 364,\n \"selectedGoalConversionRate\": 0.023144910027341516,\n \"selectedGoalId\": 0,\n \"significance\": 0.9999\n },\n {\n \"activeDays\": 19,\n \"averageOrderValue\": 0,\n \"averageOrderValueUplift\": 0,\n \"bayesianSignificance\": 0.2214,\n \"builderType\": \"custom\",\n \"campaignId\": 101,\n \"campaignName\": \"My amazing campaign\",\n \"clickConversion\": 3,\n \"clickThroughRate\": 0.0032258064516129032,\n \"conversionRateUplift\": 0,\n \"goalId\": 0,\n \"impression\": 930,\n \"incrementalConversion\": 3,\n \"incrementalRevenue\": 0,\n \"revenue\": 0,\n \"revenueFromClick\": 0,\n \"salesConversion\": 0,\n \"salesConversionRate\": 0,\n \"salesFromClick\": 0,\n \"selectedGoalConversion\": 3,\n \"selectedGoalConversionRate\": 0.0032258064516129032,\n \"selectedGoalId\": 0,\n \"significance\": 0.3328\n }\n ],\n \"goalIdList\": [\n 39,\n 40,\n 32,\n 41,\n 38\n ]\n }\n}"}],"_postman_id":"a1ee4686-a07a-4317-9e1c-90a611f9016c"},{"name":"Change filter values","id":"8c1e75b8-8d48-4159-a138-6b3d9ac60559","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"","type":"text"}],"url":"analytics.api.useinsider.com/onsite/v2/all","description":"

This API enables you to change the filter values on OnSite campaign analytics from your own back-end without using Insider’s platform.

\n

Query Parameters

\n

You need to send the filters in body parameters.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
startTimeint64Specifies a 10-digit epoch start time1606669200Yes
endTimeint64Specifies a 10-digit epoch end time1606755599No
campaignReportTypeStringThe campaign report type to be used\"ab\", \"hundred\"Yes
selectedGoalTypeStringThe goal type of the data“sales”, “click”, “salesFromClick”, “custom”Yes
reportTypeStringThe report type for data to be fetched“detail”, “summary”Yes
filtersStringUsed for filtering campaignsYes (if you would like to get filtered results)
fieldStringMetrics used in analytics“impression”, “significance”Yes (if you add filters)
operatorStringUsed for searching for values in a given field.”gte”, “gt”, “eq”, “lt”, “lte”Yes (if you add filters)
valueFloatThe value of the field.0No
\n

Adding filters is only valid for all campaign stats.

\n

If you add filters parameter to body and there is no value, the request is sent with default values of the filters that you can see below:

\n
{\n    \"startTime\": 1646611200,\n    \"endTime\": 1667222349,\n    \"campaignReportType\": \"ab\",\n    \"selectedGoalType\": \"sales\",\n    \"reportType\": \"detail\",\n    \"filters\": [\n        {\n            \"field\": \"impression\",\n            \"operator\": \"gte\",\n            \"value\": 90000\n        },\n         {\n            \"field\": \"significance\",\n            \"operator\": \"gte\",\n            \"value\": 0.9\n        }\n    ]\n}\n\n
\n

Before sending the request, make sure to replace the authorization value with your own OnSite Campaign Analytics API key.

\n

Sample Responses

\n

200 OK

\n

The following response returns if the request is successful.

\n
{\n    \"data\": {\n        \"details\": [\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 260.53068340306834,\n                \"averageOrderValueUplift\": 0.2435810228696742,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 8,\n                \"campaignName\": \"My campaign\",\n                \"clickConversion\": 19598,\n                \"clickThroughRate\": 0.19069767441860466,\n                \"conversionRateUplift\": 0.4216142270861831,\n                \"goalId\": 0,\n                \"impression\": 102770,\n                \"incrementalConversion\": 1701.150115473441,\n                \"incrementalRevenue\": 649101.4595842956,\n                \"revenue\": 1494404,\n                \"revenueFromClick\": 373601,\n                \"salesConversion\": 5736,\n                \"salesConversionRate\": 0.05581395348837209,\n                \"salesFromClick\": 1434,\n                \"selectedGoalConversion\": 5736,\n                \"selectedGoalConversionRate\": 0.05581395348837209,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            },\n            {\n                \"activeDays\": 239,\n                \"averageOrderValue\": 227.98419339841934,\n                \"averageOrderValueUplift\": 0.24369133790924957,\n                \"bayesianSignificance\": 0.9999,\n                \"builderType\": \"custom\",\n                \"campaignId\": 20,\n                \"campaignName\": \"My amazing campaign\",\n                \"clickConversion\": 26768,\n                \"clickThroughRate\": 0.2196078431372549,\n                \"conversionRateUplift\": 0.39276018099547527,\n                \"goalId\": 0,\n                \"impression\": 121890,\n                \"incrementalConversion\": 1213.1695906432751,\n                \"incrementalRevenue\": 414566.7134502925,\n                \"revenue\": 980788,\n                \"revenueFromClick\": 217953,\n                \"salesConversion\": 4302,\n                \"salesConversionRate\": 0.03529411764705882,\n                \"salesFromClick\": 956,\n                \"selectedGoalConversion\": 4302,\n                \"selectedGoalConversionRate\": 0.03529411764705882,\n                \"selectedGoalId\": 0,\n                \"significance\": 0.9999199999999999\n            }\n        ],\n        \"goalIdList\": [\n            1001362,\n            1000090,\n            1001132,\n            1000781,\n            1001436,\n            1000768,\n            1000030,\n            1001092,\n            1000718,\n            1000594,\n            1000765,\n            1000988,\n            1000744,\n            1000742,\n            1000854,\n            1001399,\n            1000881,\n            1001088,\n            1001390,\n            1000731,\n            1001200,\n            1001121,\n            1000795,\n            1000239,\n            1000699,\n            1001389,\n            1000709,\n            1001439,\n            1001133,\n            1000852,\n            1001151,\n            1001449,\n            1001090,\n            1001120,\n            1001017,\n            1001152,\n            1001205,\n            1000948,\n            1000858,\n            1001074,\n            1000712,\n            1000774,\n            1000720,\n            1001049,\n            1000801,\n            1000786,\n            1001184,\n            1001319,\n            1000707,\n            1000743,\n            1001169,\n            1000949,\n            1000798,\n            1001019,\n            1000991,\n            1001025,\n            1000968,\n            1001323,\n            1000831,\n            1000368,\n            1000688,\n            1000713,\n            1001354,\n            1001102,\n            1000853,\n            1001172,\n            1000685,\n            1001096,\n            1000708,\n            1000797,\n            1000824,\n            1001318,\n            1001060,\n            1000916,\n            1001353,\n            1001081,\n            1001136,\n            1001016,\n            1001104,\n            1000261,\n            1000704,\n            1000755,\n            1000884,\n            1000754,\n            1000751,\n            1001029,\n            1000933,\n            1001251,\n            1000741,\n            1000244,\n            1000819,\n            1000726,\n            1001208,\n            1001440,\n            1001199,\n            1001003,\n            1001083,\n            1001437,\n            1000730,\n            1000827,\n            1000830,\n            1001113,\n            1001028,\n            1000715,\n            1000951,\n            1001014,\n            1000800,\n            1000823,\n            1001293,\n            1000820,\n            1000862,\n            1000767,\n            1001030,\n            1000193,\n            1000947,\n            1001298\n        ]\n    }\n}\n\n
\n

400 Bad Request

\n

Sorry, we’ve received an invalid request from your side. You can try again later.

\n

400 Bad Request

\n

Sorry, we received an invalid request. The start date cannot be after the end date.

\n

406 Not Acceptable Request

\n

Sorry, we received an invalid request. We are able to provide the analytics data for only the last 1 year.

\n

500 Internal Server Error

\n

Sorry, we couldn’t receive any response from our server. You can try again later.

\n

Limitations

\n

When sending your request, make sure to follow these limitations.

\n\n","urlObject":{"path":["onsite","v2","all"],"host":["analytics","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

Specifies a 10-digit epoch end time.

\n","type":"text/plain"},"key":"endTime","value":"int64"},{"disabled":true,"description":{"content":"

Required. The campaign report type to be used.

\n","type":"text/plain"},"key":"campaignReportType","value":"string"},{"disabled":true,"description":{"content":"

Required. The goal type of the data.

\n","type":"text/plain"},"key":"selectedGoalType","value":"string"},{"disabled":true,"description":{"content":"

Required. The report type for data to be fetched

\n","type":"text/plain"},"key":"reportType","value":"string"},{"disabled":true,"description":{"content":"

Required. Used for filtering campaigns

\n","type":"text/plain"},"key":"filters","value":"string"},{"disabled":true,"description":{"content":"

Required. Metrics used in analytics

\n","type":"text/plain"},"key":"field","value":"string"},{"disabled":true,"description":{"content":"

Required. Used for searching for values in a given field.

\n","type":"text/plain"},"key":"operator","value":"string"},{"disabled":true,"description":{"content":"

The value of the field.

\n","type":"text/plain"},"key":"value","value":"float"}],"variable":[]}},"response":[],"_postman_id":"8c1e75b8-8d48-4159-a138-6b3d9ac60559"}],"id":"6665beca-4a5b-441e-afc7-6cfd310d9483","description":"

This API enables you to get onsite campaign of your on-site campaigns from your own back-end without using Insider’s platform.

\n","_postman_id":"6665beca-4a5b-441e-afc7-6cfd310d9483"},{"name":"SMS","item":[{"name":"Get SMS campaign list","id":"c2f8e5da-59e9-4a42-a771-0cc59b785d83","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-INS-AUTH-KEY","value":"1a2b3c4d5e6f","description":"
This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.\n
","type":"text"}],"url":"https://sms.useinsider.com/analytics/v1/list?Page=Integer&PerPage=Integer","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.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-INS-AUTH-KEY1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequiredDefault Value
PageIntegerSpecifies the number of pages of SMS campaignsYes1
PerPageIntegerSpecifies the number of SMS campaigns to be listed per pageYes10
\n

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.

\n

Sample Query

\n

Before sending the request, make sure to replace the authorization value with your own API key.

\n
curl --location 'https://sms.useinsider.com/analytics/v1/list?perPage=10&page=1' \\\n--header 'x-ins-auth-key:1a2b3c4d5e6f \\'\n\n
\n

Campaigns are listed in order from newest to oldest.

\n

Sample Responses

\n
200 Ok
\n
{\n   \"current_page\":1,\n   \"data\":[\n      {\n         \"campaignId\":12692,\n         \"campaignName\":\"Sample Campaign 3\",\n         \"startTime\":1727770020,\n         \"status\":\"completed\"\n      },\n      {\n         \"campaignId\":12691,\n         \"campaignName\":\"Sample Campaign 2\",\n         \"startTime\":1727770260,\n         \"status\":\"completed\"\n      },\n      {\n         \"campaignId\":12689,\n         \"campaignName\":\"Sample Campaign 1\",\n         \"startTime\":1727770356,\n         \"status\":\"completed\"\n      },\n   ],\n   \"first_page_url\":\"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=1\",\n   \"from\":1,\n   \"last_page\":160,\n   \"last_page_url\":\"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=160\",\n   \"next_page_url\":\"https://sms.useinsider.com/analytics/v1/list?perPage=10&page=2\",\n   \"per_page\":10,\n   \"prev_page_url\":null,\n   \"to\":10,\n   \"totalCampaign\":1596 }\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["analytics","v1","list"],"host":["sms","useinsider","com"],"query":[{"description":{"content":"

Specifies the number of pages of SMS campaigns

\n","type":"text/plain"},"key":"Page","value":"Integer"},{"description":{"content":"

Specifies the number of pages of SMS campaigns

\n","type":"text/plain"},"key":"PerPage","value":"Integer"}],"variable":[]}},"response":[],"_postman_id":"c2f8e5da-59e9-4a42-a771-0cc59b785d83"},{"name":"Get SMS campaign analytics","id":"4f3a83e0-d4aa-4fe2-8f4d-c446b6c7c902","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"campaignId\": 11242\n}","options":{"raw":{"language":"json"}}},"url":"https://sms.useinsider.com/analytics/v1/campaign?campaignId=Integer","description":"

SMS Campaign Analytics details will be listed as you send a request to this API.

\n

This API does not contain Architect Analytics.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-INS-AUTH-KEY1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
campaignIdIntegerYour campaign ID that can be found on the campaign URLYes
\n

Sample Query

\n

Before sending the request, make sure: 

\n\n
curl --location 'https://sms.useinsider.com/analytics/v1/campaign' \\\n--header 'x-ins-auth-key: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"campaignId\": 11242\n}'\n\n
\n

Sample Responses

\n
200 Ok
\n
{\n   \"targeted\":0,\n   \"messageParts\":0,\n   \"sent\":0,\n   \"dropped\":0,\n   \"delivery\":{\n      \"count\":{\n         \"delivered\":0,\n         \"undelivered\":0\n      },\n      \"rate\":\"0.00%\"\n   },\n   \"clickThrough\":{\n      \"clicks\":0,\n      \"rate\":\"0.00%\",\n      \"revenue\":\"0\"\n   },\n   \"conversion\":{\n      \"conversions\":0,\n      \"rate\":\"0.00%\"\n   },\n   \"unsubscribers\":{\n      \"count\":0,\n      \"rate\":\"0.00%\"\n   },\n   \"droppedMessages\":{\n      \"frequencyCapped\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"duplicates\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"internalErrors\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"countryCodeDrops\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"invalidPhoneNumbers\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"couponListDrops\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      },\n      \"silentHours\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      }\n   },\n   \"undeliveredMessages\":{\n      \"carrierViolations\":{\n         \"count\":0,\n         \"rate\":\"0.00%\",\n         \"details\":[\n         ]\n      },\n      \"hardBounces\":{\n         \"count\":0,\n         \"rate\":\"0.00%\",\n         \"details\":[\n         ]\n      },\n      \"softBounces\":{\n         \"count\":0,\n         \"rate\":\"0.00%\",\n         \"details\":[\n         ]\n      },\n      \"deliveryFailures\":{\n         \"count\":0,\n         \"rate\":\"0.00%\",\n         \"details\":[\n         ]\n      },\n      \"deliveryReportMissing\":{\n         \"count\":0,\n         \"rate\":\"0.00%\"\n      }\n   }\n}\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["analytics","v1","campaign"],"host":["sms","useinsider","com"],"query":[{"description":{"content":"

Your campaign ID that can be found on the campaign URL

\n","type":"text/plain"},"key":"campaignId","value":"Integer"}],"variable":[]}},"response":[],"_postman_id":"4f3a83e0-d4aa-4fe2-8f4d-c446b6c7c902"},{"name":"Get overall SMS campaign analytics","id":"4b35d7e3-f41d-4e5a-8232-0321c3e47c43","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startTime\": 1727643600,\n \"endTime\": 1728334799\n}","options":{"raw":{"language":"json"}}},"url":"https://sms.useinsider.com/analytics/v1/overall?startTime=int64&endTime=int64","description":"

SMS Overall Campaign Analytics details will be listed for a given period as you send a request to this API.

\n

This API does not contain Architect Analytics.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-INS-AUTH-KEY1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The 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
\n

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.

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl --location 'https://sms.useinsider.com/analytics/v1/overall' \\\n--header 'x-ins-auth-key: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"startTime\": 1727643600,\n    \"endTime\": 1728334799\n}'\n\n
\n

Sample Responses

\n
200 Ok
\n
{\n    \"summary\": {\n        \"targeted\": 19723,\n        \"messageParts\": 39446,\n        \"sent\": 19723,\n        \"dropped\": 0,\n        \"delivery\": {\n            \"count\": {\n                \"delivered\": 19031,\n                \"undelivered\": 692\n            },\n            \"rate\": \"96.49%\"\n        },\n        \"clickThrough\": {\n            \"clicks\": 214,\n            \"rate\": \"1.12%\",\n            \"revenue\": \"151\"\n        },\n        \"conversion\": {\n            \"conversions\": 1,\n            \"rate\": \"0.01%\"\n        },\n        \"unsubscribers\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"droppedMessages\": {\n            \"frequencyCapped\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"duplicates\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"internalErrors\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"countryCodeDrops\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"invalidPhoneNumbers\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"couponListDrops\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"silentHours\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            }\n        },\n        \"undeliveredMessages\": {\n            \"carrierViolations\": {\n                \"count\": 70,\n                \"rate\": \"10.12%\",\n                \"details\": {\n                    \"3032\": 69,\n                    \"3034\": 1\n                }\n            },\n            \"hardBounces\": {\n                \"count\": 11,\n                \"rate\": \"1.59%\",\n                \"details\": {\n                    \"3216\": 2,\n                    \"3221\": 9\n                }\n            },\n            \"softBounces\": {\n                \"count\": 186,\n                \"rate\": \"26.88%\",\n                \"details\": {\n                    \"3300\": 186\n                }\n            },\n            \"deliveryFailures\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\",\n                \"details\": {}\n            },\n            \"deliveryReportMissing\": {\n                \"count\": 425,\n                \"rate\": \"61.42%\"\n            }\n        }\n    },\n    \"detail\": [\n        {\n            \"campaignId\":1234,\n            \"campaignName\": \"Sample Campaign 1\",\n            \"status\": \"completed\",\n            \"startTime\": 1728381600,\n            \"endTime\": 1728382560,\n            \"targeted\": 19723,\n            \"messageParts\": 39446,\n            \"sent\": 19723,\n            \"dropped\": 0,\n            \"delivery\": {\n                \"count\": {\n                    \"delivered\": 19031,\n                    \"undelivered\": 692\n                },\n                \"rate\": \"96.49%\"\n            },\n            \"clickThrough\": {\n                \"clicks\": 214,\n                \"rate\": \"1.12%\",\n                \"revenue\": \"151\"\n            },\n            \"conversion\": {\n                \"conversions\": 1,\n                \"rate\": \"0.01%\"\n            },\n            \"unsubscribers\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"droppedMessages\": {\n                \"frequencyCapped\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"duplicates\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"internalErrors\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"countryCodeDrops\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"invalidPhoneNumbers\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"couponListDrops\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"silentHours\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                }\n            },\n            \"undeliveredMessages\": {\n                \"carrierViolations\": {\n                    \"count\": 70,\n                    \"rate\": \"10.12%\",\n                    \"details\": {\n                        \"3032\": 69,\n                        \"3034\": 1\n                    }\n                },\n                \"hardBounces\": {\n                    \"count\": 11,\n                    \"rate\": \"1.59%\",\n                    \"details\": {\n                        \"3216\": 2,\n                        \"3221\": 9\n                    }\n                },\n                \"softBounces\": {\n                    \"count\": 186,\n                    \"rate\": \"26.88%\",\n                    \"details\": {\n                        \"3300\": 186\n                    }\n                },\n                \"deliveryFailures\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\",\n                    \"details\": {}\n                },\n                \"deliveryReportMissing\": {\n                    \"count\": 425,\n                    \"rate\": \"61.42%\"\n                }\n            }\n        },\n        {\n            \"campaignId\": 12345,\n            \"campaignName\": \"Sample Campaign 2\",\n            \"status\": \"passive\",\n            \"startTime\": 1690281000,\n            \"endTime\": 2050214340,\n            \"targeted\": 0,\n            \"messageParts\": 0,\n            \"sent\": 0,\n            \"dropped\": 0,\n            \"delivery\": {\n                \"count\": {\n                    \"delivered\": 0,\n                    \"undelivered\": 0\n                },\n                \"rate\": \"0.00%\"\n            },\n            \"clickThrough\": {\n                \"clicks\": 0,\n                \"rate\": \"0.00%\",\n                \"revenue\": \"0\"\n            },\n            \"conversion\": {\n                \"conversions\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"unsubscribers\": {\n                \"count\": 0,\n                \"rate\": \"0.00%\"\n            },\n            \"droppedMessages\": {\n                \"frequencyCapped\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"duplicates\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"internalErrors\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"countryCodeDrops\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"invalidPhoneNumbers\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"couponListDrops\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                },\n                \"silentHours\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                }\n            },\n            \"undeliveredMessages\": {\n                \"carrierViolations\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\",\n                    \"details\": {}\n                },\n                \"hardBounces\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\",\n                    \"details\": {}\n                },\n                \"softBounces\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\",\n                    \"details\": {}\n                },\n                \"deliveryFailures\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\",\n                    \"details\": {}\n                },\n                \"deliveryReportMissing\": {\n                    \"count\": 0,\n                    \"rate\": \"0.00%\"\n                }\n            }\n        }\n    ]\n}\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["analytics","v1","overall"],"host":["sms","useinsider","com"],"query":[{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"description":{"content":"

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.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[],"_postman_id":"4b35d7e3-f41d-4e5a-8232-0321c3e47c43"},{"name":"Get Transactional SMS analytics","id":"9497ffff-69c2-4298-96f4-f78f82d08d9c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startTime\": 1727643600,\n \"endTime\": 1728334799\n}","options":{"raw":{"language":"json"}}},"url":"https://sms.useinsider.com/analytics/v1/transactional?startTime=Int64&endTime=Int64","description":"

Transactional SMS Analytics details will be listed for a given time period as you send a request to this API.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-INS-AUTH-KEY1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The 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
\n

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.

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl --location 'https://sms.useinsider.com/analytics/v1/transactional' \\\n--header 'x-ins-auth-key: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"startTime\": 1727643600,\n    \"endTime\": 1728334799\n}'\n\n
\n

Sample Responses

\n
200 Ok
\n
{\n    \"messageParts\": 0,\n    \"sent\": 0,\n    \"dropped\": 0,\n    \"delivery\": {\n        \"count\": {\n            \"delivered\": 0,\n            \"undelivered\": 0\n        },\n        \"rate\": \"0.00%\"\n    },\n    \"clickThrough\": {\n        \"clicks\": 0,\n        \"rate\": \"0.00%\"\n    },\n    \"droppedMessages\": {\n        \"internalErrors\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"countryCodeDrops\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"invalidPhoneNumbers\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        }\n    },\n    \"undeliveredMessages\": {\n        \"carrierViolations\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"hardBounces\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"softBounces\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"deliveryFailures\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"deliveryReportMissing\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        }\n    }\n}\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["analytics","v1","transactional"],"host":["sms","useinsider","com"],"query":[{"description":{"content":"

The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"Int64"},{"description":{"content":"

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.

\n","type":"text/plain"},"key":"endTime","value":"Int64"}],"variable":[]}},"response":[],"_postman_id":"9497ffff-69c2-4298-96f4-f78f82d08d9c"},{"name":"Get OTP / Verify SMS analytics","id":"bcaa0068-f319-4ec5-898d-5cf28003f152","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-INS-AUTH-KEY","value":"1a2b3c4d5e6f","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token.

\n","type":"text"}],"body":{"mode":"raw","raw":"{\n \"startTime\": 1727643600,\n \"endTime\": 1728334799\n}","options":{"raw":{"language":"json"}}},"url":"https://sms.useinsider.com/analytics/v1/verify","description":"

SMS OTP / Verify Analytics details will be listed for a given time period as you send a request to this API.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
X-INS-AUTH-KEY1a2b3c4d5e6fThis key is required to authorize your request. Refer to API Authentication Tokens to generate your token.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionRequired
startTimeint64The time campaign is being launched. Specifies a 10-digit epoch start time.Yes
endTimeint64The 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
\n

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.

\n

Sample Query

\n

Before sending the request, make sure: 

\n\n
curl --location 'https://sms.useinsider.com/analytics/v1/verify' \\\n--header 'x-ins-auth-key: 1a2b3c4d5e6f' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"startTime\": 1727643600,\n    \"endTime\": 1728334799\n}'\n\n
\n

Sample Responses

\n
200 Ok
\n
{\n    \"messageParts\": 0,\n    \"sent\": 0,\n    \"dropped\": 0,\n    \"delivery\": {\n        \"count\": {\n            \"delivered\": 0,\n            \"undelivered\": 0\n        },\n        \"rate\": \"0.00%\"\n    },\n    \"verification\": {\n        \"count\": {\n            \"verified\": 0,\n            \"unverified\": 0\n        },\n        \"rate\": \"0.00%\"\n    },\n    \"droppedMessages\": {\n        \"internalErrors\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"countryCodeDrops\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"invalidPhoneNumbers\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        }\n    },\n    \"undeliveredMessages\": {\n        \"carrierViolations\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"hardBounces\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"softBounces\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"deliveryFailures\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\",\n            \"details\": {}\n        },\n        \"deliveryReportMissing\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        }\n    },\n    \"unverifiedMessages\": {\n        \"attemptFailures\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        },\n        \"timeoutFailures\": {\n            \"count\": 0,\n            \"rate\": \"0.00%\"\n        }\n    }\n}\n\n
\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["analytics","v1","verify"],"host":["sms","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Required. The time campaign is being launched. Specifies a 10-digit epoch start time.

\n","type":"text/plain"},"key":"startTime","value":"int64"},{"disabled":true,"description":{"content":"

Required. 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.

\n","type":"text/plain"},"key":"endTime","value":"int64"}],"variable":[]}},"response":[],"_postman_id":"bcaa0068-f319-4ec5-898d-5cf28003f152"}],"id":"93a1d9f0-aa52-4110-9c2e-01517c49516f","_postman_id":"93a1d9f0-aa52-4110-9c2e-01517c49516f","description":""},{"name":"Architect","item":[{"name":"Get Architect Overall Analytics","id":"c3d12a7f-7169-423f-b69d-b20c6ebb2deb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/overall?statDate=String","description":"

The Architect overall analytics endpoint provides comprehensive analytics data for all user journeys. This data includes key user metrics, journey statuses, and performance insights broken down by channels and journeys, offering a high-level overview of campaign effectiveness and user interactions.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word Bearer followed by the API key you generated.
Acceptapplication/jsonYou should enter it as application/json at all times.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
statDateStringDefines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYYstatDate=01/08/2024 - 30/08/2024Yes
statusesArray of StringsArray filter for journey statuses. Default is active if not provided.
Allowed values are active, test, passive, sunset.
statuses[]=active&statuses[]=passiveNo
channelsArray of StringsArray filter specifying which channels' analytics data to return. If not provided, all channels are included. Allowed values are web-push, app-push, email, sms, whatsapp, in-app, journey-web, call-apichannels[]=email&channels[]=smsNo
idsArray of IntegersArray of journey IDs for filteringids[]=89&ids[]=90No
conversionGoalIntegerA number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.conversionGoal=123No
goalTypeIntegerAttribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.0No
\n

The statDate parameter is essential for defining the time range for analytics. The start date must be earlier than the end date. You can select any time range, including those longer than one year or before the past year. However, if you encounter a timeout when exporting a range longer than one year, try selecting a shorter range.

\n

Use statuses, channels, ids, and conversionGoal filters to tailor your analytics queries to specific requirements.

\n

For overall analytics, you can only get the conversion metrics for one goal at a time. You can enter the goal id as a parameter to select which conversion goal you want to see the metrics. You can obtain the Goal ID either from the goal dropdown in the InOne panel or by using the conversion goals information endpoint.

\n\n\n

Sample Example

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl -X GET \"https://architect-analytics.api.useinsider.com/v1/overall?statDate=01/08/2024 - 30/08/2024&statuses[]=active&channels[]=email&channels[]=sms\" \\\n-H \"Authorization: {{vault:bearer-token}}\" \\\n-H \"Accept: application/json\"\n\n
\n

Sample Responses

\n
200 OK
\n
{\n    \"filterDate\": \"01/08/2024 - 30/08/2024\",\n    \"attributionType\": \"Click-Through\",\n    \"goal\": \"confirmation_page_view\",\n    \"partner\": {\n        \"exportTime\": \"11/11/2024 11:29\",\n        \"accountName\": \"shopbagg\"\n    },\n    \"statuses\": [],\n    \"journeysCount\": {\n        \"active\": 1,\n        \"passive\": 1,\n        \"sunset\": 0,\n        \"test\": 0\n    },\n    \"journeyTags\": [\n        \"Survey\",\n        \"Tag1\"\n    ],\n    \"journeyIds\": [\n        89,\n        90\n    ],\n    \"userMetrics\": {\n        \"dropped\": 282138,\n        \"exited\": 109647,\n        \"completed\": 2391841,\n        \"entered\": 2805589,\n        \"sent\": 6250485,\n        \"delivered\": 6022681,\n        \"dropRate\": 10.06,\n        \"completeRate\": 85.25,\n        \"deliveryRate\": 96.36\n    },\n    \"exitCriteria\": {\n        \"112\": {\n            \"type\": \"Event\",\n            \"name\": \"email_click\",\n            \"parameters\": [],\n            \"exited\": 58,\n            \"journeys\": [\n                {\n                    \"id\": 89,\n                    \"name\": \"Journey Name 1\"\n                }\n            ]\n        },\n        \"255\": {\n            \"type\": \"Event\",\n            \"name\": \"payment_successful\",\n            \"parameters\": [],\n            \"exited\": 14022,\n            \"journeys\": [\n                {\n                    \"id\": 90,\n                    \"name\": \"Journey Name 2\"\n                }\n            ]\n        }\n    },\n    \"performanceMetrics\": {\n        \"totalClicks\": 123137,\n        \"totalConversions\": 0,\n        \"revenue\": 0,\n        \"conversionRate\": 0,\n        \"clickThroughRate\": 2.04,\n        \"averageOrderValue\": 0\n    },\n    \"performanceOfChannels\": {\n        \"email\": {\n            \"conversions\": 0,\n            \"drops\": 15120,\n            \"delivered\": 3945177,\n            \"totalClicks\": 37067,\n            \"totalOpens\": 544420,\n            \"revenue\": 0,\n            \"uniqueClicks\": 13395,\n            \"sent\": 3975505,\n            \"uniqueOpens\": 452539,\n            \"unsubscribes\": 2392,\n            \"numberOfChannels\": 697,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 0.34,\n            \"dropRate\": 0.38,\n            \"conversionRate\": 0,\n            \"openRate\": 11.47,\n            \"deliveryRate\": 99.24,\n            \"unsubscribeRate\": 0.06\n        },\n        \"app-push\": {\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 0,\n            \"totalClicks\": 63,\n            \"revenue\": 0,\n            \"sent\": 0,\n            \"numberOfChannels\": 106,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 0,\n            \"dropRate\": 0,\n            \"conversionRate\": 0,\n            \"deliveryRate\": 0\n        },\n        \"sms\": {\n            \"conversions\": 0,\n            \"drops\": 252852,\n            \"delivered\": 2041121,\n            \"totalClicks\": 53552,\n            \"revenue\": 0,\n            \"sent\": 2274980,\n            \"smsMessageParts\": 3049175,\n            \"unsubscribes\": 36745,\n            \"numberOfChannels\": 318,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 2.62,\n            \"dropRate\": 9.93,\n            \"conversionRate\": 0,\n            \"deliveryRate\": 89.72,\n            \"unsubscribeRate\": 1.8\n        },\n        \"in-app\": {\n            \"conversions\": 0,\n            \"drops\": 181,\n            \"delivered\": 36383,\n            \"totalClicks\": 32455,\n            \"revenue\": 0,\n            \"sent\": 0,\n            \"numberOfChannels\": 15,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 89.2,\n            \"dropRate\": 0.06,\n            \"conversionRate\": 0,\n            \"deliveryRate\": 0\n        }\n    },\n    \"performanceOfJourneys\": {\n        \"89\": {\n            \"journeyId\": 89,\n            \"journeyName\": \"Journey Name 1\",\n            \"status\": \"passive\",\n            \"averageOrderValue\": 0,\n            \"conversions\": 0,\n            \"delivered\": 0,\n            \"totalClicks\": 11,\n            \"totalOpens\": 437,\n            \"revenue\": 0,\n            \"uniqueClicks\": 11,\n            \"sent\": 0,\n            \"drops\": 0,\n            \"uniqueOpens\": 372,\n            \"smsMessageParts\": 0,\n            \"unsubscribes\": 1,\n            \"clickThroughRate\": 0,\n            \"dropRate\": 0,\n            \"conversionRate\": 0,\n            \"openRate\": 0,\n            \"deliveryRate\": 0,\n            \"unsubscribeRate\": 0\n        },\n        \"90\": {\n            \"journeyId\": 90,\n            \"journeyName\": \"Journey Name 2\",\n            \"status\": \"active\",\n            \"averageOrderValue\": 0,\n            \"conversions\": 0,\n            \"delivered\": 0,\n            \"totalClicks\": 9,\n            \"totalOpens\": 300,\n            \"revenue\": 0,\n            \"uniqueClicks\": 7,\n            \"sent\": 0,\n            \"drops\": 0,\n            \"uniqueOpens\": 125,\n            \"smsMessageParts\": 0,\n            \"unsubscribes\": 0,\n            \"clickThroughRate\": 0,\n            \"dropRate\": 0,\n            \"conversionRate\": 0,\n            \"openRate\": 0,\n            \"deliveryRate\": 0,\n            \"unsubscribeRate\": 0\n        }\n    }\n}\n\n
\n
401 Unauthorized
\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n
422 Bad Request
\n
{\n    \"message\": \"The stat date field is required.\",\n    \"errors\": {\n        \"statDate\": [\n            \"The stat date field is required.\"\n        ]\n    }\n}\n\n
\n

Response Details

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","overall"],"host":["architect-analytics","api","useinsider","com"],"query":[{"description":{"content":"

Defines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYY

\n","type":"text/plain"},"key":"statDate","value":"String"},{"disabled":true,"description":{"content":"

Array filter for journey statuses. Default is active if not provided.\nAllowed values are active, test, passive, sunset.

\n","type":"text/plain"},"key":"statuses","value":"Array of Strings"},{"disabled":true,"description":{"content":"

Array filter specifying which channels' analytics data to return. If not provided, all channels are included. Allowed values are web-push, app-push, email, sms, whatsapp, in-app, journey-web, call-api

\n","type":"text/plain"},"key":"channels","value":"Array of Strings"},{"disabled":true,"description":{"content":"

Array of journey IDs for filtering

\n","type":"text/plain"},"key":"ids","value":"Array of Integers"},{"disabled":true,"description":{"content":"

A number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.

\n","type":"text/plain"},"key":"conversionGoal","value":"Integer"},{"disabled":true,"description":{"content":"

Attribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.

\n","type":"text/plain"},"key":"goalType","value":"Integer"}],"variable":[]}},"response":[],"_postman_id":"c3d12a7f-7169-423f-b69d-b20c6ebb2deb"},{"name":"Get Architect Journey Analytics","id":"306ea458-652c-41f5-8334-b143f9e08293","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/journey/{journeyId}?statDate=String","description":"

The Architect journey analytics endpoint provides detailed analytics for a specific journey within the Architect product. Use this endpoint to retrieve detailed analytics on a journey to monitor performance, metrics, and channel activities.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word Bearer followed by the API key you generated.
Acceptapplication/jsonYou should enter it as application/json at all times.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
statDateStringDefines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYYstatDate=01/08/2024 - 30/08/2024Yes
conversionGoalIntegerA number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.conversionGoal=123No
goalTypeIntegerAttribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.0No
\n

The statDate parameter is essential for defining the time range for analytics. The start date must be earlier than the end date. You can select any time range, including those longer than one year or before the past year. However, if you encounter a timeout when exporting a range longer than one year, try selecting a shorter range.

\n

Use conversionGoal filter to tailor your analytics queries to specific requirements.

\n

For journey analytics, you can only get the conversion metrics for one goal at a time. You can enter the goal id as a parameter to select which conversion goal you want to see the metrics. You can obtain the Goal ID either from the goal dropdown in the InOne panel or by using the conversion goals information endpoint.

\n\n\n

Sample Example

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl -X GET \"https://architect-analytics.api.useinsider.com/v1/journey/251?statDate=01/08/2024 - 30/08/2024&conversionGoal=123&goalType=0\" \\\n  -H \"Authorization: {{vault:bearer-token}}\" \\\n  -H \"Accept: application/json\"\n\n
\n

Sample Responses

\n
200 OK
\n
{\n    \"filterDate\": \"20/05/2024 - 17/10/2024\",\n    \"attributionType\": \"Click-Through\",\n    \"goal\": \"confirmation_page_view\",\n    \"partner\": {\n        \"exportTime\": \"11/11/2024 12:13\",\n        \"accountName\": \"shopbagg\"\n    },\n    \"journey\": {\n        \"status\": \"active\",\n        \"startDate\": \"01/07/2024 16:10\",\n        \"endDate\": \"20/12/2034 17:09\",\n        \"daysActive\": 133,\n        \"journeyId\": 251,\n        \"journeyName\": \"Journey Name\",\n        \"journeyTags\": [\n            \"Lorem ipsum\"\n        ]\n    },\n    \"userMetrics\": {\n        \"dropped\": 30167,\n        \"exited\": 51412,\n        \"completed\": 199181,\n        \"entered\": 285966,\n        \"sent\": 421412,\n        \"delivered\": 414186,\n        \"dropRate\": 10.55,\n        \"completeRate\": 69.65,\n        \"deliveryRate\": 98.29\n    },\n    \"performanceMetrics\": {\n        \"totalClicks\": 15641,\n        \"totalConversions\": 0,\n        \"revenue\": 0,\n        \"conversionRate\": 0,\n        \"clickThroughRate\": 3.78,\n        \"averageOrderValue\": 0\n    },\n    \"exitCriteria\": {\n        \"386\": {\n            \"type\": \"Event\",\n            \"name\": \"application_declined\",\n            \"parameters\": [],\n            \"exited\": 51412\n        }\n    },\n    \"performanceOfChannels\": {\n        \"app-push\": {\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 6,\n            \"totalClicks\": 0,\n            \"revenue\": 0,\n            \"sent\": 6,\n            \"numberOfChannels\": 2,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 0,\n            \"dropRate\": 0,\n            \"conversionRate\": 0,\n            \"deliveryRate\": 100\n        },\n        \"email\": {\n            \"conversions\": 0,\n            \"drops\": 3,\n            \"delivered\": 399,\n            \"totalClicks\": 177,\n            \"totalOpens\": 235,\n            \"revenue\": 0,\n            \"uniqueClicks\": 31,\n            \"sent\": 406,\n            \"uniqueOpens\": 151,\n            \"unsubscribes\": 3,\n            \"numberOfChannels\": 1,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 7.77,\n            \"dropRate\": 0.73,\n            \"conversionRate\": 0,\n            \"openRate\": 37.84,\n            \"deliveryRate\": 98.28,\n            \"unsubscribeRate\": 0.75\n        },\n        \"sms\": {\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 0,\n            \"totalClicks\": 0,\n            \"revenue\": 0,\n            \"sent\": 0,\n            \"smsMessageParts\": 0,\n            \"unsubscribes\": 0,\n            \"numberOfChannels\": 1,\n            \"averageOrderValue\": 0,\n            \"clickThroughRate\": 0,\n            \"dropRate\": 0,\n            \"conversionRate\": 0,\n            \"deliveryRate\": 0,\n            \"unsubscribeRate\": 0\n        }\n    },\n    \"channelsMetrics\": [\n        {\n            \"sent\": 2,\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 2,\n            \"totalClicks\": 0,\n            \"revenue\": 0,\n            \"averageOrderValue\": 0,\n            \"conversionRate\": 0,\n            \"dropRate\": 0,\n            \"clickThroughRate\": 0,\n            \"deliveryRate\": 100,\n            \"channel\": \"app-push\",\n            \"channelName\": \"Paid Ads Lead Nurture_mobile App Push 1\",\n            \"campaignId\": 4098\n        },\n        {\n            \"sent\": 140,\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 137,\n            \"totalClicks\": 67,\n            \"uniqueClicks\": 11,\n            \"totalOpens\": 66,\n            \"uniqueOpens\": 44,\n            \"revenue\": 0,\n            \"unsubscribes\": 3,\n            \"averageOrderValue\": 0,\n            \"conversionRate\": 0,\n            \"dropRate\": 0,\n            \"clickThroughRate\": 8.03,\n            \"openRate\": 32.12,\n            \"deliveryRate\": 97.86,\n            \"unsubscribeRate\": 2.19,\n            \"channel\": \"email\",\n            \"channelName\": \"Paid Ads Lead Nurture_mobile Email 1\",\n            \"campaignId\": 4104\n        },\n        {\n            \"sent\": 0,\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 0,\n            \"totalClicks\": 0,\n            \"revenue\": 0,\n            \"smsMessageParts\": 0,\n            \"unsubscribes\": 0,\n            \"averageOrderValue\": 0,\n            \"conversionRate\": 0,\n            \"dropRate\": 0,\n            \"clickThroughRate\": 0,\n            \"deliveryRate\": 0,\n            \"unsubscribeRate\": 0,\n            \"channel\": \"sms\",\n            \"channelName\": \"Paid Ads Lead Nurture_mobile SMS 1\",\n            \"campaignId\": 4110\n        },\n        {\n            \"sent\": 2,\n            \"conversions\": 0,\n            \"drops\": 0,\n            \"delivered\": 2,\n            \"totalClicks\": 0,\n            \"revenue\": 0,\n            \"averageOrderValue\": 0,\n            \"conversionRate\": 0,\n            \"dropRate\": 0,\n            \"clickThroughRate\": 0,\n            \"deliveryRate\": 100,\n            \"channel\": \"app-push\",\n            \"channelName\": \"Paid Ads Lead Nurture_mobile App Push 2\",\n            \"campaignId\": 4100\n        }\n    ]\n}\n\n
\n
401 Unauthorized
\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n
422 Bad Request
\n
{\n    \"message\": \"The stat date field is required.\",\n    \"errors\": {\n        \"statDate\": [\n            \"The stat date field is required.\"\n        ]\n    }\n}\n\n
\n

Response Details

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","journey","{journeyId}"],"host":["architect-analytics","api","useinsider","com"],"query":[{"description":{"content":"

Defines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYY

\n","type":"text/plain"},"key":"statDate","value":"String"},{"disabled":true,"description":{"content":"

A number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.

\n","type":"text/plain"},"key":"conversionGoal","value":"Integer"},{"disabled":true,"description":{"content":"

Attribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.

\n","type":"text/plain"},"key":"goalType","value":"Integer"}],"variable":[]}},"response":[],"_postman_id":"306ea458-652c-41f5-8334-b143f9e08293"},{"name":"Get Architect Channel Analytics","id":"118409ba-35a8-4cf3-8a1a-64390df73123","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/element/{campaignId}?statDate=String","description":"

The Architect channel analytics endpoint provides analytics for a specific campaign element in the Architect product. Use this endpoint to gather analytics data for individual campaign elements and track user interactions, click-through rates, open rates, and other relevant metrics.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word Bearer followed by the API key you generated.
Acceptapplication/jsonYou should enter it as application/json at all times.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterData TypeDescriptionSample ValueRequired
statDateStringDefines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYYstatDate=01/08/2024 - 30/08/2024Yes
conversionGoalIntegerA number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.conversionGoal=123No
goalTypeIntegerAttribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.0No
\n

The statDate parameter is essential for defining the time range for analytics. The start date must be earlier than the end date. You can select any time range, including those longer than one year or before the past year. However, if you encounter a timeout when exporting a range longer than one year, try selecting a shorter range.

\n

Use conversionGoal filter to tailor your analytics queries to specific requirements.

\n

For journey analytics, you can only get the conversion metrics for one goal at a time. You can enter the goal id as a parameter to select which conversion goal you want to see the metrics. You can obtain the Goal ID either from the goal dropdown in the InOne panel or by using the conversion goals information endpoint.

\n\n\n

Sample Example

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl -X GET \"https://architect-analytics.api.useinsider.com/v1/element/12345?statDate=01/08/2024 - 30/08/2024&conversionGoal=789&goalType=1\" \\\n  -H \"Authorization: {{vault:bearer-token}}\" \\\n  -H \"Accept: application/json\"\n\n
\n

Sample Responses

\n
200 OK
\n
{\n    \"filterDate\": \"22/05/2024 - 11/11/2024\",\n    \"attributionType\": \"Click-Through\",\n    \"goal\": \"confirmation_page_view\",\n    \"partner\": {\n        \"exportTime\": \"11/11/2024 12:27\",\n        \"accountName\": \"shopbagg\"\n    },\n    \"elementMetrics\": {\n        \"averageOrderValue\": 0,\n        \"block\": 95,\n        \"bounce\": 0,\n        \"bounceRate\": 0,\n        \"clickThroughRate\": 1.49,\n        \"clickToOpenRate\": 5.7,\n        \"conversions\": 0,\n        \"conversionRate\": 0,\n        \"delivered\": 18889,\n        \"deliveryRate\": 99.57,\n        \"droppedMessages\": [],\n        \"drops\": {\n            \"frequencyDrops\": 0,\n            \"frequencyDropPercentage\": 0,\n            \"sendingDrops\": 98,\n            \"sendingDropPercentage\": 100,\n            \"systemDrops\": 0,\n            \"systemDropPercentage\": 0\n        },\n        \"linkActivity\": [\n            {\n                \"link\": \"https://example.com/app/\",\n                \"totalClick\": 910,\n                \"uniqueClick\": 256\n            },\n            {\n                \"link\": \"https://example.com/about/\",\n                \"totalClick\": 211,\n                \"uniqueClick\": 207\n            },\n            {\n                \"link\": \"https://example.com/pay/\",\n                \"totalClick\": 211,\n                \"uniqueClick\": 208\n            }\n        ],\n        \"machineOpen\": 0,\n        \"openRate\": 26.2,\n        \"revenue\": 0,\n        \"sent\": 18971,\n        \"spam\": 2,\n        \"totalClicks\": 3896,\n        \"totalOpens\": 6355,\n        \"uniqueClicks\": 282,\n        \"uniqueMachineOpens\": 3232,\n        \"uniqueMachineOpensRate\": 17.11,\n        \"uniqueOpens\": 4949,\n        \"uniqueOpenRate\": 26.2,\n        \"unsubscribe\": 15,\n        \"unsubscribeRate\": 0.08\n    }\n}\n\n
\n
401 Unauthorized
\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n
422 Bad Request
\n
{\n    \"message\": \"The stat date field is required.\",\n    \"errors\": {\n        \"statDate\": [\n            \"The stat date field is required.\"\n        ]\n    }\n}\n\n
\n

Response Details

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","element","{campaignId}"],"host":["architect-analytics","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

A number representing the conversion goal ID filter. Default is 0 which is the Purchase goal.

\n","type":"text/plain"},"key":"conversionGoal","value":"Integer"},{"disabled":true,"description":{"content":"

Attribution type for reporting. 0 for Click-Through attribution (default). 1 for View-Through attribution.

\n","type":"text/plain"},"key":"goalType","value":"Integer"},{"description":{"content":"

Defines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYY

\n","type":"text/plain"},"key":"statDate","value":"String"}],"variable":[]}},"response":[],"_postman_id":"118409ba-35a8-4cf3-8a1a-64390df73123"},{"name":"Get Conversion Goals Analytics","id":"007f2978-5566-4140-be19-1946a26238a5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/goals-analytics?statDate=statDate=01/08/2024 - 30/08/2024","description":"

For overall and journey analytics, you can get all conversion metrics for all goals at the same time.

\n

If you provide the journey ID in the payload, you will also get that journey’s conversion metrics for goals. You should provide the journey ID inside the IDs filter array.

\n

This endpoint retrieves a list of conversion goals across various journeys. You can use the Conversion Goals Information API together with this API to combine conversion goal metrics and see which journeys they are used in.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word Bearer followed by the API key you generated.
Acceptapplication/jsonYou should enter it as application/json at all times.
\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionSample ValueRequired
statDateDefines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYYstatDate=01/08/2024 - 30/08/2024Yes
statusesArray filter for journey statuses. Default is active if not provided.
Allowed values: active, test, passive, sunset
statuses[]=active&statuses[]=passiveNo
channelsArray filter specifying which channels' analytics data to return. If not provided, all channels are included.
Allowed values: web-push, app-push, email, sms, whatsapp, in-app, journey-web, call-api
channels[]=email&channels[]=smsNo
idsArray of journey IDs for filteringids[]=89&ids[]=90No
goalTypeAttribution type for reporting.
0 for Click-Through attribution (default)
1 for View-Through attribution
0No
\n

Sample Example

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl -X GET \"https://architect-analytics.api.useinsider.com/v1/goals-analytics\" \\\n-H \"Authorization: {{vault:bearer-token}}\" \\\n-H \"Accept: application/json\"\n\n
\n

Sample Responses

\n
200 OK
\n
{\n    \"data\": [\n        {\n            \"conversionRateReference\": 35010,\n            \"goalId\": 0,\n            \"goalName\": \"confirmation_page_view\",\n            \"conversion\": 4,\n            \"conversionRate\": 0.01,\n            \"revenue\": 123088700,\n            \"aov\": 30772175\n        },\n        {\n            \"conversionRateReference\": 35010,\n            \"goalId\": 2,\n            \"goalName\": \"item_added_to_cart\",\n            \"conversion\": 30,\n            \"conversionRate\": 0.09,\n            \"revenue\": 565852200,\n            \"aov\": 18861740\n        },\n        {\n            \"conversionRateReference\": 35010,\n            \"goalId\": 3,\n            \"goalName\": \"product_detail_page_view\",\n            \"conversion\": 125,\n            \"conversionRate\": 0.36,\n            \"revenue\": 11732341800,\n            \"aov\": 93858734\n        }\n    ]\n}\n\n
\n
401 Unauthorized
\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","goals-analytics"],"host":["architect-analytics","api","useinsider","com"],"query":[{"description":{"content":"

Defines the date range for statistics. Format: DD/MM/YYYY - DD/MM/YYYY

\n","type":"text/plain"},"key":"statDate","value":"statDate=01/08/2024 - 30/08/2024"},{"disabled":true,"description":{"content":"

Array filter for journey statuses. Default is active if not provided.\nAllowed values: active, test, passive, sunset

\n","type":"text/plain"},"key":"statuses","value":"statuses[]=active&statuses[]=passive"},{"disabled":true,"description":{"content":"

Array filter specifying which channels' analytics data to return. If not provided, all channels are included.\nAllowed values: web-push, app-push, email, sms, whatsapp, in-app, journey-web, call-api

\n","type":"text/plain"},"key":"channels","value":"channels[]=email&channels[]=sms"},{"disabled":true,"description":{"content":"

Array of journey IDs for filtering

\n","type":"text/plain"},"key":"ids","value":"ids[]=89&ids[]=90"},{"disabled":true,"description":{"content":"

Attribution type for reporting.\n0 for Click-Through attribution (default)\n1 for View-Through attribution

\n","type":"text/plain"},"key":"goalType","value":"0"}],"variable":[]}},"response":[],"_postman_id":"007f2978-5566-4140-be19-1946a26238a5"},{"name":"Get Conversion Goals Information","id":"445eecad-04cb-4ac2-a44a-6c054cd1975e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/goals","description":"

For Architect overall, journey, and channel analytics, you can only get the conversion metrics for one goal at a time. You can enter the goal id as a parameter to select which conversion goal you want to see the metrics. You can obtain the Goal ID either from the goal dropdown in the InOne panel or by using this endpoint.

\n

This endpoint retrieves a list of conversion goals across various journeys in the Architect product, their IDs, and which journeys they are used in.

\n

Headers

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
HeaderSample ValueDescription
Authorization{{vault:bearer-token}}This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word Bearer followed by the API key you generated.
Acceptapplication/jsonYou should enter it as application/json at all times.
\n

Query Parameters

\n

This endpoint does not require any query parameters.

\n

Sample Example

\n

Sample Query

\n

Before sending the request, make sure:

\n\n
curl -X GET \"https://architect-analytics.api.useinsider.com/v1/goals\" \\\n  -H \"Authorization: {{vault:bearer-token}}\" \\\n  -H \"Accept: application/json\"\n\n
\n

Sample Response

\n
200 OK
\n
{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"payment_successful\",\n            \"type\": \"on-event\",\n            \"parameters\": [\n                [\n                    {\n                        \"key\": \"retailer_name\",\n                        \"operator\": \"cnt\",\n                        \"type\": \"string\",\n                        \"values\": [\n                            \"VCC\"\n                        ]\n                    }\n                ]\n            ],\n            \"journeys\": [\n                {\n                    \"id\": 89,\n                    \"name\": \"Journey Name 1\"\n                }\n            ]\n        },\n        {\n            \"id\": 2,\n            \"name\": \"payment_failed\",\n            \"type\": \"on-event\",\n            \"parameters\": [\n                [\n                    {\n                        \"key\": \"retailer_name\",\n                        \"operator\": \"cnt\",\n                        \"type\": \"string\",\n                        \"values\": [\n                            \"VCC\",\n                            \"Direct\"\n                        ]\n                    }\n                ]\n            ],\n            \"journeys\": [\n                {\n                    \"id\": 90,\n                    \"name\": \"Journey Name 2\"\n                }\n            ]\n        }\n    ]\n}\n\n
\n
401 Unauthorized
\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n

Response Details

\n\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","goals"],"host":["architect-analytics","api","useinsider","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"445eecad-04cb-4ac2-a44a-6c054cd1975e"},{"name":"Export Journey List","id":"075b5dc2-29d8-4539-bef1-1dc0a037d953","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}","description":"

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. You should enter the word {{vault:bearer-token}} by the API key you generated.

\n","type":"text"},{"key":"Accept","value":"application/json","description":"

You should enter it as application/json at all times.

\n","type":"text"}],"url":"https://architect-analytics.api.useinsider.com/v1/journeys","description":"

The Journey List API enables you to export detailed information for all journeys created in Architect. This endpoint provides metadata such as journey name, status, creation and execution dates, tags, conversion goals, and exit criteria — allowing you to easily audit, analyze, or back up journey configurations externally.

\n

It’s particularly useful for teams that want to integrate Architect data with external analytics platforms or maintain synchronized journey catalogs.

\n

Query Parameters

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ParameterDescriptionSample ValueRequired
statusesFilters journeys by status.
Allowed values are active, test, passive, sunset.
?statuses[]=active&statuses[]=testNo
idsFilters by specific journey IDs?ids[]=1&ids[]=2&ids[]=3No
searchReturns journeys whose names partially match the provided text.?search=welcomeNo
tagsFilters journeys by their assigned tags. Each tag must exist in the tags table.?tags[]=cart abandonment&tags[]=retentionNo
limit, pagePagination for the export. You can determine which page and for what limit you want to get an export for. You can get at most 300 journeys per export.?limit=100&page=1 → Brings the 100 journeys of the first page.
If you have 900 journeys, and you want to get an export for all of them, you need 3 API calls:

?limit=300&page=1
?limit=300&page=2
?limit=300&page=3
No
\n

Sample Responses

\n

200 OK

\n
{\n  \"journeys\": [\n    {\n      \"journeyId\": 5756,\n      \"parentJourneyId\": 38,\n      \"journeyName\": \"Demo Journey\",\n      \"status\": \"active\",\n      \"createdAt\": \"2025-10-14T11:42:29.000000Z\",\n      \"startDate\": \"2025-10-14T11:44:53.000000Z\",\n      \"endDate\": \"2025-11-13T11:42:45.000000Z\",\n      \"tags\": [\"Demo\"],\n      \"description\": null,\n      \"starterType\": \"on-event\",\n      \"languages\": [\"ar_AE\", \"ja_JP\", \"ka_GA\"],\n      \"reEligibility\": {\n        \"rule\": \"Users re-enter after 3 day\",\n        \"value\": 3\n      },\n      \"conversionGoals\": [\n        {\n          \"id\": 216,\n          \"event\": \"confirmation_page_view\",\n          \"eventParameters\": [\n            {\n              \"display_name\": \"Event Source\",\n              \"key\": \"source\",\n              \"operator\": \"eq\",\n              \"type\": \"string\",\n              \"values\": [\"crm\", \"mobile\"]\n            }\n          ]\n        }\n      ],\n      \"exitCriteria\": [\n        {\n          \"event\": \"item_added_to_cart\",\n          \"parameters\": {\n            \"name\": \"item_added_to_cart\",\n            \"type\": \"event\",\n            \"params\": [],\n            \"identifierParameter\": \"\",\n            \"hash\": \"item_added_to_cartnacntstring3/4 Sleeve Kimono DressProduct Name\",\n            \"consistencyStatus\": false,\n            \"groupPartners\": [],\n            \"value\": \"item_added_to_cart\"\n          }\n        },\n        {\n          \"event\": \"login\",\n          \"parameters\": {\n            \"name\": \"login\",\n            \"type\": \"event\",\n            \"params\": [],\n            \"identifierParameter\": \"\",\n            \"hash\": \"login\",\n            \"consistencyStatus\": false,\n            \"groupPartners\": [],\n            \"value\": \"login\"\n          }\n        }\n      ],\n      \"campaigns\": [\n                {\n                    \"id\": 64592,\n                    \"name\": \"Demo Journey Web Push 1\",\n                    \"channel\": \"Web Push\"\n                },\n                {\n                    \"id\": 64596,\n                    \"name\": \"Demo Journey Web Push 2\",\n                    \"channel\": \"Web Push\"\n                },\n                {\n                    \"id\": 64595,\n                    \"name\": \"Demo Journey SMS 2\",\n                    \"channel\": \"SMS\"\n                },\n                {\n                    \"id\": 64599,\n                    \"name\": \"Demo Journey SMS 1\",\n                    \"channel\": \"SMS\"\n                },\n                {\n                    \"id\": 64591,\n                    \"name\": \"Demo Journey On-Site 1\",\n                    \"channel\": \"On-Site\"\n                }\n            ]\n    }\n  ]\n}\n\n\n
\n

401 Unauthorized

\n
{\n    \"error\": \"Invalid API key\"\n}\n\n
\n

Limitations

\n\n","urlObject":{"protocol":"https","path":["v1","journeys"],"host":["architect-analytics","api","useinsider","com"],"query":[{"disabled":true,"description":{"content":"

Filters journeys by status.\nAllowed values are active, test, passive, sunset.

\n","type":"text/plain"},"key":"statuses","value":"?statuses[]=active&statuses[]=test"},{"disabled":true,"description":{"content":"

Filters by specific journey IDs

\n","type":"text/plain"},"key":"ids","value":"?ids[]=1&ids[]=2&ids[]=3"},{"disabled":true,"description":{"content":"

Returns journeys whose names partially match the provided text.

\n","type":"text/plain"},"key":"search","value":"?search=welcome"},{"disabled":true,"description":{"content":"

Filters journeys by their assigned tags. Each tag must exist in the tags table.

\n","type":"text/plain"},"key":"tags","value":"?tags[]=cart%20abandonment&tags[]=retention"},{"disabled":true,"description":{"content":"

Pagination for the export. You can determine which page and for what limit you want to get an export for. You can get at most 300 journeys per export.

\n","type":"text/plain"},"key":"limit,page","value":"?limit=100&page=1"}],"variable":[]}},"response":[],"_postman_id":"075b5dc2-29d8-4539-bef1-1dc0a037d953"}],"id":"573cd59c-65b7-4dbd-b07f-b95ab912b48a","_postman_id":"573cd59c-65b7-4dbd-b07f-b95ab912b48a","description":""}],"id":"167f3b10-62e6-4115-9263-bee535afec92","description":"

Reports & Analysis APIs allow you to get the campaign analytics from your own back-end without using the Insider's Inone panel. As a result, you can analyze your users' engagement, and manage your campaigns accordingly.

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
APIFunction
Get email campaign listYou can get a full list of your available email campaigns.
Get email campaign analyticsYou can get the analytics of your email campaigns for a given time period.
Get overall analyticsYou can get the overall analytics of your email campaigns for a given time period.
Get web push analyticsYou can get the campaign analytics of your web push notifications from your own back-end without using Insider's panel.
Get app push analyticsYou can tet the analytics of your single app push notifications.
Export app push results with raw user dataYou can export your app push engagement reports.
Export app template results with raw user dataYou can export your app template engagement reports.
Export app survey results with raw user dataYou can export campaign results and leads of individual users.
Get onsite campaign analyticsYou can get the analytics of the campaign for the time period you selected.
Get onsite overall analyticsYou can get all the results for the time period selected together with the filters applied.
Change filter values for onsite analyticsYou can change the filter values on onsite campaign analytics from your own back-end without using Insider’s platform.
\n
","_postman_id":"167f3b10-62e6-4115-9263-bee535afec92"}],"event":[{"listen":"prerequest","script":{"id":"90f245e2-4a94-42f3-afc1-818377e36dac","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"9cd90813-7f1c-4d81-83ae-c67755569286","type":"text/javascript","exec":[""]}}],"variable":[{"id":"3738420f-0982-4cd3-8e08-2df8bab972a7","key":"X-PARTNER-NAME","value":""},{"id":"5df61b0c-97e5-4620-b7db-7ccc83332c53","key":"X-REQUEST-TOKEN","value":""},{"id":"600d42f9-3d20-47fb-8e33-e7080b18eb64","key":"transactionalEmailApiKey","value":""},{"id":"5c9e75d5-5079-48f6-8345-c6e17fa81d95","key":"emailContentApiKey","value":""},{"id":"08227a9a-192e-4d71-a676-5aaf0ce9424a","key":"webPushAuthorizationKey","value":"Bearer"},{"id":"77bcf3f5-e617-4379-b713-aa0d9af2866b","key":"emailCampaignAnalyticsApiKey","value":""},{"id":"7b0f275a-caab-4e66-b721-ddb465fb44f1","key":"onsiteCampaignAnalyticsApiKey","value":""},{"id":"6befcb4d-e2ac-4a70-8333-1278b6e55b63","key":"globalUnsubscribeApiKey","value":""},{"id":"12e08a3d-9fc7-4aab-bfb9-95b0daca2bc1","key":"resubscribeApiKey","value":""},{"id":"207d77d1-96ed-45b0-85a4-1bd9a73d00bc","key":"firstPartySegmentsApiKey","value":""},{"id":"eab7e6ba-cec5-48e1-b9be-378621d279c3","key":"mobileAppApiKey","value":""},{"id":"0940a8d7-43c3-4dbc-b2cd-028511976446","key":"partnerName","value":""},{"id":"ce657a73-e924-4e35-bcbe-c5431b680286","key":"transactionalWhatsappApiKey","value":""}]}