---
title: "Upsert points"
method: PUT
path: "/collections/{collection_name}/points"
tags: ["Points"]
---

# Upsert points

`PUT /collections/{collection_name}/points`

Perform insert + updates on points. If point with given ID already exists - it will be overwritten.

## Path parameters

- `collection_name` string, required

## Query parameters

- `wait` boolean
- `ordering` 'weak' | 'medium' | 'strong' — Defines write ordering guarantees for collection operations * `weak` - write operations may be reordered, works faster, default * `medium` - write operations go through dynamically selected leader, may be inconsistent for a short period of time in case of leader change * `strong` - Write operations go through the permanent leader, consistent, but may be unavailable if leader is down
- `timeout` integer

## Request body

- union
  - PointsBatch
    - `batch` Batch, required
      - `ids` ExtendedPointId[], required
        - union — Type, used for specifying point ID in user interface
          - integer
          - string, uuid
      - `vectors` union, required
        - array[]
          - number[]
        - array[]
          - array[]
            - number[]
        - object
        - Document[]
          - `text` string, required — Text of the document. This field will be used as input for the embedding model.
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` union — Additional options for the model, will be passed to the inference service as-is. See model cards for available options.
            - union — Option variants for text documents. Ether general-purpose options or BM25-specific options. BM25-specific will only take effect if the `qdrant/bm25` is specified as a model.
              - …
            - unknown
        - Image[]
          - `image` string, required — Image data: base64 encoded image or an URL
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` object, nullable — Parameters for the model Values of the parameters are model-specific
        - InferenceObject[]
          - `object` unknown, required
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` object, nullable — Parameters for the model Values of the parameters are model-specific
      - `payloads` union[], nullable
        - union
          - Payload
          - unknown
    - `shard_key` union
      - union
        - union
          - string
          - integer
        - ShardKey[]
          - union
            - string
            - integer
        - ShardKeyWithFallback
          - `target` union, required
            - string
            - integer
          - `fallback` union, required
            - string
            - integer
      - unknown
    - `update_filter` union — Filter to apply when updating existing points. Only points matching this filter will be updated. Points that don't match will keep their current state. New points will be inserted regardless of the filter.
      - Filter
        - `should` union — At least one of those conditions should match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
        - `min_should` union — At least minimum amount of given conditions should match
          - MinShould
            - `conditions` Condition[], required
              - …
            - `min_count` integer, required
          - unknown
        - `must` union — All conditions must match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
        - `must_not` union — All conditions must NOT match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
      - unknown
    - `update_mode` union — Mode of the upsert operation: insert_only, upsert (default), update_only
      - 'upsert' | 'insert_only' | 'update_only' — Defines the mode of the upsert operation * `upsert` - default mode, insert new points, update existing points * `insert_only` - only insert new points, do not update existing points * `update_only` - only update existing points, do not insert new points
      - unknown
  - PointsList
    - `points` PointStruct[], required
      - `id` union, required — Type, used for specifying point ID in user interface
        - integer
        - string, uuid
      - `vector` union, required — Full vector data per point separator with single and multiple vector modes
        - number[]
        - array[]
          - number[]
        - object
        - Document — WARN: Work-in-progress, unimplemented Text document for embedding. Requires inference infrastructure, unimplemented.
          - `text` string, required — Text of the document. This field will be used as input for the embedding model.
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` union — Additional options for the model, will be passed to the inference service as-is. See model cards for available options.
            - union — Option variants for text documents. Ether general-purpose options or BM25-specific options. BM25-specific will only take effect if the `qdrant/bm25` is specified as a model.
              - …
            - unknown
        - Image — WARN: Work-in-progress, unimplemented Image object for embedding. Requires inference infrastructure, unimplemented.
          - `image` string, required — Image data: base64 encoded image or an URL
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` object, nullable — Parameters for the model Values of the parameters are model-specific
        - InferenceObject — WARN: Work-in-progress, unimplemented Custom object for embedding. Requires inference infrastructure, unimplemented.
          - `object` unknown, required
          - `model` string, required — Name of the model used to generate the vector. List of available models depends on a provider.
          - `options` object, nullable — Parameters for the model Values of the parameters are model-specific
      - `payload` union — Payload values (optional)
        - Payload
        - unknown
    - `shard_key` union
      - union
        - union
          - string
          - integer
        - ShardKey[]
          - union
            - string
            - integer
        - ShardKeyWithFallback
          - `target` union, required
            - string
            - integer
          - `fallback` union, required
            - string
            - integer
      - unknown
    - `update_filter` union — Filter to apply when updating existing points. Only points matching this filter will be updated. Points that don't match will keep their current state. New points will be inserted regardless of the filter.
      - Filter
        - `should` union — At least one of those conditions should match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
        - `min_should` union — At least minimum amount of given conditions should match
          - MinShould
            - `conditions` Condition[], required
              - …
            - `min_count` integer, required
          - unknown
        - `must` union — All conditions must match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
        - `must_not` union — All conditions must NOT match
          - union
            - FieldCondition — All possible payload filtering conditions
              - …
            - IsEmptyCondition — Select points with empty payload for a specified field
              - …
            - IsNullCondition — Select points with null payload for a specified field
              - …
            - HasIdCondition — ID-based filtering condition
              - …
            - HasVectorCondition — Filter points which have specific vector assigned
              - …
            - SliceCondition — Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
      - unknown
    - `update_mode` union — Mode of the upsert operation: insert_only, upsert (default), update_only
      - 'upsert' | 'insert_only' | 'update_only' — Defines the mode of the upsert operation * `upsert` - default mode, insert new points, update existing points * `insert_only` - only insert new points, do not update existing points * `update_only` - only update existing points, do not insert new points
      - unknown

## Response `200`

successful operation

- object
  - `usage` union
    - Usage — Usage of the hardware resources, spent to process the request
      - `hardware` union
        - HardwareUsage — Usage of the hardware resources, spent to process the request
          - `cpu` integer, required
          - `payload_io_read` integer, required
          - `payload_io_write` integer, required
          - `payload_index_io_read` integer, required
          - `payload_index_io_write` integer, required
          - `vector_io_read` integer, required
          - `vector_io_write` integer, required
        - unknown
      - `inference` union
        - InferenceUsage
          - `models` object, required
        - unknown
    - unknown
  - `time` number, float — Time spent to process this request
  - `status` string
  - `result` UpdateResult
    - `operation_id` integer, nullable — Sequential number of the operation
    - `status` 'acknowledged' | 'completed' | 'wait_timeout', required — `Acknowledged` - Request is saved to WAL and will be process in a queue. `Completed` - Request is completed, changes are actual. `WaitTimeout` - Request is waiting for timeout.

## Other responses

- `default` — error
- `4XX` — error

---

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