yoftdocs

API ドキュメント

予測

時系列データから予測を作成します。リクエスト形式とレスポンスの読み方を確認できます。

予測の作成

1 つ以上の時系列を送信し、指定した horizon 分の予測値を返します。

POST /v1/forecast

リクエストボディ

フィールド型説明
modelstring使用するモデル ID。利用可能なモデルは GET /v1/models を参照。
seriesobject[]予測対象の系列(1 リクエスト最大 64)。各系列は 16–2048 個の有限な数値が必要(NaN / Infinity / null は拒否)。
series[].namestring | null系列名(省略可)。レスポンスにそのまま echo され、省略時にサーバ側で補完されません。
series[].timestampsstring[] | nullISO 8601 タイムスタンプ(省略可。値と同数・狭義単調増加)。間隔が不揃いな場合は非等間隔のまま扱います(下の「不規則時系列」参照)。等間隔でも受理され、実際の間隔を物理時間としてモデルへ渡し得るため、付けると結果がわずかに変わることがあります(精度は同等)。
series[].groupstring | null同じ値を指定した系列を 1 つの多変量タスクとして joint 予測する(省略時は独立予測)
series[].rolestringtarget(既定)または known_covariate。known_covariate は手がかりとしてのみ使い、予測結果には含めない
horizoninteger予測する未来の点数(1–512)。
frequencystring | null周期のヒント(例 "1h"、省略可)。バリデーションのみでモデルは使用しません。
quantilesnumber[] | null返してほしい分位点(省略可)。0.1, 0.2, … 0.9 の中から重複なしで指定します。指定するとレスポンスの quantiles に指定した分位だけが {"0.1": [...], ...} 形式で入り、values は 0.5 分位と一致します。それ以外の分位や分位点に未対応のモデルへの指定は 400 invalid_request。分位点は output_points に加算されません。
curl
curl -X POST https://YOUR_API_BASE/v1/forecast \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "yoft",
  "series": [
    {
      "name": "target",
      "values": [
        1,
        1.2,
        1.1,
        1.4,
        1.3,
        1.5,
        1.4,
        1.6,
        1.5,
        1.7,
        1.6,
        1.8,
        1.7,
        1.9,
        1.8,
        2
      ]
    }
  ],
  "horizon": 24
}'
Python(標準ライブラリ)
import json
import urllib.request

body = {
    "model": "yoft",
    "series": [
        {
            "name": "target",
            "values": [
                1,
                1.2,
                1.1,
                1.4,
                1.3,
                1.5,
                1.4,
                1.6,
                1.5,
                1.7,
                1.6,
                1.8,
                1.7,
                1.9,
                1.8,
                2
            ]
        }
    ],
    "horizon": 24
}

req = urllib.request.Request(
    "https://YOUR_API_BASE/v1/forecast",
    data=json.dumps(body).encode(),
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
)
with urllib.request.urlopen(req) as res:
    result = json.load(res)

print(result["forecast"][0]["values"])

レスポンス

系列ごとの予測値と usage(消費点数)を返します。request_id は利用ログ・エラーレスポンスと共通です。

200 レスポンス
{
  "request_id": "req_a1b2c3d4e5f67890a1b2c3d4e5f67890",
  "model": "yoft",
  "model_version": "v1",
  "forecast": [
    {
      "name": "target",
      "values": [
        2.1,
        2.2
      ],
      "quantiles": null
    }
  ],
  "usage": {
    "input_points": 16,
    "output_points": 2,
    "series_count": 1
  }
}

多変量(joint 予測)

同じ group を指定した系列は 1 つの多変量タスクとしてまとめて予測します。指定しない場合は系列ごとの独立予測です。

role に known_covariate を指定した系列は、予測の手がかりとしてだけ使われ、予測結果には含まれません(返るのは target のみ)。

不規則時系列(非等間隔のまま予測)

timestamps を付けて送ると、観測間隔がそろっていない系列をそのまま扱えます。欠測を埋めたり等間隔へ整形したりする前処理は不要です。

curl
curl -X POST https://YOUR_API_BASE/v1/forecast \
  -H "Authorization: Bearer $YOFT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "yoft",
    "horizon": 3,
    "series": [{
      "values": [1.0, 1.2, 1.1, 1.4, 1.3, 1.5, 1.4, 1.6, 1.5, 1.7, 1.6, 1.8, 1.7, 1.9, 1.8, 2.0],
      "timestamps": ["2026-01-01T00:00:00Z", "2026-01-01T01:00:00Z", "2026-01-01T02:00:00Z",
                     "2026-01-01T05:00:00Z", "2026-01-01T06:00:00Z", "2026-01-01T07:00:00Z",
                     "2026-01-01T08:00:00Z", "2026-01-01T09:00:00Z", "2026-01-01T12:00:00Z",
                     "2026-01-01T13:00:00Z", "2026-01-01T14:00:00Z", "2026-01-01T15:00:00Z",
                     "2026-01-01T16:00:00Z", "2026-01-01T17:00:00Z", "2026-01-01T18:00:00Z",
                     "2026-01-01T19:00:00Z"]
    }]
  }'

間隔が不揃いな timestamps を等間隔とみなして予測することはなく、補間もしません。timestamps は ISO 8601・値と同数・狭義単調増加が必要です。間隔のばらつきが大きくモデル内部のグリッドに収まらない系列は 400 invalid_request(message に上限の説明)で拒否され、課金は発生しません。