# Campaign performance report

> POST /v1/properties/{propertyId}/reports/campaigns: Date ranges are limited to 31 days.

<div class="api-endpoint"><span class="api-method api-method--post">POST</span><span class="api-path">/v1/properties/<span class="api-path-param">&#123;propertyId&#125;</span>/reports/campaigns</span></div>

## Authentication

**bearerAuth**: API key created in the dashboard (<code>atk&#95;...</code>). Send it in the `Authorization: Bearer YOUR_API_KEY` header.

## Path parameters

<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">propertyId</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-desc">Property id</div>
</div>
</div>

## Request body

<div class="api-media"><span class="api-media-type">application/json</span><span class="api-badge api-badge--required">required</span></div>

<div class="api-schema">
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">from</code><span class="api-field-type">string · date</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-desc">Inclusive start date in the report time zone</div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Format</span> YYYY-MM-DD, e.g. <code>2026-01-31</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">to</code><span class="api-field-type">string · date</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-desc">Inclusive end date in the report time zone</div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Format</span> YYYY-MM-DD, e.g. <code>2026-01-31</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">attribution</code><span class="api-field-type">string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>last-ad-click</code> <code>first-ad-click</code></span><span class="api-fact"><span class="api-fact-label">Default</span> <code>last-ad-click</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">groupBy</code><span class="api-field-type">string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>campaign</code> <code>adset</code> <code>ad</code></span><span class="api-fact"><span class="api-fact-label">Default</span> <code>campaign</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">metrics</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>20</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>80</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">conversionEvents</code><span class="api-field-type">array of string</span></div>
<div class="api-field-desc">Defaults to the property conversion events</div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>20</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>64</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">filters</code><span class="api-field-type">object</span></div>
<details class="api-children">
<summary>Show 6 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">channel</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">platform</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">adNetwork</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">campaignIds</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">adsetIds</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">adIds</code><span class="api-field-type">array of string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min items</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max items</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Item min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Item max length</span> <code>256</code></span></div>
</div>
</div>
</details>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">sort</code><span class="api-field-type">object</span></div>
<details class="api-children">
<summary>Show 2 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">metric</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>spend</code> <code>impressions</code> <code>reach</code> <code>frequency</code> <code>linkClicks</code> <code>sessions</code> <code>clients</code> <code>eventValues</code> <code>results</code> <code>resultValues</code> <code>cpm</code> <code>cpc</code> <code>ctr</code> <code>roas</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">direction</code><span class="api-field-type">string</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>asc</code> <code>desc</code></span><span class="api-fact"><span class="api-fact-label">Default</span> <code>desc</code></span></div>
</div>
</div>
</details>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">limit</code><span class="api-field-type">integer</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Default</span> <code>50</code></span><span class="api-fact"><span class="api-fact-label">Min</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max</span> <code>100</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">cursor</code><span class="api-field-type">string</span></div>
<div class="api-field-desc"><code>nextCursor</code> from the previous page</div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Min length</span> <code>1</code></span><span class="api-fact"><span class="api-fact-label">Max length</span> <code>2048</code></span></div>
</div>
</div>
</div>

## Responses

### 200 Successful response

<div class="api-media"><span class="api-media-type">application/json</span></div>

<div class="api-schema">
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">data</code><span class="api-field-type">array of object</span><span class="api-badge api-badge--required">required</span></div>
<details class="api-children">
<summary>Show 7 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">id</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">type</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>campaign</code> <code>adset</code> <code>ad</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">name</code><span class="api-field-type">string &#124; null</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">channel</code><span class="api-field-type">string &#124; null</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">adNetwork</code><span class="api-field-type">string &#124; null</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">status</code><span class="api-field-type">string &#124; null</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>active</code> <code>paused</code> <code>terminated</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">metrics</code><span class="api-field-type">map of (number &#124; null)</span><span class="api-badge api-badge--required">required</span></div>
</div>
</div>
</details>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">nextCursor</code><span class="api-field-type">string &#124; null</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">report</code><span class="api-field-type">object</span><span class="api-badge api-badge--required">required</span></div>
<details class="api-children">
<summary>Show 8 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">propertyId</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">from</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">to</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">timezone</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">currency</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">attribution</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>last-ad-click</code> <code>first-ad-click</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">groupBy</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>campaign</code> <code>adset</code> <code>ad</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">conversionEvents</code><span class="api-field-type">array of string</span><span class="api-badge api-badge--required">required</span></div>
</div>
</div>
</details>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">summary</code><span class="api-field-type">map of (number &#124; null) &#124; null</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-desc">Totals for the whole query; returned only on the first page</div>
</div>
</div>
</div>

### 400 Invalid request

<div class="api-media"><span class="api-media-type">application/json</span></div>

<div class="api-schema">
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">error</code><span class="api-field-type">object</span><span class="api-badge api-badge--required">required</span></div>
<details class="api-children">
<summary>Show 5 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">code</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-facts"><span class="api-fact"><span class="api-fact-label">Allowed values</span> <code>invalid&#95;request</code> <code>invalid&#95;cursor</code> <code>unauthenticated</code> <code>api&#95;access&#95;unavailable</code> <code>not&#95;found</code> <code>payload&#95;too&#95;large</code> <code>rate&#95;limited</code> <code>response&#95;too&#95;large</code> <code>upstream&#95;timeout</code> <code>service&#95;unavailable</code> <code>internal&#95;error</code></span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">message</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">requestId</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">retryable</code><span class="api-field-type">boolean</span><span class="api-badge api-badge--required">required</span></div>
<div class="api-field-desc">Whether retrying the request can succeed</div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">details</code><span class="api-field-type">array of object</span></div>
<details class="api-children">
<summary>Show 2 child attributes</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">path</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">message</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
</div>
</details>
</div>
</div>
</details>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">message</code><span class="api-field-type">string</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">code</code><span class="api-field-type">string</span></div>
</div>
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">issues</code><span class="api-field-type">array of object</span></div>
<details class="api-children">
<summary>Show 1 child attribute</summary>
<div class="api-fields">
<div class="api-field">
<div class="api-field-head"><code class="api-field-name">message</code><span class="api-field-type">string</span><span class="api-badge api-badge--required">required</span></div>
</div>
</div>
</details>
</div>
</div>
</div>

### 401 Missing, invalid or deleted API key

Same response body as [400](#400-invalid-request).

### 403 API access unavailable on the plan

Same response body as [400](#400-invalid-request).

### 404 Unknown or inaccessible property

Same response body as [400](#400-invalid-request).

### 413 Request body too large

Same response body as [400](#400-invalid-request).

### 429 Rate limit exceeded; see Retry-After

Same response body as [400](#400-invalid-request).

### 503 Temporarily unavailable; retry with backoff

Same response body as [400](#400-invalid-request).

### 504 The query timed out; narrow the date range or retry

Same response body as [400](#400-invalid-request).

## Request example

Synthesized command template. Replace path placeholders and provide request-body.json matching the schema above; add query parameters as needed. This is not a recorded request or response.

```sh
curl --request POST 'https://api.anytrack.io/v1/properties/{propertyId}/reports/campaigns' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data @request-body.json
```

[Download the OpenAPI contract](/api/openapi.json).
