Authenticate with OAuth 2.0 and include the DeveloperToken, CustomerId, and AccountId SOAP headers.
Construct a report request object (e.g. CampaignPerformanceReportRequest) with ReportName, Aggregation (Daily, Weekly, Monthly, or Summary), Columns array, time Period, and Filter criteria.
Submit the request by calling SubmitGenerateReport; capture the ReportRequestId from the response.
Poll PollGenerateReport with the ReportRequestId at intervals until ReportRequestStatus.Status is Success or Error.
On Success, download the report from the ReportDownloadUrl provided in the response; the file is a ZIP archive containing a CSV.
Parse the CSV, noting that the first few rows are headers and metadata — the actual data rows begin after the column header row.
Known gotchas
The report download URL is temporary; download the file as soon as the status is Success, as the URL will expire.
Column compatibility varies by report type — requesting incompatible column combinations returns a ReportingServiceFault; verify allowed columns in the report type schema.
Reports covering long date ranges may take several minutes to generate; implement polling with backoff rather than immediate re-requests to avoid service throttling.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp