Get App Push Details

Prev Next

This API returns metadata for your App Push campaigns: name, status, dates, campaign type, variations, and tags. Single, Conversion, Cart Reminder, Recurring, and Geofence campaigns can return in the response.

You can either:

  • Get a campaign by its ID or

  • List the campaigns created within a date range of up to 90 days.

Campaign IDs are unique only within a campaign type. For example, a Single campaign and a Recurring campaign can both have the ID 1434. If you request an ID without campaign_type, the response can contain up to one campaign per type. Add campaign_type to get exactly one campaign.

Endpoint and headers

POST https://gw.useinsider.com/api/mob/v2/app-push/details

Header

Sample Value

Description

Required

Authorization

Bearer {access_token}

OAuth 2.0 access token issued by the Insider API Gateway. Refer to OAuth 2.0 Credentials to create a credential and get a token. Required scope: mob-get-app-push-details.

Yes

Content-Type

application/json

This header specifies the media type of the request body.

Yes

This endpoint requires the mob-get-app-push-details scope (App Push - Campaign Details in the scope dropdown) on the access token. The gateway rejects a token without this scope with 401 (R6), not 403.

Body parameters

app_push_id and created_between are mutually exclusive. Send exactly one of them.

Parameter

Description

Data Type

Required

app_push_id

The ID of the App Push campaign. Must be greater than 0.

Integer

Conditional

created_between

The creation date range of the campaigns.

Object

Conditional

created_between.from

The start day of the range, in YYYY-MM-DD format. Insider One interprets it in your account timezone.

String

Yes, when created_between is used

created_between.to

The end day of the range, in YYYY-MM-DD format. Inclusive until 23:59:59 of that day.

String

Yes, when created_between is used

campaign_type

Returns only campaigns of this type. Accepted values: single, conversion, cart reminder, recurring, geofence. You can use it with app_push_id or created_between. The value conversion does not include Cart Reminder campaigns; use cart reminder for them.

String

No

The date range can be 90 days or less, counting both the from and to days. For example, 2026-01-01 to 2026-03-31 is accepted, and 2026-01-01 to 2026-04-01 is rejected. The to date cannot be earlier than the from date.

Sample requests

Before sending the request, replace the values in your request body.

Below is an example for the app_push_id parameter, narrowed to one campaign type.

curl --location 'https://gw.useinsider.com/api/mob/v2/app-push/details' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data '{
  "app_push_id": 1434,
  "campaign_type": "conversion"
}'

Below is an example for the created_between parameter.

curl --location 'https://gw.useinsider.com/api/mob/v2/app-push/details' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data '{
  "created_between": {
    "from": "2026-06-01",
    "to": "2026-08-15"
  }
}'

Below is an example that lists only Recurring campaigns within a date range.

curl --location 'https://gw.useinsider.com/api/mob/v2/app-push/details' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data '{
  "created_between": {
    "from": "2026-06-01",
    "to": "2026-08-15"
  },
  "campaign_type": "recurring"
}'

Sample responses

The following are some example responses you might receive for your request.

200 OK

{
  "data": [
    {
      "app_push_id": 1434,
      "campaign_name": "Summer Sale Push",
      "created_at": "2026-06-04T09:12:33Z",
      "created_by": "jane@partner.com",
      "status": "completed",
      "start_date": "2026-06-05T10:00:00Z",
      "end_date": "2026-06-30T23:59:00Z",
      "updated_at": "2026-06-06T11:02:10Z",
      "campaign_type": "conversion",
      "variations": [
        { "variation_id": 1, "percentage": 50, "variation_name": "Variant A" },
        { "variation_id": 2, "percentage": 50, "variation_name": "Control Group" }
      ],
      "tags": ["summer"]
    },
    {
      "app_push_id": 1502,
      "campaign_name": "Welcome Push",
      "created_at": "2026-07-10T08:00:00Z",
      "created_by": "john@partner.com",
      "status": "active",
      "start_date": "2026-07-10T09:00:00Z",
      "updated_at": "2026-07-10T08:05:00Z",
      "campaign_type": "single",
      "variations": [
        { "variation_id": 3, "percentage": 100, "variation_name": "Variant A" }
      ]
    }
  ]
}

Below are the response parameters.

Field

Data Type

Description

app_push_id

Integer

Campaign ID

campaign_name

String

Campaign name

created_at, updated_at

String (date-time)

Creation and last update time, in UTC

created_by

String

Email of the user who created the campaign

status

String

Campaign status. The value is the same status the panel shows for the campaign.

start_date

String (date-time)

