Make a Report Request

See the available parameters below for running a report with SDK or the API.


In [11]: report = springserve.reports.run(start_date="2016-09-19", end_date="2016-09-19",
dimensions=["supply_tag_id"], declared_domains=["nytimes.com", "weather.com"])
In [12]: report.ok
Out [12]: True

In [13]: data = report.to_dataframe()

The variable data is now a Pandas dataframe.

Getting the next pages of your report

Use the get_next_page method to get the next page of your report. The method returns True if it got the next page and False if not, indicating that you are already at the last page.

Note that calling get_next_page overwrites the current data, so when you call to_dataframe the results will only contain the data from the last page that was downloaded.

In[12]: report.get_next_page()
Out[12]: True

Use the get_all_pages method to get the remaining pages (if you're currently at page 2 it will get page 2 onwards) of your report, this will save all the data from the pages it downloads on the report object. Note that if it is a very large report it is best to get one page at a time so you don't run out of memory.

In[12]: report.get_all_pages()


POST /api/v0/report


Content-Type application/json
Authorization "yourAuthToken"

Body (example)

	"start_date": "2015-11-01",
	"end_date": "2015-11-15",
	"interval": "day",
	"dimensions": ["supply_type"]

Required parameters: none


Status code 200

    "date": "2015-11-19 00:00:00",
    "supply_type": null,
    "total_requests": 392841,
    "usable_requests": 299876,
    "blocked_requests": 92965,
    "total_impressions": 40968,
    "flash_impressions": 37497,
    "vast_impressions": 3471,
    "fill_rate": 13.66,
    "flash_errors": 54093,
    "vast_errors": 7,
    "cost": 133.78,
    "revenue": 193.55,
    "profit": 59.77,
    "cpm": 3.27,
    "rpm": 4.72,
    "ppm": 1.46,
    "error_rate": 18.04,
    "usable_request_rate": 76.34
    "date": "2015-11-19 00:00:00",
    "supply_type": "Syndicated",
    "total_requests": 520333,
    "usable_requests": 324776,
    "blocked_requests": 195557,
    "total_impressions": 4795,
    "flash_impressions": 3633,
    "vast_impressions": 1162,
    "fill_rate": 1.48,
    "flash_errors": 18010,
    "vast_errors": 10,
    "cost": 32.32,
    "revenue": 35.5,
    "profit": 3.18,
    "cpm": 6.74,
    "rpm": 7.4,
    "ppm": 0.66,
    "error_rate": 5.55,
    "usable_request_rate": 62.42


Each page of a report is limited to 20,000 rows. To receive the 5th page of your report, you would set the body as such:

Body (example)

	"start_date": "2015-11-01",
	"end_date": "2015-11-15",
	"interval": "day",
	"dimensions": ["supply_type"],
	"page": 5

To receive all pages, you can iterate through the page numbers until you receive an empty page. 

Available parameters

parameteroptions (if applicable)notes
start_date"2015-12-01 00:00:00" or "2015-12-01"
end_date"2015-12-02 00:00:00" or "2015-12-01"
interval"hour", "day", "cumulative"
timezone"UTC", "America/New_York"defaults to America/New_York
date_rangeToday, Yesterday, Last 7 Daysdate_range takes precedence over start_date/end_date
dimensionssupply_tag_id, demand_tag_id, declared_domain, detected_domain, demand_type, supply_type, supply_partner_id, demand_partner_id, supply_group

domain is only available when using date_range of Today, Yesterday, or Last 7 Days

the following parameters act as filters; pass an array of values (usually IDs)

[22423,22375, 25463]

can filter by one or more supply tag
demand_tag_ids[22423,22375, 25463]
declared_domains["nytimes.com", "weather.com"]
detected_domains["nytimes.com", "weather.com"]
demand_types["Vast Only","FLASH"]

Relevant if you have access to multiple account ids. Cannot be a list of ids.

page10The page requested for results over 20K rows. If there are 20,000 entries in your result, you need to call multiple pages, until you get an empty response.