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

# POST /v1/{+parent}/indexEndpoints

`POST /v1/{+parent}/indexEndpoints`

Creates an IndexEndpoint.

## Path parameters

- `parent` string, required

## Request body

- GoogleCloudAiplatformV1IndexEndpoint — Indexes are deployed into it. An IndexEndpoint can have multiple DeployedIndexes.
  - `privateServiceConnectConfig` GoogleCloudAiplatformV1PrivateServiceConnectConfig — Represents configuration for private service connect.
    - `enablePrivateServiceConnect` boolean — Required. If true, expose the IndexEndpoint via private service connect.
    - `projectAllowlist` string[] — A list of Projects from which the forwarding rule will target the service attachment.
    - `pscAutomationConfigs` GoogleCloudAiplatformV1PSCAutomationConfig[] — Optional. List of projects and networks where the PSC endpoints will be created. This field is used by Online Inference(Prediction) only.
      - `projectId` string — Required. Project id used to create forwarding rule.
      - `ipAddress` string — Output only. IP address rule created by the PSC service automation.
      - `forwardingRule` string — Output only. Forwarding rule created by the PSC service automation.
      - `state` 'PSC_AUTOMATION_STATE_UNSPECIFIED' | 'PSC_AUTOMATION_STATE_SUCCESSFUL' | 'PSC_AUTOMATION_STATE_FAILED' — Output only. The state of the PSC service automation.
      - `network` string — Required. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/get): `projects/{project}/global/networks/{network}`.
      - `errorMessage` string — Output only. Error message if the PSC service automation failed.
    - `serviceAttachment` string — Output only. The name of the generated service attachment resource. This is only populated if the endpoint is deployed with PrivateServiceConnect.
  - `createTime` string, google-datetime — Output only. Timestamp when this IndexEndpoint was created.
  - `labels` object — The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
  - `updateTime` string, google-datetime — Output only. Timestamp when this IndexEndpoint was last updated. This timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g. due to updates of the original Indexes they are the deployments of.
  - `etag` string — Used to perform consistent read-modify-write updates. If not set, a blind "overwrite" update happens.
  - `enablePrivateServiceConnect` boolean — Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.
  - `network` string — Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name.
  - `publicEndpointEnabled` boolean — Optional. If true, the deployed index will be accessible through public endpoint.
  - `displayName` string — Required. The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
  - `deployedIndexes` GoogleCloudAiplatformV1DeployedIndex[] — Output only. The indexes deployed in this endpoint.
    - `index` string — Required. The name of the Index this is the deployment of. We may refer to this Index as the DeployedIndex's "original" Index.
    - `createTime` string, google-datetime — Output only. Timestamp when the DeployedIndex was created.
    - `enableDatapointUpsertLogging` boolean — Optional. If true, logs to Cloud Logging errors relating to datapoint upserts. Under normal operation conditions, these log entries should be very rare. However, if incompatible datapoint updates are being uploaded to an index, a high volume of log entries may be generated in a short period of time. Note that logs may incur a cost, especially if the deployed index receives a high volume of datapoint upserts. Estimate your costs before enabling this option.
    - `pscAutomationConfigs` GoogleCloudAiplatformV1PSCAutomationConfig[] — Optional. If set for PSC deployed index, PSC connection will be automatically created after deployment is done and the endpoint information is populated in private_endpoints.psc_automated_endpoints.
      - `projectId` string — Required. Project id used to create forwarding rule.
      - `ipAddress` string — Output only. IP address rule created by the PSC service automation.
      - `forwardingRule` string — Output only. Forwarding rule created by the PSC service automation.
      - `state` 'PSC_AUTOMATION_STATE_UNSPECIFIED' | 'PSC_AUTOMATION_STATE_SUCCESSFUL' | 'PSC_AUTOMATION_STATE_FAILED' — Output only. The state of the PSC service automation.
      - `network` string — Required. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/get): `projects/{project}/global/networks/{network}`.
      - `errorMessage` string — Output only. Error message if the PSC service automation failed.
    - `reservedIpRanges` string[] — Optional. A list of reserved ip ranges under the VPC network that can be used for this DeployedIndex. If set, we will deploy the index within the provided ip ranges. Otherwise, the index might be deployed to any ip ranges under the provided VPC network. The value should be the name of the address (https://cloud.google.com/compute/docs/reference/rest/v1/addresses) Example: ['vertex-ai-ip-range']. For more information about subnets and network IP ranges, please see https://cloud.google.com/vpc/docs/subnets#manually_created_subnet_ip_ranges.
    - `deployedIndexAuthConfig` GoogleCloudAiplatformV1DeployedIndexAuthConfig — Used to set up the auth on the DeployedIndex's private endpoint.
      - `authProvider` GoogleCloudAiplatformV1DeployedIndexAuthConfigAuthProvider — Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
        - `audiences` string[] — The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted.
        - `allowedIssuers` string[] — A list of allowed JWT issuers. Each entry must be a valid Google service account, in the following format: `service-account-name@project-id.iam.gserviceaccount.com`
    - `indexSyncTime` string, google-datetime — Output only. The DeployedIndex may depend on various data on its original Index. Additionally when certain changes to the original Index are being done (e.g. when what the Index contains is being changed) the DeployedIndex may be asynchronously updated in the background to reflect these changes. If this timestamp's value is at least the Index.update_time of the original Index, it means that this DeployedIndex and the original Index are in sync. If this timestamp is older, then to see which updates this DeployedIndex already contains (and which it does not), one must list the operations that are running on the original Index. Only the successfully completed Operations with update_time equal or before this sync time are contained in this DeployedIndex.
    - `automaticResources` GoogleCloudAiplatformV1AutomaticResources — A description of resources that to large degree are decided by Agent Platform, and require only a modest additional configuration. Each Model supporting these resources documents its specific guidelines.
      - `minReplicaCount` integer — Immutable. The minimum number of replicas that will be always deployed on. If traffic against it increases, it may dynamically be deployed onto more replicas up to max_replica_count, and as traffic decreases, some of these extra replicas may be freed. If the requested value is too large, the deployment will error.
      - `maxReplicaCount` integer — Immutable. The maximum number of replicas that may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale to that many replicas is guaranteed (barring service outages). If traffic increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, a no upper bound for scaling under heavy traffic will be assume, though Agent Platform may be unable to scale beyond certain replica number.
    - `privateEndpoints` GoogleCloudAiplatformV1IndexPrivateEndpoints — IndexPrivateEndpoints proto is used to provide paths for users to send requests via private endpoints (e.g. private service access, private service connect). To send request via private service access, use match_grpc_address. To send request via private service connect, use service_attachment.
      - `serviceAttachment` string — Output only. The name of the service attachment resource. Populated if private service connect is enabled.
      - `pscAutomatedEndpoints` GoogleCloudAiplatformV1PscAutomatedEndpoints[] — Output only. PscAutomatedEndpoints is populated if private service connect is enabled if PscAutomatedConfig is set.
        - `network` string — Corresponding network in pscAutomationConfigs.
        - `matchAddress` string — Ip Address created by the automated forwarding rule.
        - `projectId` string — Corresponding project_id in pscAutomationConfigs
      - `matchGrpcAddress` string — Output only. The ip address used to send match gRPC requests.
    - `deploymentTier` 'DEPLOYMENT_TIER_UNSPECIFIED' | 'STORAGE' — Optional. The deployment tier that the index is deployed to. DEPLOYMENT_TIER_UNSPECIFIED will use a system-chosen default tier.
    - `dedicatedResources` GoogleCloudAiplatformV1DedicatedResources — A description of resources that are dedicated to a DeployedModel or DeployedIndex, and that need a higher degree of manual configuration.
      - `spot` boolean — Optional. If true, schedule the deployment workload on [spot VMs](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms).
      - `machineSpec` GoogleCloudAiplatformV1MachineSpec — Specification of a single machine.
        - `reservationAffinity` GoogleCloudAiplatformV1ReservationAffinity — A ReservationAffinity can be used to configure a Vertex AI resource (e.g., a DeployedModel) to draw its Compute Engine resources from a Shared Reservation, or exclusively from on-demand capacity.
          - `key` string — Optional. Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, use `compute.googleapis.com/reservation-name` as the key and specify the name of your reservation as its value.
          - `reservationAffinityType` 'TYPE_UNSPECIFIED' | 'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION' — Required. Specifies the reservation affinity type.
          - `values` string[] — Optional. Corresponds to the label values of a reservation resource. This must be the full resource name of the reservation or reservation block.
        - `gpuPartitionSize` string — Optional. Immutable. The Nvidia GPU partition size. When specified, the requested accelerators will be partitioned into smaller GPU partitions. For example, if the request is for 8 units of NVIDIA A100 GPUs, and gpu_partition_size="1g.10gb", the service will create 8 * 7 = 56 partitioned MIG instances. The partition size must be a value supported by the requested accelerator. Refer to [Nvidia GPU Partitioning](https://cloud.google.com/kubernetes-engine/docs/how-to/gpus-multi#multi-instance_gpu_partitions) for the available partition sizes. If set, the accelerator_count should be set to 1.
        - `tpuTopology` string — Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: "2x2x1").
        - `machineType` string — Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/gemini-enterprise-agent-platform/machine-learning/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/gemini-enterprise-agent-platform/machine-learning/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required.
        - `acceleratorCount` integer — The number of accelerators to attach to the machine. For [accelerator optimized machine types](https://cloud.google.com/compute/docs/accelerator-optimized-machines), One may set the accelerator_count from 1 to N for machine with N GPUs. If accelerator_count is less than or equal to N / 2, Agent Platform co-schedules the replicas of the model into the same VM to save cost. For example, if the machine type is a3-highgpu-8g, which has 8 H100 GPUs, one can set accelerator_count to 1 to 8. If accelerator_count is 1, 2, 3, or 4, Agent Platform co-schedules 8, 4, 2, or 2 replicas of the model into the same VM to save cost. When co-scheduling, CPU, memory and storage on the VM will be distributed to replicas on the VM. For example, one can expect a co-scheduled replica requesting 2 GPUs out of a 8-GPU VM will receive 25% of the CPU, memory and storage of the VM. Note that the feature is not compatible with multihost_gpu_node_count. When multihost_gpu_node_count is set, the co-scheduling will not be enabled.
        - `acceleratorType` 'ACCELERATOR_TYPE_UNSPECIFIED' | 'NVIDIA_TESLA_K80' | 'NVIDIA_TESLA_P100' | 'NVIDIA_TESLA_V100' | 'NVIDIA_TESLA_P4' | 'NVIDIA_TESLA_T4' | 'NVIDIA_TESLA_A100' | 'NVIDIA_A100_80GB' | 'NVIDIA_L4' | 'NVIDIA_H100_80GB' | 'NVIDIA_H100_MEGA_80GB' | 'NVIDIA_H200_141GB' | 'NVIDIA_B200' | 'NVIDIA_GB200' | 'NVIDIA_RTX_PRO_6000' | 'TPU_V2' | 'TPU_V3' | 'TPU_V4_POD' | 'TPU_V5_LITEPOD' — Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
      - `autoscalingMetricSpecs` GoogleCloudAiplatformV1AutoscalingMetricSpec[] — Immutable. The metric specifications that overrides a resource utilization metric (CPU utilization, accelerator's duty cycle, and so on) target value (default to 60 if not set). At most one entry is allowed per metric. If machine_spec.accelerator_count is above 0, the autoscaling will be based on both CPU utilization and accelerator's duty cycle metrics and scale up when either metrics exceeds its target value while scale down if both metrics are under their target value. The default target value is 60 for both metrics. If machine_spec.accelerator_count is 0, the autoscaling will be based on CPU utilization metric only with default target value 60 if not explicitly set. For example, in the case of Online Prediction, if you want to override target CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `aiplatform.googleapis.com/prediction/online/cpu/utilization` and autoscaling_metric_specs.target to `80`.
        - `metricName` string — Required. The resource metric name. Supported metrics: * For Online Prediction: * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `aiplatform.googleapis.com/prediction/online/cpu/utilization` * `aiplatform.googleapis.com/prediction/online/request_count` * `pubsub.googleapis.com/subscription/num_undelivered_messages` * `prometheus.googleapis.com/vertex_dcgm_fi_dev_gpu_util` * `prometheus.googleapis.com/vertex_vllm_gpu_cache_usage_perc` * `prometheus.googleapis.com/vertex_vllm_num_requests_waiting`
        - `target` integer — The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided.
      - `minReplicaCount` integer — Required. Immutable. The minimum number of machine replicas that will be always deployed on. This value must be greater than or equal to 1. If traffic increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed.
      - `maxReplicaCount` integer — Immutable. The maximum number of replicas that may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale to that many replicas is guaranteed (barring service outages). If traffic increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Agent Platform CPU and GPU quotas. Specifically, you will be charged for (max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type).
      - `requiredReplicaCount` integer — Optional. Number of required available replicas for the deployment to succeed. This field is only needed when partial deployment/mutation is desired. If set, the deploy/mutate operation will succeed once available_replica_count reaches required_replica_count, and the rest of the replicas will be retried. If not set, the default required_replica_count will be min_replica_count.
    - `deploymentGroup` string — Optional. The deployment group can be no longer than 64 characters (eg: 'test', 'prod'). If not set, we will use the 'default' deployment group. Creating `deployment_groups` with `reserved_ip_ranges` is a recommended practice when the peered network has multiple peering ranges. This creates your deployments from predictable IP spaces for easier traffic administration. Also, one deployment_group (except 'default') can only be used with the same reserved_ip_ranges which means if the deployment_group has been used with reserved_ip_ranges: [a, b, c], using it with [a, b] or [d, e] is disallowed. Note: we only support up to 5 deployment groups(not including 'default').
    - `enableAccessLogging` boolean — Optional. If true, private endpoint's access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each MatchRequest. Note that logs may incur a cost, especially if the deployed index receives a high queries per second rate (QPS). Estimate your costs before enabling this option.
    - `displayName` string — The display name of the DeployedIndex. If not provided upon creation, the Index's display_name is used.
    - `id` string — Required. The user specified ID of the DeployedIndex. The ID can be up to 128 characters long and must start with a letter and only contain letters, numbers, and underscores. The ID must be unique within the project it is created in.
  - `satisfiesPzi` boolean — Output only. Reserved for future use.
  - `name` string — Output only. The resource name of the IndexEndpoint.
  - `description` string — The description of the IndexEndpoint.
  - `publicEndpointDomainName` string — Output only. If public_endpoint_enabled is true, this field will be populated with the domain name to use for this index endpoint.
  - `satisfiesPzs` boolean — Output only. Reserved for future use.
  - `encryptionSpec` GoogleCloudAiplatformV1EncryptionSpec — Represents a customer-managed encryption key specification that can be applied to a Vertex AI resource.
    - `kmsKeyName` string — Required. Resource name of the Cloud KMS key used to protect the resource. The Cloud KMS key must be in the same region as the resource. It must have the format `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.

## Response `200`

Successful response

---

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