Data Supplements

Operations for Data Supplements/Reporting Adjustments

The endpoints documented in this section allow you to fetch and manipulate data supplements via the API.

You can learn more about learn more about what data supplements are at the following link: https://helpdesk.everflow.io/customer/data-supplement


Fetch Data Supplements

This endpoint retrieves a structured table of Data Supplements, which represent manual or automated (via integrations) reporting adjustments applied to your network data. Supplements are typically used to correct discrepancies, reconcile billing, or inject offline data into your aggregated reporting statistics.

POST /v1/networks/supplements/table

Optional query filters can be added to the call

Paging

This endpoint supports paging. Refer to our User Guide for usage.

Query filters allow you to limit the scope of the report returned by the API. You could create a filter to limit the reporting data to a single partner for example. You can use multiple filters in a request.

{
  "query": {
    "filters": {
      "network_affiliate_ids": [
        10
      ],
      "network_offer_ids": [
        1,
        2
      ],
      "source_ids": [],
      "supplement_source": "generic"
    },
    //...
  }
}

translates to “Pull data supplements associated to offer_id 1 OR offer_id 2 AND network_affiliate_id 10 AND from the supplement_source of Generic”.

In addition to these filters json source details can be queried for as well

{
  "query": {
    //...,
    "search_terms": [
      {
        "search_type": "json_text",
        "value": "Manual: 1"
      }
    ]
  }
}

The above query will look for data supplements with a “source_details_json” value of “manual”: 1.

from string

Date from which you want to pull data supplements from. In the format “YYYY-MM-DD”

to string

Date to which you want to pull data supplements from. In the format “YYYY-MM-DD”

timezone_id int

Timezone from which you would like your interval to be pulled from

cURL
curl --request GET 'https://api.eflow.team/v1/networks/supplements/table' \
--header 'X-Eflow-API-Key: <INSERT API KEY>' \
--header 'Content-Type: application/json' \
Payload
{
	"to": "2026-02-10",
	"from": "2026-02-01",
	"timezone_id": 80,
	"query": {
		"filters": {
			"network_affiliate_ids": [],
			"network_offer_ids": [],
			"source_ids": []
		},
		"search_terms": [
          {
          "search_type": "json_text",
          "value": "parameter1: 1"
          }
        ]
	}
}
Response
{
  "network_data_supplement_id": 1,
  "network_id": 5,
  "unix_timestamp": 1768032000,
  "supplement_source": "generic",
  "network_offer_id": 1,
  "network_affiliate_id": 10,
  "source_id": "source_id",
  "sub1": "sub1",
  "sub2": "sub2",
  "sub3": "sub3",
  "sub4": "sub4",
  "sub5": "sub5",
  "adv1": "adv1",
  "adv2": "adv2",
  "adv3": "adv3",
  "adv4": "adv4",
  "adv5": "adv5",
  "currency_id": "USD",
  "reporting": {
    "imp": 15000,
    "total_click": 350,
    "unique_click": 300,
    "invalid_click": 10,
    "duplicate_click": 40,
    "gross_click": 350,
    "ctr": 2.333,
    "cv": 15,
    "invalid_cv_scrub": 0,
    "view_through_cv": 1,
    "total_cv": 16,
    "event": 5,
    "cvr": 4.571,
    "evr": 31.25,
    "cpc": 0.429,
    "cpm": 10,
    "cpa": 9.375,
    "epc": 0.286,
    "rpc": 0.714,
    "rpa": 15.625,
    "rpm": 16.667,
    "payout": 150,
    "revenue": 250,
    "event_revenue": 50,
    "gross_sales": 500,
    "profit": 100,
    "margin": 40,
    "roas": 2,
    "avg_sale_value": 31.25,
    "media_buying_cost": 120,
    "on_hold_potential_revenue": 0,
    "on_hold_potential_payout": 0,
    "on_hold_conversion_count": 0,
    "public_events": 0
  },
  "network_offer_payout_revenue_id": 0,
  "source_details_json": "{\"parameter1\": 1, \"parameter2\": 2}",
  "time_created": 1770766284
}

Export Data Supplements

This endpoint behaves similarly to the endpoint above with 2 caveats:

  • This endpoint doesn’t deal with paging so will return all data supplements from the query
  • The data returned from this endpoint will be formatted in either csv or json.

This endpoint takes all the fields from the endpoint listed above with the addition of a format field which will either be csv or json.

POST /v1/networks/supplements/table/stream

cURL
curl --request GET 'https://api.eflow.team/v1/networks/supplements/table/stream' \
--header 'X-Eflow-API-Key: <INSERT API KEY>' \
--header 'Content-Type: application/json' \

Example : Pull all data supplements associated with offer_id 1 and affiliate_id 10 in JSON format.

{
  "format": "json",
  "from": "2026-01-11",
  "query": {
    "filters": {
      "network_affiliate_ids": [
        10
      ],
      "network_offer_ids": [
        1
      ],
      "source_ids": []
    },
    "search_terms": []
  },
  "timezone_id": 80,
  "to": "2026-02-11"
}

Create Data supplements

This endpoint allows you to programmatically inject/ create reporting adjustments into your network’s data.

POST /v1/networks/supplements

unix_timestamp int

The timestamp in which you would like the data to be placed in your reporting

supplement_source string

This tells us what source this data supplement is coming from. The allowed value to be coming form the API is “generic”.

source_details_json object

This field will take a json object used to give more context surrounding the data supplement being added. If left empty or emitted will be given the value {}.

network_offer_id int

The Id of the offer you would like this data supplement to be applied to.

network_affiliate_id string

The Id of the affiliate you would like this data supplement to be applied to.

source_id string

The source_id that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

sub1 string

