openapi: 3.0.1
info:
title: Qdrant Aliases Points API
description: "API description for Qdrant vector search engine.\n\nThis document describes CRUD and search operations on collections of points (vectors with payload).\n\nQdrant supports any combinations of `should`, `min_should`, `must` and `must_not` conditions, which makes it possible to use in applications when object could not be described solely by vector. It could be location features, availability flags, and other custom properties businesses should take into account.\n## Examples\nThis examples cover the most basic use-cases - collection creation and basic vector search.\n### Create collection\nFirst - let's create a collection with dot-production metric.\n```\ncurl -X PUT 'http://localhost:6333/collections/test_collection' \\\n -H 'Content-Type: application/json' \\\n --data-raw '{\n \"vectors\": {\n \"size\": 4,\n \"distance\": \"Dot\"\n }\n }'\n\n```\nExpected response:\n```\n{\n \"result\": true,\n \"status\": \"ok\",\n \"time\": 0.031095451\n}\n```\nWe can ensure that collection was created:\n```\ncurl 'http://localhost:6333/collections/test_collection'\n```\nExpected response:\n```\n{\n \"result\": {\n \"status\": \"green\",\n \"segments_count\": 5,\n \"disk_data_size\": 0,\n \"ram_data_size\": 0,\n \"config\": {\n \"params\": {\n \"vectors\": {\n \"size\": 4,\n \"distance\": \"Dot\"\n }\n },\n \"hnsw_config\": {\n \"m\": 16,\n \"ef_construct\": 100,\n \"full_scan_threshold\": 10000\n },\n \"optimizer_config\": {\n \"deleted_threshold\": 0.2,\n \"vacuum_min_vector_number\": 1000,\n \"default_segment_number\": 2,\n \"max_segment_size\": null,\n \"memmap_threshold\": null,\n \"indexing_threshold\": 20000,\n \"flush_interval_sec\": 5,\n \"max_optimization_threads\": null\n },\n \"wal_config\": {\n \"wal_capacity_mb\": 32,\n \"wal_segments_ahead\": 0\n }\n }\n },\n \"status\": \"ok\",\n \"time\": 2.1199e-05\n}\n```\n\n### Add points\nLet's now add vectors with some payload:\n```\ncurl -L -X PUT 'http://localhost:6333/collections/test_collection/points?wait=true' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"points\": [\n {\"id\": 1, \"vector\": [0.05, 0.61, 0.76, 0.74], \"payload\": {\"city\": \"Berlin\"}},\n {\"id\": 2, \"vector\": [0.19, 0.81, 0.75, 0.11], \"payload\": {\"city\": [\"Berlin\", \"London\"] }},\n {\"id\": 3, \"vector\": [0.36, 0.55, 0.47, 0.94], \"payload\": {\"city\": [\"Berlin\", \"Moscow\"] }},\n {\"id\": 4, \"vector\": [0.18, 0.01, 0.85, 0.80], \"payload\": {\"city\": [\"London\", \"Moscow\"] }},\n {\"id\": 5, \"vector\": [0.24, 0.18, 0.22, 0.44], \"payload\": {\"count\": [0]}},\n {\"id\": 6, \"vector\": [0.35, 0.08, 0.11, 0.44]}\n ]\n}'\n```\nExpected response:\n```\n{\n \"result\": {\n \"operation_id\": 0,\n \"status\": \"completed\"\n },\n \"status\": \"ok\",\n \"time\": 0.000206061\n}\n```\n### Search with filtering\nLet's start with a basic request:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"vector\": [0.2,0.1,0.9,0.7],\n \"top\": 3\n}'\n```\nExpected response:\n```\n{\n \"result\": [\n { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n { \"id\": 1, \"score\": 1.273, \"payload\": null, \"version\": 0 },\n { \"id\": 3, \"score\": 1.208, \"payload\": null, \"version\": 0 }\n ],\n \"status\": \"ok\",\n \"time\": 0.000055785\n}\n```\nBut result is different if we add a filter:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"filter\": {\n \"should\": [\n {\n \"key\": \"city\",\n \"match\": {\n \"value\": \"London\"\n }\n }\n ]\n },\n \"vector\": [0.2, 0.1, 0.9, 0.7],\n \"top\": 3\n}'\n```\nExpected response:\n```\n{\n \"result\": [\n { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n { \"id\": 2, \"score\": 0.871, \"payload\": null, \"version\": 0 }\n ],\n \"status\": \"ok\",\n \"time\": 0.000093972\n}\n```\n"
contact:
email: andrey@vasnetsov.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: master
servers:
- url: '{protocol}://{hostname}:{port}'
variables:
protocol:
enum:
- http
- https
default: http
hostname:
default: localhost
port:
default: '6333'
security:
- api-key: []
- bearerAuth: []
- {}
tags:
- name: Points
description: Float-point vectors with payload.
paths:
/collections/{collection_name}/points/{id}:
get:
tags:
- Points
summary: Get point
description: Retrieve full information of single point by id
operationId: get_point
parameters:
- name: collection_name
in: path
description: Name of the collection to retrieve from
required: true
schema:
type: string
- name: id
in: path
description: Id of the point
required: true
schema:
$ref: '#/components/schemas/ExtendedPointId'
- name: consistency
in: query
description: Define read consistency guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/ReadConsistency'
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/Record'
/collections/{collection_name}/points:
post:
tags:
- Points
summary: Get points
description: Retrieve multiple points by specified IDs
operationId: get_points
requestBody:
description: List of points to retrieve
content:
application/json:
schema:
$ref: '#/components/schemas/PointRequest'
parameters:
- name: collection_name
in: path
description: Name of the collection to retrieve from
required: true
schema:
type: string
- name: consistency
in: query
description: Define read consistency guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/ReadConsistency'
- name: timeout
in: query
description: If set, overrides global timeout for this request. Unit is seconds.
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
type: array
items:
$ref: '#/components/schemas/Record'
put:
tags:
- Points
summary: Upsert points
description: Perform insert + updates on points. If point with given ID already exists - it will be overwritten.
operationId: upsert_points
requestBody:
description: Operation to perform on points
content:
application/json:
schema:
$ref: '#/components/schemas/PointInsertOperations'
parameters:
- name: collection_name
in: path
description: Name of the collection to update from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/delete:
post:
tags:
- Points
summary: Delete points
description: Delete points
operationId: delete_points
requestBody:
description: Operation to perform on points
content:
application/json:
schema:
$ref: '#/components/schemas/PointsSelector'
parameters:
- name: collection_name
in: path
description: Name of the collection to delete from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/vectors:
put:
tags:
- Points
summary: Update vectors
description: Update specified named vectors on points, keep unspecified vectors intact.
operationId: update_vectors
requestBody:
description: Update named vectors on points
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateVectors'
parameters:
- name: collection_name
in: path
description: Name of the collection to update from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/vectors/delete:
post:
tags:
- Points
summary: Delete vectors
description: Delete named vectors from the given points.
operationId: delete_vectors
requestBody:
description: Delete named vectors from points
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteVectors'
parameters:
- name: collection_name
in: path
description: Name of the collection to delete from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/payload:
post:
tags:
- Points
summary: Set payload
description: Set payload values for points
operationId: set_payload
requestBody:
description: Set payload on points
content:
application/json:
schema:
$ref: '#/components/schemas/SetPayload'
parameters:
- name: collection_name
in: path
description: Name of the collection to set from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
put:
tags:
- Points
summary: Overwrite payload
description: Replace full payload of points with new one
operationId: overwrite_payload
requestBody:
description: Payload and points selector
content:
application/json:
schema:
$ref: '#/components/schemas/SetPayload'
parameters:
- name: collection_name
in: path
description: Name of the collection to set from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/payload/delete:
post:
tags:
- Points
summary: Delete payload
description: Delete specified key payload for points
operationId: delete_payload
requestBody:
description: delete payload on points
content:
application/json:
schema:
$ref: '#/components/schemas/DeletePayload'
parameters:
- name: collection_name
in: path
description: Name of the collection to delete from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/payload/clear:
post:
tags:
- Points
summary: Clear payload
description: Remove all payload for specified points
operationId: clear_payload
requestBody:
description: clear payload on points
content:
application/json:
schema:
$ref: '#/components/schemas/PointsSelector'
parameters:
- name: collection_name
in: path
description: Name of the collection to clear payload from
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/batch:
post:
tags:
- Points
summary: Batch update points
description: Apply a series of update operations for points, vectors and payloads
operationId: batch_update
requestBody:
description: update operations
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOperations'
parameters:
- name: collection_name
in: path
description: Name of the collection to apply operations on
required: true
schema:
type: string
- name: wait
in: query
description: If true, wait for changes to actually happen
required: false
schema:
type: boolean
- name: ordering
in: query
description: define ordering guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/WriteOrdering'
- name: timeout
in: query
description: Timeout for the operation
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
type: array
items:
$ref: '#/components/schemas/UpdateResult'
/collections/{collection_name}/points/scroll:
post:
tags:
- Points
summary: Scroll points
description: Scroll request - paginate over all points which matches given filtering condition
operationId: scroll_points
requestBody:
description: Pagination and filter parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ScrollRequest'
parameters:
- name: collection_name
in: path
description: Name of the collection to retrieve from
required: true
schema:
type: string
- name: consistency
in: query
description: Define read consistency guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/ReadConsistency'
- name: timeout
in: query
description: If set, overrides global timeout for this request. Unit is seconds.
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
usage:
default: null
anyOf:
- $ref: '#/components/schemas/Usage'
- nullable: true
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/ScrollResult'
/collections/{collection_name}/points/count:
post:
tags:
- Points
summary: Count points
description: Count points which matches given filtering condition
operationId: count_points
requestBody:
description: Request counts of points which matches given filtering condition
content:
application/json:
schema:
$ref: '#/components/schemas/CountRequest'
parameters:
- name: collection_name
in: path
description: Name of the collection to count in
required: true
schema:
type: string
- name: consistency
in: query
description: Define read consistency guarantees for the operation
required: false
schema:
$ref: '#/components/schemas/ReadConsistency'
- name: timeout
in: query
description: If set, overrides global timeout for this request. Unit is seconds.
required: false
schema:
type: integer
minimum: 1
responses:
default:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
4XX:
description: error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'200':
description: successful operation
content:
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/qdrant/refs/heads/main/openapi/qdrant-points-api-openapi.yml