---
title: "POST /v2/{+parent}/models"
method: POST
path: "/v2/{+parent}/models"
tags: ["projects"]
---

# POST /v2/{+parent}/models

`POST /v2/{+parent}/models`

Creates a new model.

## Path parameters

- `parent` string, required

## Query parameters

- `dryRun` boolean

## Request body

- GoogleCloudRetailV2Model — Metadata that describes the training and serving parameters of a Model. A Model can be associated with a ServingConfig and then queried through the Predict API.
  - `name` string — Required. The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40.
  - `updateTime` string, google-datetime — Output only. Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated.
  - `optimizationObjective` string — Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.
  - `displayName` string — Required. The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters.
  - `tuningOperation` string — Output only. The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on.
  - `type` string — Required. The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.
  - `servingState` 'SERVING_STATE_UNSPECIFIED' | 'INACTIVE' | 'ACTIVE' | 'TUNED' — Output only. The serving state of the model: `ACTIVE`, `NOT_ACTIVE`.
  - `modelFeaturesConfig` GoogleCloudRetailV2ModelModelFeaturesConfig — Additional model features config.
    - `frequentlyBoughtTogetherConfig` GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfig — Additional configs for the frequently-bought-together model type.
      - `contextProductsType` 'CONTEXT_PRODUCTS_TYPE_UNSPECIFIED' | 'SINGLE_CONTEXT_PRODUCT' | 'MULTIPLE_CONTEXT_PRODUCTS' — Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS.
  - `trainingState` 'TRAINING_STATE_UNSPECIFIED' | 'PAUSED' | 'TRAINING' — Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.
  - `servingConfigLists` GoogleCloudRetailV2ModelServingConfigList[] — Output only. The list of valid serving configs associated with the PageOptimizationConfig.
    - `servingConfigIds` string[] — Optional. A set of valid serving configs that may be used for `PAGE_OPTIMIZATION`.
  - `lastTuneTime` string, google-datetime — Output only. The timestamp when the latest successful tune finished.
  - `filteringOption` 'RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED' | 'RECOMMENDATIONS_FILTERING_DISABLED' | 'RECOMMENDATIONS_FILTERING_ENABLED' — Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.
  - `periodicTuningState` 'PERIODIC_TUNING_STATE_UNSPECIFIED' | 'PERIODIC_TUNING_DISABLED' | 'ALL_TUNING_DISABLED' | 'PERIODIC_TUNING_ENABLED' — Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.
  - `createTime` string, google-datetime — Output only. Timestamp the Recommendation Model was created at.
  - `dataState` 'DATA_STATE_UNSPECIFIED' | 'DATA_OK' | 'DATA_ERROR' — Output only. The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/retail.md) · [All operations](https://skmtc.net/google/apis/retail/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/retail/versions/146c67e59640/schema)
