Forecasting, as an API.
Temporis turns your time series into probabilistic forecasts. Stream your numbers in, describe how they should be read with a data profile, and call one endpoint to generate forecasts of what comes next — no models to train, no infrastructure to run.
Start here
Quickstart →
Go from an API key to your first forecast in about five minutes.
Understand
How forecasting works →
The idea behind Temporis: treating a time series like a language a model can read.
Reference
API reference →
Exact request and response shapes for every endpoint.
The shape of a Temporis workflow
Everything in Temporis revolves around three nouns. Once they click, the whole API follows naturally.
(timestamp, name, value) rows. One data source can hold many series./v1/predict with a data profile returns several possible futures, each a full trajectory of values going forward.You manage data sources and data profiles in the Temporis dashboard, and you do the high-volume work — sending data and requesting forecasts — through the API documented here.
A first taste
Sending observations and asking for a forecast looks like this:
# 1. Send observations to a data source
curl -X POST "https://api.temporis.co/v1/data_sources/ingest" \
-H "Authorization: Bearer $TEMPORIS_TOKEN" \
--json '{
"data_source": "store_metrics",
"records": [
{ "timestamp": 1716249600, "name": "orders", "value": 42 },
{ "timestamp": 1716253200, "name": "orders", "value": 51 }
]
}'
# 2. Ask a data profile for the next steps
curl -X POST "https://api.temporis.co/v1/predict" \
-H "Authorization: Bearer $TEMPORIS_TOKEN" \
--json '{
"data_profile": "hourly_orders",
"count": 5,
"temperature": 1.0,
"top_p": 0.9
}'import os, requests
BASE = "https://api.temporis.co"
headers = {"Authorization": f"Bearer {os.environ['TEMPORIS_TOKEN']}"}
# 1. Send observations to a data source
requests.post(f"{BASE}/v1/data_sources/ingest", headers=headers, json={
"data_source": "store_metrics",
"records": [
{"timestamp": 1716249600, "name": "orders", "value": 42},
{"timestamp": 1716253200, "name": "orders", "value": 51},
],
}).raise_for_status()
# 2. Ask a data profile for the next steps
forecast = requests.post(f"{BASE}/v1/predict", headers=headers, json={
"data_profile": "hourly_orders",
"count": 5,
"temperature": 1.0,
"top_p": 0.9,
}).json()
print(forecast["predictions"][0]["data"])const BASE = "https://api.temporis.co";
const headers = {
"Authorization": `Bearer ${process.env.TEMPORIS_TOKEN}`,
"Content-Type": "application/json",
};
// 1. Send observations to a data source
await fetch(`${BASE}/v1/data_sources/ingest`, {
method: "POST",
headers,
body: JSON.stringify({
data_source: "store_metrics",
records: [
{ timestamp: 1716249600, name: "orders", value: 42 },
{ timestamp: 1716253200, name: "orders", value: 51 },
],
}),
});
// 2. Ask a data profile for the next steps
const res = await fetch(`${BASE}/v1/predict`, {
method: "POST",
headers,
body: JSON.stringify({
data_profile: "hourly_orders",
count: 5,
temperature: 1.0,
top_p: 0.9,
}),
});
const forecast = await res.json();
console.log(forecast.predictions[0].data);Start with How forecasting works. It explains the mental model behind Temporis before you touch the API, and the rest of the docs will read more easily for it.
Where to go next
Data sources
How Temporis stores observations and how to send them well.
Data profiles
Every setting that shapes how your data is read and forecast.
Predictions & sampling
Reading forecasts, and what count, temperature, and top_p do.
Working with samples
Turn many sample trajectories into intervals and point forecasts.