Get Aggregated Reporting Data
curl --request POST \
--url https://api.eflow.team/v1/affiliates/reporting/entity/table \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"from": "2026-03-01",
"to": "2026-03-31",
"timezone_id": 67,
"currency_id": "USD",
"columns": [
{
"column": "offer"
}
],
"query": {
"filters": []
}
}
'import requests
url = "https://api.eflow.team/v1/affiliates/reporting/entity/table"
payload = {
"from": "2026-03-01",
"to": "2026-03-31",
"timezone_id": 67,
"currency_id": "USD",
"columns": [{ "column": "offer" }],
"query": { "filters": [] }
}
headers = {
"X-Eflow-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-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '2026-03-01',
to: '2026-03-31',
timezone_id: 67,
currency_id: 'USD',
columns: [{column: 'offer'}],
query: {filters: []}
})
};
fetch('https://api.eflow.team/v1/affiliates/reporting/entity/table', 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://api.eflow.team/v1/affiliates/reporting/entity/table",
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([
'from' => '2026-03-01',
'to' => '2026-03-31',
'timezone_id' => 67,
'currency_id' => 'USD',
'columns' => [
[
'column' => 'offer'
]
],
'query' => [
'filters' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-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://api.eflow.team/v1/affiliates/reporting/entity/table"
payload := strings.NewReader("{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Eflow-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://api.eflow.team/v1/affiliates/reporting/entity/table")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/affiliates/reporting/entity/table")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"table": [
{
"columns": [
{
"column_type": "<string>",
"id": "<string>",
"label": "<string>"
}
],
"reporting": {
"imp": 123,
"total_click": 123,
"unique_click": 123,
"invalid_click": 123,
"duplicate_click": 123,
"ctr": 123,
"cv": 123,
"view_through_cv": 123,
"event": 123,
"cvr": 123,
"evr": 123,
"rpc": 123,
"rpm": 123,
"revenue": 123,
"redirect_traffic_revenue": 123,
"on_hold_conversion_count": 123,
"on_hold_potential_revenue": 123
}
}
]
}Reporting
Get Aggregated Reporting Data
POST
/
affiliates
/
reporting
/
entity
/
table
Get Aggregated Reporting Data
curl --request POST \
--url https://api.eflow.team/v1/affiliates/reporting/entity/table \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"from": "2026-03-01",
"to": "2026-03-31",
"timezone_id": 67,
"currency_id": "USD",
"columns": [
{
"column": "offer"
}
],
"query": {
"filters": []
}
}
'import requests
url = "https://api.eflow.team/v1/affiliates/reporting/entity/table"
payload = {
"from": "2026-03-01",
"to": "2026-03-31",
"timezone_id": 67,
"currency_id": "USD",
"columns": [{ "column": "offer" }],
"query": { "filters": [] }
}
headers = {
"X-Eflow-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-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '2026-03-01',
to: '2026-03-31',
timezone_id: 67,
currency_id: 'USD',
columns: [{column: 'offer'}],
query: {filters: []}
})
};
fetch('https://api.eflow.team/v1/affiliates/reporting/entity/table', 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://api.eflow.team/v1/affiliates/reporting/entity/table",
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([
'from' => '2026-03-01',
'to' => '2026-03-31',
'timezone_id' => 67,
'currency_id' => 'USD',
'columns' => [
[
'column' => 'offer'
]
],
'query' => [
'filters' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-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://api.eflow.team/v1/affiliates/reporting/entity/table"
payload := strings.NewReader("{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Eflow-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://api.eflow.team/v1/affiliates/reporting/entity/table")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/affiliates/reporting/entity/table")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"2026-03-01\",\n \"to\": \"2026-03-31\",\n \"timezone_id\": 67,\n \"currency_id\": \"USD\",\n \"columns\": [\n {\n \"column\": \"offer\"\n }\n ],\n \"query\": {\n \"filters\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"table": [
{
"columns": [
{
"column_type": "<string>",
"id": "<string>",
"label": "<string>"
}
],
"reporting": {
"imp": 123,
"total_click": 123,
"unique_click": 123,
"invalid_click": 123,
"duplicate_click": 123,
"ctr": 123,
"cv": 123,
"view_through_cv": 123,
"event": 123,
"cvr": 123,
"evr": 123,
"rpc": 123,
"rpm": 123,
"revenue": 123,
"redirect_traffic_revenue": 123,
"on_hold_conversion_count": 123,
"on_hold_potential_revenue": 123
}
}
]
}The main reporting endpoint for affiliates. Pivot your performance data by one or more dimensions (offer, country, device, sub-parameters, etc.) over a date range. Returns aggregated metrics including clicks, conversions, revenue, and computed rates.
This endpoint is scoped to the authenticated affiliate’s data only — no affiliate filter is needed. The API key determines which affiliate’s data is returned.
Results are limited to 10,000 rows. Reduce columns or narrow filters to get complete results.
Authorizations
The affiliate's API key generated from the Affiliate Portal. Uses the same X-Eflow-Api-Key header as the Network API, but the key belongs to the affiliate user rather than the network admin.
Body
application/json
Start date for the reporting period. Format YYYY-MM-DD.
End date for the reporting period. Format YYYY-MM-DD.
Timezone identifier for the request.
Currency code for monetary values (e.g. "USD").
Columns to group/pivot data by. Minimum 1, maximum 10. Only one time column (hour, date, week, month, year) is allowed per request.
Required array length:
1 - 10 elementsShow child attributes
Show child attributes
Query configuration.
Show child attributes
Show child attributes
Response
200 - application/json
Array of reporting data rows.
Show child attributes
Show child attributes
Was this page helpful?
⌘I
