# GET - View In-App campaign

The get endpoint allows you to get details about an In-App campaign using its unique token.

### Request structure

#### Route

The In-App campaigns API exposes a GET endpoint at: `https://api.batch.com/1.1/BATCH_API_KEY/in-app-campaigns/CAMPAIGN_TOKEN`

Here are examples of valid cURL, PHP or Python requests syntax:

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X GET "https://api.batch.com/1.1/BATCH_API_KEY/in-app-campaigns/CAMPAIGN_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Authorization: BATCH_REST_API_KEY"
```

{% endtab %}

{% tab title="PHP" %}

```php
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request("GET", "https://api.batch.com/1.1/BATCH_API_KEY/in-app-campaigns/CAMPAIGN_TOKEN", [
	"headers" => [
		"Content-Type" => "application/json",
		"X-Authorization" => "BATCH_REST_API_KEY"
	]
]);
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, json
response = requests.request("GET", "https://api.batch.com/1.1/BATCH_API_KEY/in-app-campaigns/CAMPAIGN_TOKEN",
	headers={
		'Content-Type': 'application/json'
		'X-Authorization': 'BATCH_REST_API_KEY'
	}
)
```

{% endtab %}
{% endtabs %}

> **Note**: Only LIVE API Keys are supported by this API

#### Headers

In order to authenticate with the API, you need to provide your **company REST API Key** as the value of the `X-Authorization` header. You can find it in ⚙ Settings → General.

### Responses

#### Success

If the GET to the API endpoint is successfull you will receive an HTTP 200 confirmation and details about your In-App campaign.

The output format is the same than the one used to [create a campaign](https://doc.batch.com/developer/api/mep/in-app-campaigns-api/create), except that the four following fields are added :

<table><thead><tr><th width="195.5">Id</th><th>Description</th></tr></thead><tbody><tr><td><code>campaign_token</code></td><td><strong>String</strong> -<br>The token number of the campaign.</td></tr><tr><td><code>from_api</code></td><td><strong>Boolean</strong> -<br>Value that indicates whether or not the campaign were created with the API. `false` value means the campaign were created with the dashboard.</td></tr><tr><td><code>dev_only</code></td><td><strong>Boolean</strong> -<br>Value that indicates whether or not the campaign only targets developers.</td></tr><tr><td><code>created_date</code></td><td><strong>String</strong> -<br>Creation date of the campaign.</td></tr></tbody></table>

Here is an example of output :

```json
{
  "campaign_token": "70448bafec76439d534ec98ea7ab712c",
  "from_api": true,
  "dev_only": false,
  "created_date": "2018-08-13T10:11:38",
  "name": "In-App campaign name",
  "live": true,
  "end_date": "2018-10-31T17:30:00",
  "trigger": {
    "capping": 10,
    "when": "next_session",
    "grace_period": {
      "every": 2,
      "unit": "HOURS"
    }
  },
  "targeting": {
    "segments": ["ONE_TIME", "ENGAGED", "NEW"]
  },
  "landing": {
    "theme": "THEME_CODE",
    "contents": [
      {
        "language": "fr",
        "title": "Landing title",
        "body": "Landing body",
        "actions": [
          {
            "action": "DISMISS",
            "label": "Ok"
          }
        ]
      }
    ]
  }
}
```

#### Failure

If the GET data does not meet the API requirements you will receive an actionable error message. Contact us at <support@batch.com> if you need further support.

* `AUTHENTICATION_INVALID` (Http status code: 401, Error code: 10)
* `API_MISUSE` (Http status code: 403, Error code: 12)
* `ROUTE_NOT_FOUND` (Http status code: 404, Error code: 20)
* `SERVER_ERROR` (Http status code: 500, Error code: 0)
* `TOO_MANY_REQUESTS` (Http status code: 429, Error code: 60)\
  If you get a "too many requests" response, please wait for at least 5 seconds before trying again. Further requests might still return this error.
