---
title: "Foundational Time Series Model Multi Series Cross Validation"
method: POST
path: "/v2/cross_validation"
---

# Foundational Time Series Model Multi Series Cross Validation

`POST /v2/cross_validation`

Perform Cross Validation for multiple series

## Request body

- CrossValidationInput
  - `series` SeriesWithExogenous, required
    - `X` array[], nullable — Historic values of the exogenous features. Each feature must be a list of the same size as the target (y).
      - number[]
    - `y` number[], required — Historic values of the target.
    - `sizes` integer[], required — Sizes of the individual series.
  - `freq` string, required — The frequency of the data represented as a string. 'D' for daily, 'M' for monthly, 'H' for hourly, and 'W' for weekly frequencies are available.
  - `n_windows` integer, required — Number of windows to evaluate.
  - `h` integer, required — The forecasting horizon. This represents the number of time steps into the future that the forecast should predict.
  - `model` string — Model to use as a string. Common options are (but not restricted to) `timegpt-1` and `timegpt-1-long-horizon.` Full options vary by different users. Contact support@nixtla.io for more information. We recommend using `timegpt-1-long-horizon` for forecasting if you want to predict more than one seasonal period given the frequency of your data.
  - `clean_ex_first` boolean — A boolean flag that indicates whether the API should preprocess (clean) the exogenous signal before applying the large time model. If True, the exogenous signal is cleaned; if False, the exogenous variables are applied after the large time model.
  - `level` union[], nullable — A list of values representing the prediction intervals. Each value is a percentage that indicates the level of certainty for the corresponding prediction interval. For example, [80, 90] defines 80% and 90% prediction intervals.
    - union
      - integer
      - number
  - `finetune_steps` integer — The number of tuning steps used to train the large time model on the data. Set this value to 0 for zero-shot inference, i.e., to make predictions without any further model tuning.
  - `finetune_loss` 'default' | 'mae' | 'mse' | 'rmse' | 'mape' | 'smape' | 'poisson' — The loss used to train the large time model on the data. Select from ['default', 'mae', 'mse', 'rmse', 'mape', 'smape']. It will only be used if finetune_steps larger than 0. Default is a robust loss function that is less sensitive to outliers.
  - `finetune_depth` 1 | 2 | 3 | 4 | 5 — The depth of the finetuning. Uses a scale from 1 to 5, where 1 means little finetuning, and 5 means that the entire model is finetuned. By default, the value is set to 1.
  - `finetuned_model_id` string, nullable — ID of previously finetuned model
  - `step_size` integer, nullable — Step size between each cross validation window. If None it will be equal to the forecasting horizon.
  - `hist_exog` integer[], nullable — Zero-based indices of the exogenous features to treat as historical.
  - `refit` boolean — Fine-tune the model in each window. If `False`, only fine-tunes on the first window. Only used if `finetune_steps` > 0.

## Response `200`

Successful Response

- CrossValidationOutput
  - `input_tokens` integer, required
  - `output_tokens` integer, required
  - `finetune_tokens` integer, required
  - `mean` number[], required
  - `sizes` integer[], required
  - `idxs` integer[], required
  - `intervals` object, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/nixtla/apis/nixtla-forecast-api.md) · [All operations](https://skmtc.dev/nixtla/apis/nixtla-forecast-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nixtla/nixtla-forecast-api/revisions/418dbfd4c8ef/schema)
