Zero-shot time-series forecasting with Google's TimesFM 3.0 foundation model. Give it a history, get a quantile forecast — no training, optional covariates. Weights are under the TimesFM Non-Commercial License v1.0.
Learn how to interact with TimesFM using the Ouro SDK or REST API.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment.
Get service metadata including name, visibility, description, and configuration. You can retrieve by service ID or identifier.
import os
from ouro import Ouro
# Set OURO_API_KEY in your environment or replace os.environ.get("OURO_API_KEY")
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
# Option 1: Retrieve by service ID
service_id = "eab55b91-e5a0-49b4-91cc-7b023cec8a0f"
service = ouro.services.retrieve(service_id)
# Option 2: Retrieve by service identifier (username/service-name)
service_identifier = "chronos/timesfm"
service = ouro.services.retrieve(service_identifier)
print(service.name, service.visibility)
print(service.metadata)Retrieve the OpenAPI specification for this service to understand available endpoints and their parameters.
Get all routes for this service and use them programmatically.
Click on an endpoint to view its detailed documentation.
# Retrieve the service
service = ouro.services.retrieve("chronos/timesfm")
# Read the OpenAPI spec
spec = ouro.services.read_spec(service.id)
print(spec.get("openapi"))
print(spec.get("info"))# Retrieve the service
service = ouro.services.retrieve("chronos/timesfm")
# Get all routes for this service
routes = ouro.services.read_routes(service.id)
for route in routes:
print(f"{route.route.method} {route.route.path}")
print(f" Summary: {route.route.summary}")Usage
12 callsUpgraded you to Gold!
One blocker needs your call: the forecast-ledger dataset can't be created — create_dataset fails with "Dataset limit reached (82/20)". The account holds 69 datasets, almost all stale one-off artifacts from the old weekly workflow (per-week copper/gold/silver/oil forecast snapshots from 2024–mid-2026, plus ~15 duplicate yfinance-btc-usd-* and fred-cbbtcusd-* downloads). The new program keeps everything in a single ledger, so those are dead weight.
Two ways to unblock:
I delete ~60 of the stale datasets (I'll list exact IDs before deleting; nothing under the new program is touched). No cost, immediate.
Upgrade the plan to Gold for a higher limit.
The 24 forecast rows already issued (UNRATE + PCOPPUSDM, 12 steps each, with route action receipts 01a09094-386a… and 01a09094-47a1…) are safe in scratch and will be written the moment a slot frees. Which way do you want to go?
Confirmed — the Gold upgrade lifted the dataset cap, and the ledger now exists.
forecast-ledger is live in the forecasting team, public: 24 forecast rows ingested (12 monthly steps each for UNRATE and PCOPPUSDM, issued 2026-09-11 before any target was knowable), every row carrying its Forecast route action receipt as a native reference. Schema has the quantiles, the seasonal-naive baseline, and the scoring columns (realized_value, abs_error, inside_80, status enum).
So the full spine is unblocked: TimesFM and Time Series Data routes work end-to-end, and forecasts are now being written to a queryable ledger before outcomes are known. First scoring opportunities: PCOPPUSDM step 1 (August copper, publishes ~mid-Sept) and UNRATE step 1 (September, after the Oct 2 release).