Request for Information on Rate Limits, Pagination, and Data Generation for Microsoft Message Trace

Copper Contributor

I am implementing an Integration with Microsoft O365 Reporting API and wanted some support regarding the Microsoft Message Trace API, specifically concerning the following aspects:

  • Rate Limits: Can someone please provide detailed information on the current rate limits applicable to the Message Trace API? Understanding these limits is crucial for optimizing our API usage and ensuring we stay within the allowed thresholds.
  • Pagination Approach: I would appreciate guidance on the recommended pagination approach when querying the API. Specifically, we'd like to know how to handle large datasets efficiently and whether there are best practices or built-in mechanisms for managing pagination in API responses. I am able to hit the API and hence, getting some response but unable to retrieve the Next page or any similar parameter which will allow me navigate to the next page.
  • Generating Additional Data for Reporting: Lastly, I am exploring ways to generate more comprehensive data through the API for reporting purposes. Could anyone advise on any available options or techniques to retrieve a broader range of data points or more detailed logs from the API?
  • Retention Policy: would like to know about the Retention policy of this API. Let me know if it varies from account level permissions/access?

Someone's assistance is greatly appreciated, as it will help me ensure that the integration with Message Trace API is both efficient and compliant with best practices.
Reference links:

https://learn.microsoft.com/en-us/previous-versions/office/developer/o365-enterprise-developers/jj98... 
API Link:
https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MessageTrace[?ODATA%20options] 

Thank you in advance for your support.

3 Replies

@swarada-jalukar 

 

1. Rate Limits
The Microsoft Graph API, which includes the Message Trace API, has specific rate limits to prevent abuse and ensure fair usage. Generally, the limits are:

Per-Minute Limit: Up to 60 requests per minute
Per-Hour Limit: Up to 1000 requests per hour1
These limits can vary based on the type of request and the specific API endpoint being used. It’s important to monitor your API usage and implement retry logic to handle rate limit errors gracefully

 

2. Pagination Approach
When dealing with large datasets, the Microsoft Graph API uses pagination to manage the data efficiently. Here’s how you can handle pagination:

Client-Side Paging: Use query parameters like $top, $skip, or $skipToken to specify the number of results you want in a single page.
Server-Side Paging: The API response includes an @odata.nextLink property that contains the URL for the next page of results. You should use this URL to fetch the next set of results

 

3. Generating Additional Data for Reporting
To generate more comprehensive data through the API, you can leverage various endpoints and parameters to retrieve detailed logs and data points. Some options include:

Using Filters: Apply filters to narrow down the data you need.
Combining Data: Use multiple API endpoints to gather different types of data and combine them for more detailed reports.
Custom Reports: Utilize the Microsoft Graph reports API to access a wide range of usage and activity data


4. Retention Policy
The retention policy for the Message Trace API data typically aligns with the overall retention policies set in your Microsoft 365 environment. Generally, message trace data is retained for up to 90 days. However, this can vary based on your organization’s specific retention settings and compliance requirements

Hi @Kidd_Ip ,

Thanks for the quick response and the useful information. 

  • The API I am currently using: https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MessageTrace[?ODATA options] 
    Is this the same Graph API you're referring to?
    Can you help me in knowing the rate limit of this API? Is this the same you've mentioned in #1 ?
  • While exploring the API, I found that the API is returning the data from past 10days to the max. Exceeding this, it is giving me server error with 500 response code. Is there is any possible way to obtain the data more than this range, as you mentioned that the data retention is 90days according to #4.