Trend
An anomaly detection and forecasting API. Get started quickly with state-of-the-art algorithms.
The API does not require authentication. There’s a limit of 1,000 requests per day per IP. Time series posted to the API are never logged or stored.
You can also run the API on your own infrastructure without any limits.
Anomaly Detection
Detect anomalies in a time series.
- Works with dates and times
- Accounts for seasonality and trend
- Robust to missing values
The current version uses STL with multiple seasonal components for decomposition.
POST /anomalies HTTP/1.1
Host: trendapi.org
Content-Type: application/json
{
"series": {
"2018-01-01": 150,
"2018-01-02": 125,
"2018-01-03": 133
}
}
Returns JSON structured like this:
{
"anomalies": [
"2018-01-10",
"2018-01-13"
]
}
Forecasting
Get future predictions for a time series.
- Works with dates and times
- Accounts for seasonality and trend
- Robust to missing values
- No need to remove outliers beforehand
The current version uses TBATS for predictions.
POST /forecast HTTP/1.1
Host: trendapi.org
Content-Type: application/json
{
"series": {
"2018-01-01": 150,
"2018-01-02": 125,
"2018-01-03": 133
},
"count": 3
}
Returns JSON structured like this:
{
"forecast": {
"2018-03-01": 137.5,
"2018-03-02": 122.9,
"2018-03-03": 144.1
}
}
Correlation (Experimental)
Get the correlation between two time series.
The current version uses normalized cross correlation.
POST /correlation HTTP/1.1
Host: trendapi.org
Content-Type: application/json
{
"series": {
"2018-01-01": 150,
"2018-01-02": 125,
"2018-01-03": 133
},
"series2": {
"2018-01-01": 150,
"2018-01-02": 176,
"2018-01-03": 145
}
}
Returns JSON structured like this:
{
"correlation": 0.95
}
Errors
The API uses HTTP status codes to indicate errors.
Code | Description |
---|---|
400 | There’s an issue with the request parameters. |
403 | Rate limit exceeded. |
500 | We had a problem with our server. |
503 | The request took too long. This likely means the API is under heavy load. |
The body will contain details about the specific error.
{
"error": "Missing parameter: series"
}
Clients
A client library is available for Ruby.
Here’s an example with jQuery:
var series = {}, i, date, data;
for (i = 1; i < 30; i++) {
date = new Date(2018, 3, i);
series[date.toISOString()] = date.getDay();
}
data = {series: series};
$.post("https://trendapi.org/forecast", data, function(resp) {
console.log(resp);
}, "json");
About
This service was created by ankane.
A special thanks to Rob J Hyndman for his incredible work on forecasting. Learn more about the topic from his free online book.
Questions or comments? Contact us.