Start date of the campaign, in your account timezone. The trailing Z does not mean UTC. Omitted when the campaign has no start date.

end_date

String (date-time)

End date of the campaign, in your account timezone. The trailing Z does not mean UTC. Omitted when the campaign has no end date.

campaign_type

String

single, conversion, cart reminder, recurring, or geofence

variations[]

Array

variation_id, percentage, and variation_name of each variation. Omitted when empty.

tags[]

Array of strings

Tag names of the campaign. Omitted when the campaign has no tags.

400 Bad Request

Validation errors return an error message and a code.

{
  "error": "either 'app_push_id' or 'created_between' must be provided",
  "code": "ERR_VALIDATION"
}

Error message

Code

Cause

invalid request payload

ERR_VALIDATION

The body is not valid JSON or has wrong value types.

either 'app_push_id' or 'created_between' must be provided

ERR_VALIDATION

No filter is sent.

provide either 'app_push_id' or 'created_between', not both

ERR_VALIDATION

Both filters are sent.

invalid date format for 'from'; expected format is YYYY-MM-DD

ERR_VALIDATION

The from value is not in YYYY-MM-DD format.

invalid date format for 'to'; expected format is YYYY-MM-DD

ERR_VALIDATION

The to value is not in YYYY-MM-DD format.

'to' date must be after or equal to 'from' date

ERR_VALIDATION

The to value is earlier than the from value.

date range must not exceed 90 days

ERR_VALIDATION

The range is longer than 90 days.

'campaign_type' must be one of: single, conversion, cart reminder, recurring, geofence

ERR_VALIDATION

The campaign_type value is unknown.

result set exceeds 1000 campaigns; narrow your date range

ERR_TOO_MANY_RESULTS

More than 1000 campaigns match the filter. The API returns no partial data.

The API treats an app_push_id of 0 or a negative value as missing and returns the "either 'app_push_id' or 'created_between' must be provided" error.

404 Not Found

No campaign matches the filter. The same status with {"message": "partner not found", "code": "ERR_NOT_FOUND"} means the account behind the access token was not found.

{
  "error": "campaign not found",
  "code": "ERR_CAMPAIGN_NOT_FOUND"
}

403 Forbidden

Your account is not active.

{
  "message": "partner inactive",
  "code": "ERR_FORBIDDEN"
}

500 Internal Server Error

A temporary error occurred on the Insider One side. The body is the plain text internal error, not JSON. Retry the request with backoff.

Gateway responses (401, 403, 405, 429, 500)

The Insider API Gateway returns token, scope, IP restriction, method, and rate limit errors before the request reaches this API, in the {"code": "R1", "message": "..."} format. Refer to OAuth 2.0 Credentials for details. A missing scope returns 401, not 403. The gateway can return these codes:

HTTP

Body

Cause

401

{"code":"R1","message":"Invalid Token"}

The access token is missing, malformed, or not valid.

401

{"code":"R5","message":"Expired Token"}

The access token has expired. Request a new token.

401

{"code":"R9","message":"Invalid Token"}

The access token was revoked.

401

{"code":"R10","message":"Inactive Client"}

The OAuth 2.0 credential is inactive.

401

{"code":"R6","message":"Invalid Request"}

The access token does not have the mob-get-app-push-details scope.

403

{"code":"R4","message":"IP Restricted"}

The request comes from an IP address outside the credential's IP restriction.

405

{"code":"R6","message":"Invalid Request"}

The request method is not POST.

429

{"code":"R3","message":"Rate Limited"}

The request exceeds the rate limit of the mob-get-app-push-details scope.

500

{"code":"R8","message":"Internal Server Error"}

A temporary gateway error occurred. Retry the request with backoff.

Limitations

  • All requests must be sent as HTTPS POST.

  • Requests made with the mob-get-app-push-details scope are limited to 30 requests per 60 seconds, with a burst limit of 40 requests.

  • Only one of the filters (app_push_id or created_between) can be used at a time.

  • The date range must be 90 days or less.

  • A request can return at most 1000 campaigns. If more campaigns match, narrow your date range or add campaign_type.

  • The API returns campaigns created with the current App Push campaign builder. It does not return campaigns created with the legacy builder.

  • The API does not return deleted campaigns. It returns Draft campaigns and orders results by app_push_id.

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.

Authentication

This endpoint authenticates with OAuth 2.0 through the Insider API Gateway. The partner is resolved from the access token, so you do not send an API key. Token retrieval is not repeated here.

Required scope

Authorizes

Rate limit

mob-get-app-push-details

POST /api/mob/v2/app-push/details

30 requests per 60 seconds, burst limit 40