# Upload your results per campaign

Uploads your results per campaign.

```http
POST https://api.pozy.ai/v1/ads/campaign-results
```

- Area: Ads / Ad Campaign Results
- Auth: Authorization: Bearer pz_live_...

## Header parameters

- `Idempotency-Key` (string)

## Request body

Content type: `application/json`

- `rows`, array of object, required: At least 1 item. Up to 1000 items
  - `date`, string (date), required
  - `campaignId`, string
  - `utmCampaign`, string
  - `campaignName`, string
  - `adAccountId`, string
  - `values`, map of number, required

## Example request

```bash
curl -X POST "https://api.pozy.ai/v1/ads/campaign-results" \
  -H "Authorization: Bearer $POZY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "rows": [
    {
      "date": "2026-10-02T09:00:00.000Z",
      "values": {
        "key": 12.5
      }
    }
  ]
}'
```

```ts
import { randomUUID } from "node:crypto";

const res = await fetch("https://api.pozy.ai/v1/ads/campaign-results", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.POZY_API_KEY}`,
    "Idempotency-Key": randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    rows: [
      {
        date: "2026-10-02T09:00:00.000Z",
        values: {
          key: 12.5
        }
      }
    ]
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);
```

```python
import os
import requests

resp = requests.post(
    "https://api.pozy.ai/v1/ads/campaign-results",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    json={
        "rows": [
            {
                "date": "2026-10-02T09:00:00.000Z",
                "values": {
                    "key": 12.5,
                },
            },
        ],
    },
    timeout=30,
)
resp.raise_for_status()
print(resp.json())
```

## Response 202

- `uploadId`, string, required
- `rows`, integer, required
- `status`, string, required: One of `queued`

```json
{
  "uploadId": "63236654bcc14def96dd5cc5",
  "rows": 1,
  "status": "queued"
}
```
