Get InApp Details

Prev Next

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.

You can either:

  • Search for a specific campaign using its ID or

  • Filter campaigns created within a specific date range.

Endpoint and Headers

POST https://gw.useinsider.com/api/mob/v1/inapp/details

Visit our Postman collection to test this request.

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 mint a token. Required scope: mob-get-inapp.

Yes

Content-Type

application/json

This header specifies the media type of the resource.

Yes

Body Parameters

inapp_id and created_between are mutually exclusive; at least one is required.

Parameter

Description

Data Type

inapp_id

The ID of the app template

Integer

created_between

The dates between which the campaigns are created

Object

from

The start date of the date range

String

to

The end date of the date range

String

The range may span at most 90 days, and to cannot precede from.

Sample Requests

Before sending the request, make sure to replace the values in your request body. Below is an example for a single campaign.

curl -X POST 'https://gw.useinsider.com/api/mob/v1/inapp/details' \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{ "inapp_id": 12345 }'

Below is an example for a date range.

curl -X POST 'https://gw.useinsider.com/api/mob/v1/inapp/details' \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "created_between": { "from": "2026-07-01", "to": "2026-07-31" }
  }'

Sample Responses

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

200 OK

The following is a sample response for the created_between parameter.

{
  "data": [
    {
      "inapp_id": 12345,
      "name": "Summer Sale Banner",
      "created_by": "jdoe@insiderone.com",
      "status": "live",
      "is_inapp_from_push": false,
      "is_inapp_from_architect": true,
      "journey_id": 987,
      "created_at": "2026-07-04T09:12:33Z",
      "start_date": "2026-07-05T00:00:00Z",
      "updated_at": "2026-07-06T11:02:10Z",
      "end_date": "2026-07-31T23:59:59Z",
      "variations": [
        { "variation_id": 1, "percentage": 50, "variation_name": "A", "type": "full_screen" },
        { "variation_id": 2, "percentage": 50, "variation_name": "Control Group" }
      ],
      "tags": ["summer", "campaign"]
    }
  ]
}

Below are the response parameters.

Field

Type

Notes

inapp_id

Int

Campaign ID

journey_id

Int (omitted when empty)

Set when the campaign comes from an Architect journey

linked_push_id/linked_push_type

Int/String (omitted when empty)

Set for InApps derived from a push

naame, created_by, status

String

-

is_inapp_from_push, is_inapp_from_architect

Bool

Origin of the campaign

created_at, start_date, updated_at

RFC 3339

-

end_date

RFC 3339 (omitted when empty)

Present when an end date is set

variations[]

Array (omitted when empty)

variation_id, percentage, variation_name, type. type is empty for the control-group variation

tags[]

String[] (omitted when empty)

-

The following is a sample response for the inapp_id parameter.

{
  "data": [
    {
      "inapp_id": 2,
      "name": "My campaign",
      "linked_push_id": 3,
      "linked_push_type": "conversion",
      "created_at": "2024-01-01T15:08:55Z",
      "created_by": "test@insiderone.com",
      "status": "passive",
      "is_inapp_from_push": true,
      "is_inapp_from_architect": false,
      "start_date": "2024-01-01T15:08:56Z",
      "end_date": "2024-01-01T15:08:57Z",
      "updated_at": "2023-01-05T15:08:55Z",
      "variations": [
        {
          "variation_id": 1,
          "percentage": 50,
          "variation_name": "Variant A",
          "type": "wheelOfFortune"
        },
        {
          "variation_id": 2,
          "percentage": 50,
          "variation_name": "Control Group",
          "type": "wheelOfFortune"
        }
      ],
      "tags": [
        "tagName2"
      ]
    }
  ]
}

400 Bad Request

The following is a sample response for a request where the API key is missing. You need to get your API key from the panel.

{
  "error": "No api key provided"
}

400 Bad Request

The following is a sample response for a request where the payload is invalid. This could be due to various reasons, such as a syntax error, wrong keys in the response, etc.

{
  "error": "invalid request payload"
}

