---
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

## 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 — If specified, only points that match this filter will be updated, others will be inserted
      - 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
              - …
            - 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
              - …
            - 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
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
      - 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 — If specified, only points that match this filter will be updated, others will be inserted
      - 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
              - …
            - 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
              - …
            - 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
              - …
            - NestedCondition
              - …
            - Filter — recursive
          - Condition[]
            - union
              - …
          - unknown
      - 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', required — `Acknowledged` - Request is saved to WAL and will be process in a queue. `Completed` - Request is completed, changes are actual.

## Other responses

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

## Changes

- **2025-11-17** `d09f337ca2f3` — 5 breaking, 9 info
  - removed `subschema #3, subschema #4, subschema #5, subschema #6` from the `anyOf[#/components/schemas/PointsBatch]/batch/vectors` request property `anyOf` list
  - the request property `anyOf[#/components/schemas/PointsList]/points/items/vector/anyOf[#/components/schemas/Document]/options` became not nullable
  - the request property `anyOf[#/components/schemas/PointsList]/points/items/vector/anyOf[subschema #3]/additionalProperties/anyOf[#/components/schemas/Document]/options` became not nullable
  - the `anyOf[#/components/schemas/PointsList]/points/items/vector/anyOf[#/components/schemas/Document]/options` request property type/format changed from `object`/`` to ``/``
  - …10 more
- **2025-04-15** `5d330acca4cd` — 2 breaking, 6 info
  - removed the required property `usage/anyOf[#/components/schemas/HardwareUsage]/io_read` from the response with the `200` status
  - removed the required property `usage/anyOf[#/components/schemas/HardwareUsage]/io_write` from the response with the `200` status
  - added the required property `usage/anyOf[#/components/schemas/HardwareUsage]/payload_index_io_read` to the response with the `200` status
  - added the required property `usage/anyOf[#/components/schemas/HardwareUsage]/payload_index_io_write` to the response with the `200` status
  - …4 more
- …earlier changes not shown

[Full history](https://skmtc.dev/qdrant/apis/qdrant-api/changes/collections/:collection_name/points/put.md)

---

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