curl --request POST \
--url https://{domain}/api/v2/network/reports/statistics \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"rangeFrom": "string",
"rangeTo": "string",
"page": 1,
"perPage": 10,
"sortField": "string",
"sortDirection": "asc",
"columns": "string"
}
'import requests
url = "https://{domain}/api/v2/network/reports/statistics"
payload = {
"rangeFrom": "string",
"rangeTo": "string",
"page": 1,
"perPage": 10,
"sortField": "string",
"sortDirection": "asc",
"columns": "string"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rangeFrom: 'string',
rangeTo: 'string',
page: 1,
perPage: 10,
sortField: 'string',
sortDirection: 'asc',
columns: 'string'
})
};
fetch('https://{domain}/api/v2/network/reports/statistics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{domain}/api/v2/network/reports/statistics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rangeFrom' => 'string',
'rangeTo' => 'string',
'page' => 1,
'perPage' => 10,
'sortField' => 'string',
'sortDirection' => 'asc',
'columns' => 'string'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{domain}/api/v2/network/reports/statistics"
payload := strings.NewReader("{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{domain}/api/v2/network/reports/statistics")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/reports/statistics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"timezone": "<string>",
"rows": {
"rows": [
{}
],
"totals": {}
}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}Get statistics (POST)
Returns aggregated performance statistics via POST with filters in body. Supports advanced filter objects for offers, affiliates, countries, sub_ids, etc.
Date range parameters are interpreted in the authenticated user’s timezone and automatically converted to UTC internally.
Use reportType to switch between column sets:
General (default): clicks,cv_total,cv_pending,cv_approved,cv_rejected,tr,revenue,payout,profit,epc,cr,ar
Operator (reportType=operator): adds depatt_total,bet_total,bet_amount,win_total,win_amount,rak,ggr,ngr,kpi_profit,kpi_roi
Broker (reportType=broker): adds depatt_total,payout_cpa,payout_rs,payout_cpl,payout_cpi,payout_cpc,dep_total,dep_amount,bon_amount,wdr_total,wdr_amount,net_dep,chb_total,chb_amount,trd_total,trd_amount,pft_amount,pft_revenue,trd_profit,trd_roi
curl --request POST \
--url https://{domain}/api/v2/network/reports/statistics \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"rangeFrom": "string",
"rangeTo": "string",
"page": 1,
"perPage": 10,
"sortField": "string",
"sortDirection": "asc",
"columns": "string"
}
'import requests
url = "https://{domain}/api/v2/network/reports/statistics"
payload = {
"rangeFrom": "string",
"rangeTo": "string",
"page": 1,
"perPage": 10,
"sortField": "string",
"sortDirection": "asc",
"columns": "string"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
rangeFrom: 'string',
rangeTo: 'string',
page: 1,
perPage: 10,
sortField: 'string',
sortDirection: 'asc',
columns: 'string'
})
};
fetch('https://{domain}/api/v2/network/reports/statistics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{domain}/api/v2/network/reports/statistics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rangeFrom' => 'string',
'rangeTo' => 'string',
'page' => 1,
'perPage' => 10,
'sortField' => 'string',
'sortDirection' => 'asc',
'columns' => 'string'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{domain}/api/v2/network/reports/statistics"
payload := strings.NewReader("{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{domain}/api/v2/network/reports/statistics")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/reports/statistics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rangeFrom\": \"string\",\n \"rangeTo\": \"string\",\n \"page\": 1,\n \"perPage\": 10,\n \"sortField\": \"string\",\n \"sortDirection\": \"asc\",\n \"columns\": \"string\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"timezone": "<string>",
"rows": {
"rows": [
{}
],
"totals": {}
}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}Authorizations
Preferred authentication method. Pass the API key in the X-API-Key HTTP request header. The user account must have api_status enabled.
Body
Supports YYYY-MM-DD and YYYY-MM-DD HH:mm:ss.
Supports YYYY-MM-DD and YYYY-MM-DD HH:mm:ss.
Page number for pagination.
Number of rows per page.
Sort by column key. Default is added_timestamp.
asc, desc Comma-separated metric keys.
Primary grouping dimension.
Additional grouping dimensions (comma-separated).
Report type: general (default), igaming, operator, broker.
general, igaming, operator, broker ISO 4217 currency code to convert all monetary values to (e.g., "USD", "EUR").
Return monetary values in the original currency without conversion. Pass yes to enable.
yes, no Free-text search to filter result rows by name or identifier.
Advanced filters to narrow down results by dimension.
Show child attributes
Show child attributes
Was this page helpful?