400 Bad Request

The following is a sample response for a request where the required parameter is missing.

{
  "error": "either 'inapp_id' or 'created_between' must be provided"
}

400 Bad Request

The following is a sample response for a request where the payload has both parameters while it requires only one.

{
  "error": "provide either 'inapp_id' or 'created_between', not both"
}

400 Bad Request

The following is a sample response for a request where the date format is incorrect for the from parameter.

{
  "error": "invalid date format for 'from'; expected format is YYYY-MM-DD"
}

400 Bad Request

The following is a sample response for a request where the date format is incorrect for the to parameter.

{
  "error": "invalid date format for 'to'; expected format is YYYY-MM-DD"
}

400 Bad Request

The following is a sample response for a request where the to date is not greater than or equal to the from date.

{
  "error": "'to' date must be after or equal to 'from' date"
}

400 Bad Request

The following is a sample response for a request where the date range exceeds 90 days.

{
  "error": "date range must not exceed 90 days"
}

404 Not Found

The following is a sample response for a request where no inapp is found.

{
  "error": "inapp not found"
}

403 Forbidden

The following is a sample response for a request where the API key is invalid. Refer to API Authentication Tokens to get your API key.

{
  "error": "Invalid api key"
}

Limitations

  • All functions must be executed with a simple HTTPS POST request.

  • The rate limit is 1000 requests per minute.

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

  • The date range must be 90 days or less.

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 is served over the Insider API Gateway and authenticates with OAuth 2.0. Create a credential once in InOne > Settings > Integration Settings > OAuth 2.0 Credentials, exchange it for a bearer token at POST https://gw.useinsider.com/auth/token, and send that token on every call. Token retrieval is not repeated here.

Required scope

Authorizes

Rate limit

mob-get-inapp

POST https://gw.useinsider.com/api/mob/v1/inapp/details

60 requests / 60 seconds, burst 20

Each scope has its own independent rate-limit bucket. The partner is resolved from the partner claim in your token, so no API key or customer identifier is sent in the request body.

inapp_id and created_between stay mutually exclusive, and at least one is required; the range may span at most 90 days. The request and response bodies documented above are unchanged from the legacy API key endpoint.

Sample request

curl -X POST 'https://gw.useinsider.com/api/mob/v1/inapp/details' \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{ "inapp_id": 1434 }'

Allowed values

Field

Values

status

active, passive, awaiting-next-run, scheduled, draft, processing, completed

variations[].type

INAPP, wheelOfFortune, SOCIAL_PROOF, SCRATCH_COUPON, LEAD_GENERATION, WhatsAppTrigger, shopping-trigger, web-lead-collection, web-social-proof, design-agent, SA_SURVEY, NPS

linked_push_type

single, conversion, recurring, geofence

Errors returned by the gateway

The following responses are produced by the Insider API Gateway before your request reaches the product. They all share the same body shape: {"code":"...","message":"..."}.

HTTP

Body

Cause

401

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

The token is missing or invalid.

401

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

The token has expired. Generate a new one.

401

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

The token does not carry the mob-get-inapp scope.

403

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

The source IP is not authorized on the credential. List both IPv4 and IPv6 ranges; an IPv4-only allowlist rejects IPv6 traffic.

405

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

The scope matched, but the HTTP method is wrong. This endpoint accepts POST only.

429

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

The scope rate limit was exceeded. Retry with exponential backoff.

A missing scope returns 401, not 403. 403 means IP restriction only.

A response carrying Via: 1.1 Caddy generally crossed the gateway, which means the error came from the product layer rather than from authentication.

Migration from the API key endpoint

Legacy

OAuth 2.0

URL

POST https://mobile.api.useinsider.com/v1/details/inapp

POST https://gw.useinsider.com/api/mob/v1/inapp/details

Auth

X-API-KEY header

Authorization: Bearer + mob-get-inapp scope

Request body

Identical. The schema does not change.

Response body

Identical. The schema does not change.

The legacy path stays available. The two paths are independent and never accept each other's credentials.