The sub1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

sub2 string

The sub2 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

sub3 string

The sub3 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

sub4 string

The sub4 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

sub5 string

The sub5 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

adv1 string

The adv1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

adv2 string

The adv1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

adv3 string

The adv1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

adv4 string

The adv1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

adv5 string

The adv1 that will be associated to the data supplement being created. If left empty or emitted will be given the value “".

reporting object
imp int

The impression data to be added in reporting. If left empty or emitted will be given the value 0.

total_clicks int

The total_clicks to be added in reporting. If left empty or emitted will be given the value 0.

unique_clicks int

The unique_click total to be added in reporting. If left empty or emitted will be given the value 0.

invalid_click int

The invalid_click total to be added in reporting. If left empty or emitted will be given the value 0.

duplicate_click int

The duplicate_click total to be added in reporting. If left empty or emitted will be given the value 0.

gross_click int

The gross_click total to be added in reporting. If left empty or emitted will be given the value 0.

cv int

The conversion total to be added in reporting. If left empty or emitted will be given the value 0.

invalid_cv_scrub int

The conversion total that was scrubbed/throttled to be added in reporting. If left empty or emitted will be given the value 0.

view_through_cv int

The conversion total that came from view-through traffic to be added in reporting. If left empty or emitted will be given the value 0.

event int

The events total to be added in reporting. If left empty or emitted will be given the value 0.

public_events int

The public_events total to be added in reporting, this won’t be displayed back into the response but is recorded in reporting. If left empty or emitted will be given the value 0.

payout int

The payout total to be added in reporting. If left empty or emitted will be given the value 0.

revenue int

The revenue total to be added in reporting. If left empty or emitted will be given the value 0.

event_revenue int

The event_revenue total to be added in reporting. If left empty or emitted will be given the value 0.

gross_sales int

The gross_sale total to be added in reporting. If left empty or emitted will be given the value 0.

media_buying_cost int

The the media buying spend total to be added in reporting. If left empty or emitted will be given the value 0.

cURL
curl --request GET 'https://api.eflow.team/v1/networks/supplements' \
--header 'X-Eflow-API-Key: <INSERT API KEY>' \
--header 'Content-Type: application/json' \
{
  "unix_timestamp": 1768032000,
  "supplement_source": "generic",
  "network_offer_id": 1,
  "network_affiliate_id": 10,
  "source_id": "source_id",
  "currency_id": "USD",
  "source_details_json": "{\"parameter1\": 1, \"parameter2\": 2}",
  "sub1": "sub1",
  "sub2": "sub2",
  "sub3": "sub3",
  "sub4": "sub4",
  "sub5": "sub5",
  "adv1": "adv1",
  "adv2": "adv2",
  "adv3": "adv3",
  "adv4": "adv4",
  "adv5": "adv5",
  "reporting": {
    "imp": 15000,
    "total_click": 350,
    "unique_click": 300,
    "invalid_click": 10,
    "duplicate_click": 40,
    "gross_click": 350,
    "cv": 15,
    "invalid_cv_scrub": 0,
    "view_through_cv": 1,
    "event": 5,
    "public_events": 4,
    "payout": 150.00,
    "revenue": 200.00,
    "event_revenue": 50.00,
    "gross_sales": 500.00,
    "media_buying_cost": 120.00
  }
}
Response
{
  "network_data_supplement_id": 1,
  "network_id": 5,
  "unix_timestamp": 1768032000,
  "supplement_source": "generic",
  "network_offer_id": 1,
  "network_affiliate_id": 10,
  "source_id": "source_id",
  "sub1": "sub1",
  "sub2": "sub2",
  "sub3": "sub3",
  "sub4": "sub4",
  "sub5": "sub5",
  "adv1": "adv1",
  "adv2": "adv2",
  "adv3": "adv3",
  "adv4": "adv4",
  "adv5": "adv5",
  "currency_id": "USD",
  "reporting": {
    "imp": 15000,
    "total_click": 350,
    "unique_click": 300,
    "invalid_click": 10,
    "duplicate_click": 40,
    "gross_click": 350,
    "ctr": 2.333,
    "cv": 15,
    "invalid_cv_scrub": 0,
    "view_through_cv": 1,
    "total_cv": 16,
    "event": 5,
    "cvr": 4.571,
    "evr": 31.25,
    "cpc": 0.429,
    "cpm": 10,
    "cpa": 9.375,
    "epc": 0.286,
    "rpc": 0.714,
    "rpa": 15.625,
    "rpm": 16.667,
    "payout": 150,
    "revenue": 250,
    "event_revenue": 50,
    "gross_sales": 500,
    "profit": 100,
    "margin": 40,
    "roas": 2,
    "avg_sale_value": 31.25,
    "media_buying_cost": 120,
    "on_hold_potential_revenue": 0,
    "on_hold_potential_payout": 0,
    "on_hold_conversion_count": 0,
    "public_events": 0
  },
  "network_offer_payout_revenue_id": 0,
  "source_details_json": "{\"parameter1\": 1, \"parameter2\": 2}",
  "time_created": 1770766284
}

Revert Data Supplements

This endpoint allows you to undo or negate previously applied reporting adjustments. By triggering a reversal, you ensure that specific data supplements are removed from your reporting aggregates, effectively restoring the data to its state prior to the adjustment.

POST /v1/networks/supplements/revert

cURL
curl --request GET 'https://api.eflow.team/v1/networks/supplements/revert' \
--header 'X-Eflow-API-Key: <INSERT API KEY>' \
--header 'Content-Type: application/json' \
Example Payload
{
  "data_supplement_ids": [
    1,
    2,
    3,
    ...
  ]
}
Response
{
	"result": true
}