Insider One's Web Push API allows you to launch Single Web Push notifications from your back-end without using the InOne panel.
The Web Push API v2 differs from the Web Push API v1 in two ways: its rate limit is 6000 requests per minute, and its endpoint includes the v2 version.
Endpoint and Headers
POST https://web-push.api.useinsider.com/v2/single/campaign_id
Visit our Postman collection to test this request.
Header | Sample Value | Description |
|---|---|---|
Authorization | Bearer 1a2b3c4d5e6f | This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. |
Content-Type | application/json | This header specifies the media type of the resource. |
Body Parameters
Each request body requires a partner ID and a title.
Parameter | Description | Data Type | Required |
|---|---|---|---|
partner_id | This is your partner identification number, available in Inone Settings > Account Settings. | String | Yes |
title | Every request creates a push notification campaign in InOne with the push type set to Single Push. This is the title of the push content. It cannot exceed 100 characters. | String | Yes |
description | This 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. | String | Yes |
image | This is the push notification icon. Only HTTPS protocols are accepted. If not provided, the default icon is used instead. | String | Yes |
banner | This is the rich push notification image. Only HTTPS protocols are accepted. | String | No |
link | The link of the Web push message. | String | Yes |
include_unengaged | Enables 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 |
ttl | TTL stands for time to live. It is the maximum time the system will wait before attempting to send a push notification to an offline or temporarily unavailable user. TTL is limited to 240 hours. | String | Yes |
target | Targeting options for the campaign (segmenting). | Object | Yes if is_all: false |
attribute | The attribute used for targeting, e.g., "d_wp_browser". | String | Yes, if the target is used. |
values | An array of values to target, e.g, ["Edg"] | Array | Yes, if the target is used. |
Sample Request
If you want to use default attributes, you must follow the format:
d_Default_attribute_name
If you want to use custom attributes, you must follow the format:
c_Custom_attribute_name
You can refer to the Default Attributes documentation for a full list of available default fields.
Before sending the request, make sure to:
Replace the authorization value with your API key.
Add your partner ID in partner_id.
Add your campaign name to the title.
When you send a Create a Single Web Push request, you will receive a campaign_id in the response. You use this campaign_id to launch your Single Web Push campaign.
The sample below displays a request to launch a Single Web Push campaign without segments: is_all: true.
curl --location --request POST 'https://web-push.api.useinsider.com/v2/single/campaign_id' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 1a2b3c4d5e6f' \
--data-raw '{
"partner_id": "100000001",
"title": "title of push",
"description": "description of push",
"image": "https://image.insiderone.com/mywebsite/webPushDefaultImage/JpVu9a2577074.jpeg",
"banner": "https://image.insiderone.com/mywebsite/webPushDefaultImage/JpVu92577074.jpeg",
"link": "https://image.insiderone.com",
"include_unengage": true,
"ttl": "1000"
}'The sample below shows a request to launch a Single Web Push campaign with the is_all segment set to false.
curl --location --request POST 'https://web-push.api.useinsider.com/v2/single/campaign_id' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 1a2b3c4d5e6f' \
--data-raw '{
"partner_id": "10000001",
"title": "title of push",
"description": "description of push",
"image": "https://image.insiderone.com/mywebsite/webPushDefaultImage/JpVu9aBX577074.jpeg",
"banner": "https://image.insiderone.com/mywebsite/webPushDefaultImage/JpZLy12577074.jpeg",
"link": "https://image.insiderone.com",
"include_unengage": true,
"ttl": "1000",
"language": "en_US",
"target": {
"attribute": "d_wp_browser",
"values": ["Edg"]
}
}'Sample Responses
200 OK
You can see this kind of response when you successfully launch your campaign.
{
"success": true,
"campaign_id": 1697300275
}401 Unauthorized
{
"message": "Unauthorized"
}424 Failed Dependency
{
"message": "SERVICE:-"
}Error Codes
400 Bad Request
401 Unauthorized Request
424 Failed Dependency
429 Request limit exceeded
Error reference
Use this table to identify and resolve the errors this endpoint returns. Each row shows the status code, the response body you receive, what causes it, and how to fix it.
Status | JSON response | Cause | Fix |
|---|---|---|---|
400 Bad Request | The response can contain validation details. | The request contains malformed JSON, the campaign_id is missing or invalid, or a request field fails validation; for example, a required field is missing, an image or link is not a valid URL, ttl is not numeric, or a text value exceeds its limit. | Send valid JSON and check the request against the documented body parameters. Use the campaign_id returned when the Single Web Push campaign was created. Correct the specific validation issue returned in the response. |
401 Unauthorized | {"message": "Unauthorized"} | The API key in the authorization header is missing, incorrect, or revoked. | Send a current API key as the authorization key in the request header. See API Authentication Tokens. |
424 Failed Dependency | { "message": "SERVICE:-" } | An upstream service that this endpoint depends on did not return a usable result. A related variant, SERVICE:-Campaign not found, indicates that the campaign_id in the path does not resolve to a campaign. | Confirm the campaign_id is correct and that the campaign still exists in your panel. If the message is the bare SERVICE: form and the campaign is valid, retry with exponential backoff, then contact the Insider One team if it persists. |
429 Too Many Requests | The configured request limit for the endpoint was exceeded. The default limit is 6,000 requests per minute. | Throttle requests according to the endpoint’s configured limit. Retry after the rate-limit window resets. Follow the Retry-After header when the response provides one. Do not retry every 429 immediately. |
Limitations
All functions must be executed with an HTTPS POST request.
The API key should be provided as the authorization key in the request header. If the key is incorrect, the operation will not be executed, and an authorization error will return in the response.
The rate limit is 6000 requests per minute.
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.