> AffiliateOS Help Center. Index of every article for AI tools: https://www.affiliateos.ai/help/llms.txt

# Export data or use the Reporting API

Reporting · For publishers, networks · Updated 30 October 2026
Web version: https://www.affiliateos.ai/help/reporting/export-data-reporting-api

For a spreadsheet, use **Download CSV**: on **Conversions** for one row per conversion, or under **Reporting**, then **Offer Performance** for one row per offer. For a job that runs on its own, read the same data from the Reporting API with your publisher API key.

## Before you start

- A login to the portal. Export from a seat with **Earnings & billing visibility**. On other seats the Offer Performance file leaves out **Earnings**, and `conversions.csv` still has a **Payout** column that reads 0 on every row.
- For the API: a publisher API key. The account owner or an admin makes one on **My Profile**, under **API Keys**, with **Generate Key**. Network keys don't read reports.

## Publishers

### Conversions, then Download CSV

Set **From** and **To**, choose **Apply**, then **Download CSV**. The file, `conversions.csv`, holds every conversion the dates match, not only the page on screen. Each row is one conversion:

| Column | What it holds |
|---|---|
| Action ID | The conversion's ID, the same as the postback's `action_id` |
| Offer, Conversion | The offer's title and the step, such as Install |
| Sub ID | Your user's ID, or the wall's `uid` |
| Status | `completed`, `reversed` or `rejected` |
| Reason, Reversed On | Why and when a reversed conversion was taken back |
| Payout | What we pay you, in USD |
| User Reward | The player's reward in USD, when your account shows user rewards |
| Country, Time | The user's country, and when the conversion came in, in your browser's time zone |

> **A file holds the newest 10,000 conversions in its range.** If the count under the table reads 10,000, there may be more than that in your dates. Export a shorter range, a week or a day at a time.

**From** and **To** are UTC dates, and **To** is read as midnight at the start of its date. To export all of 29 October, set **From** to 29 October and **To** to 30 October.

### Reporting, then Offer Performance, then Download CSV

Keep **All time**, or pick a date range, then choose **Download CSV**. The file is `offer-performance-all-time.csv`, or `offer-performance-2026-10-01-to-2026-10-29.csv` for a range, with one row per offer: **Offer**, **Offer ID**, **Clicks**, **Conversions**, **Events**, **Earnings** and **CVR %**. Rows follow the sort you chose on screen.

### Check it worked

The success message counts the rows it exported. Compare it with the count under the **Conversions** table for the same dates: the two match.

## Networks

### Reporting, then Offer Performance, then Download CSV

The **Offer Reporting** page covers all time. **Download CSV** saves `offer-performance.csv`, one row per offer: **Offer**, **Offer ID**, **Clicks**, **Conversions**, **Events**, **Revenue**, **CVR %** and **EVR %**.

Network API keys read offers only, so there's no reporting call for networks today. For conversions as they happen, use your postback URL under **Workspace settings**.

## Read it from the Reporting API

Send your publisher API key in `x-api-key`. Every endpoint answers JSON.

| Endpoint | What it returns |
|---|---|
| `GET /publisher/conversions` | One row per conversion, the same fields as `conversions.csv`, 500 at most per page |
| `GET /publisher/performance/daily` | Conversions and payout per UTC day, the last 90 days by default |
| `GET /publisher/dashboard-report` | The dashboard's numbers grouped by day, week, month, quarter, year, offer, platform or country |
| `GET /publisher/stats` | Lifetime totals for each offer |
| `GET /publisher/traffic-quality` | Users whose conversions are rejected right now, and why |

```bash
curl -G "https://affiliateos.xyz/publisher/performance/daily" \
  -d from=2026-10-01 -d to=2026-10-29 \
  -H "x-api-key: $PEBBLE_PUBLISHER_KEY"
```

[Pull conversions instead](https://www.affiliateos.ai/help/postbacks/pull-conversions-reporting-api) walks through paging and matching rows to your postbacks.

## Opening the files

Every value is quoted, so commas inside offer titles stay in their column. Times on **Conversions** are written as your browser shows them; if you combine exports from people in different time zones, convert them to UTC first.
