--- title: "Launch Single Web Pushes V2" slug: "launch-single-web-pushes-v2" description: "Insider One's Launch Single Web Push API v2 reference: POST endpoint to send a campaign by campaign_id, rate-limited to 6,000 requests/minute, up from v1." tags: ["web push api"] updated: 2026-09-11T12:39:51Z published: 2026-09-11T12:39:51Z canonical: "academy.insiderone.com/launch-single-web-pushes-v2" --- > ## Documentation Index > Fetch the complete documentation index at: https://academy.insiderone.com/llms.txt > Use this file to discover all available pages before exploring further. # Launch Single Web Pushes V2 Insider One's Web Push API allows you to launch Single Web Push notifications from your back-end without using the InOne panel. > [!NOTE] > The Web Push API v2 differs from the [Web Push API v1](/v1/docs/launch-single-web-pushes-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 [](https://developers.insiderone.com/#98de5581-555a-4eaa-9345-b3fa01888da5) > 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](https://academy.insiderone.com/docs/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**](https://academy.insiderone.com/docs/inone-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](https://academy.insiderone.com/docs/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**. > [!NOTE] > When you [send a Create a Single Web Push request](/v1/docs/create-single-web-pushes), 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*. ```bash 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*. ```bash 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. ```json {  "success": true,  "campaign_id": 1697300275 } ``` #### 401 Unauthorized ```json { "message": "Unauthorized" } ``` #### 424 Failed Dependency ```json {  "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. ## Related - [Create Single Web Pushes](/create-single-web-pushes.md) - [Launch Single Web Pushes V1](/launch-single-web-pushes-v1.md) - [Delete Single Web Pushes](/delete-single-web-pushes.md) - [API Authentication Tokens](/api-authentication-tokens.md) - [API Rate Limits](/api-rate-limits.md) - [API Status and Error Codes](/api-status-and-error-codes.md) - [Insider One APIs in Postman](/insider-apis-in-postman.md)