Loading article…
Loading article…
Last updated on Aug 29, 2026
Maxio provides a comprehensive API for running reports and exporting their data programmatically. Use it to automate recurring report pulls, sync report data into your own systems, or build custom integrations, instead of relying on the Maxio user interface to run and download reports manually.
The Reports API allows you to:
The Reports API uses the following base endpoints:
/{your-instance}/api/v1.0/reports/definitions//{your-instance}/api/v1.0/reports/runs//{your-instance}/api/v1.0/reports/exports/Replace
{your-instance}with your specific Maxio instance identifier. You can find this in your account settings or by checking the URL when logged into your Maxio dashboard.
All API requests require proper authentication. Refer to the main API documentation for details on authentication methods and required headers. For complete API reference documentation, including all available parameters and response schemas, consult the OpenAPI documentation available in your Maxio instance.
Before running reports, you may want to explore what reports are available in your account. Report Definitions are read-only through this API. You can list and retrieve them, but creating, editing, or deleting a report definition requires the Maxio user interface.
GET /{your-instance}/api/v1.0/reports/definitions/Available Filters:
name=Revenue - Filter by report name (partial match).description=monthly - Filter by description (partial match).type=financial - Filter by report type.tag=important - Filter by applied tags.one_click_report_group=uuid - Filter by one-click report group.created_by=123 - Filter by user who created the report.modified__gte=2025-01-01T00:00:00.000000 - Filter by modification date.Sorting Options:
id, name, description, type, created_by, one_click_report_group, modifiedGET /{your-instance}/api/v1.0/reports/definitions/123/This returns the complete structure of a specific report definition, including its configuration and parameters.
To execute a report, make a POST request to /{your-instance}/api/v1.0/reports/runs/ with one of the following approaches:
Option A: Using a Report Definition ID
POST /{your-instance}/api/v1.0/reports/runs/
{
"report_definition": 123,
"export_format_name": "csv"
}Option B: Using a One-Click Report UUID
POST /{your-instance}/api/v1.0/reports/runs/
{
"one_click_report": "uuid-string-here",
"export_format_name": "csv"
}Available Export Formats:
"csv" - Legacy CSV format"gsheets" - Legacy Google Sheets format"ucsv" - Unified CSV format"tgsheets" - Tabbed Google Sheets format"xlsx" - Excel format"xlsx1d" - OneDrive format
"ucsv"only works for reports built on the Generic Report Builder, such as Advanced Subscription Momentum, Finance Details by Transaction, and Days Sales Outstanding. Requesting it for any other report type fails.
The API response includes the run ID and URL for tracking progress:
{
"id": "456",
"url": "/api_path/reports/runs/456/"
}Check the execution status by making a GET request to the run URL:
GET /{your-instance}/api/v1.0/reports/runs/456/The response includes detailed status information:
{
"id": 456,
"status": "Completed",
"duration_secs": "12.5",
"timestamp": "2025-01-15T10:30:00Z",
"user_full_name": "John Doe",
"report_name": "Monthly Sales Report",
"report_type": "sales_summary",
"failure_message": null
}Possible Status Values:
"Running" - Report is currently executing."Completed" - Report finished successfully."Failed" - Report execution failed.Wait until the
statusbecomes"Completed"before proceeding to retrieve results.
You have two options for accessing the report results:
Option A: Direct CSV Download (for smaller reports)
GET /{your-instance}/api/v1.0/reports/runs/456/?mode=csvThis streams the CSV data directly in the response. This method is ideal for smaller reports that can be processed immediately.
Option B: Create a Persistent Export (recommended for larger reports)
POST /{your-instance}/api/v1.0/reports/exports/
{
"report_run": 456,
"format_name": "csv"
}GET /{your-instance}/api/v1.0/reports/exports/789/The response includes export details:
{
"id": 789,
"status": "Completed",
"report_run": 456,
"format_name": "csv",
"timestamp": "2025-01-15T10:35:00Z",
"url": "https://storage.example.com/exports/report_789.csv",
"failure_message": null
}Export Status Values:
"Scheduled" - Export is queued for processing."Running" - Export is being generated."Completed" - Export is ready for download."Failed" - Export generation failed."Viewed" - Export has been accessed."Completed", retrieve the file:GET /{your-instance}/api/v1.0/reports/exports/789/?redirect=1The redirect=1 parameter redirects you directly to the downloadable file.
View all your report runs with optional filtering and sorting:
GET /{your-instance}/api/v1.0/reports/runs/Available Filters:
report_definition=123 - Filter by specific report definition ID.one_click_report=uuid - Filter by one-click report UUID.status=Completed - Filter by status (Running, Completed, Failed).user=456 - Filter by user ID who ran the report.report_name=Sales - Filter by report name (partial match).report_type=summary - Filter by report type.timestamp__gte=2025-01-01T00:00:00.000000 - Filter by date range (after).timestamp__lt=2025-02-01T00:00:00.000000 - Filter by date range (before).Sorting Options:
Use the sort parameter with any of these fields:
timestamp - Sort by execution time.duration_secs - Sort by execution duration.user - Sort by the ID of the user who ran the report.user_full_name - Sort by user name.report_name - Sort by report name.report_type - Sort by report type.data_format - Sort by data format.report_definition - Sort by report definition ID.status - Sort by status.Example with filters:
GET /{your-instance}/api/v1.0/reports/runs/?status=Completed&report_type=sales&sort=timestampSimilarly, you can list and filter exports:
GET /{your-instance}/api/v1.0/reports/exports/Available Filters:
report_run=456 - Filter by specific report run ID.report_definition=123 - Filter by report definition ID.status=Completed - Filter by export status.format_name=csv - Filter by export format.report_name=Monthly - Filter by report name (partial match).report_type=summary - Filter by report type.timestamp__gte=2025-01-01T00:00:00.000000 - Filter by date range.Sorting Options:
report_run, report_definition, timestamp, format_name, report_name, report_type, statusExample:
GET /{your-instance}/api/v1.0/reports/exports/?status=Completed&format_name=csv&sort=timestampexport_format_name when creating a report run to automatically trigger export creation, especially for larger datasets.report_definition or one_click_report when creating a run, but never both.YYYY-MM-DDTHH:MM:SS.000000 (e.g., 2025-01-15T14:30:00.000000).page parameter for large result sets and check the next and previous URLs in responses for navigation.Common scenarios to handle in your implementation:
failure_message field.failure_message field in the response for specific error details.mode=csv parameter only for smaller reports.For an overview of exporting data from Maxio, including how to initiate an export from the user interface, see Understand Data Export.
Still need help?
Reach out and our support team will take it from here.