Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/qdrant-collections-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Qdrant Aliases Collections 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: Collections
description: Searchable collections of points.
paths:
/collections:
get:
tags:
- Collections
summary: List collections
description: Get list name of all existing collections
operationId: get_collections
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/CollectionsResponse'
/collections/{collection_name}:
get:
tags:
- Collections
summary: Collection info
description: Get detailed information about specified existing collection
operationId: get_collection
parameters:
- name: collection_name
in: path
description: Name of the collection to retrieve
required: true
schema:
type: string
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/CollectionInfo'
put:
tags:
- Collections
summary: Create collection
description: Create new collection with given parameters
operationId: create_collection
requestBody:
description: Parameters of a new collection
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCollection'
parameters:
- name: collection_name
in: path
description: Name of the new collection
required: true
schema:
type: string
- name: timeout
in: query
description: 'Wait for operation commit timeout in seconds.
If timeout is reached - request will return with service error.
'
schema:
type: integer
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
type: boolean
patch:
tags:
- Collections
summary: Update collection parameters
description: Update parameters of the existing collection
operationId: update_collection
requestBody:
description: New parameters
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCollection'
parameters:
- name: collection_name
in: path
description: Name of the collection to update
required: true
schema:
type: string
- name: timeout
in: query
description: 'Wait for operation commit timeout in seconds.
If timeout is reached - request will return with service error.
'
schema:
type: integer
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
type: boolean
delete:
tags:
- Collections
summary: Delete collection
description: Drop collection and all associated data
operationId: delete_collection
parameters:
- name: collection_name
in: path
description: Name of the collection to delete
required: true
schema:
type: string
- name: timeout
in: query
description: 'Wait for operation commit timeout in seconds.
If timeout is reached - request will return with service error.
'
schema:
type: integer
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
type: boolean
/collections/{collection_name}/exists:
get:
tags:
- Collections
summary: Check the existence of a collection
description: Returns "true" if the given collection name exists, and "false" otherwise
operationId: collection_exists
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/CollectionExistence'
/collections/{collection_name}/optimizations:
get:
tags:
- Collections
summary: Get optimization progress
description: Get progress of ongoing and completed optimizations for a collection
operationId: get_optimizations
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
- name: with
in: query
description: 'Comma-separated list of optional fields to include in the response.
Possible values: queued, completed, idle_segments.'
required: false
schema:
type: string
- name: completed_limit
in: query
description: 'Maximum number of completed optimizations to return.
Ignored if `completed` is not in the `with` parameter.'
required: false
schema:
type: integer
minimum: 0
default: 16
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'
- {}
time:
type: number
format: float
description: Time spent to process this request
example: 0.002
status:
type: string
example: ok
result:
$ref: '#/components/schemas/OptimizationsResponse'
components:
schemas:
PayloadIndexInfo:
description: Display payload field type & index information
type: object
required:
- data_type
- points
properties:
data_type:
$ref: '#/components/schemas/PayloadSchemaType'
params:
anyOf:
- $ref: '#/components/schemas/PayloadSchemaParams'
- {}
points:
description: Number of points indexed with this index
type: integer
format: uint
minimum: 0
HnswConfig:
description: Config of HNSW index
type: object
required:
- ef_construct
- full_scan_threshold
- m
properties:
m:
description: Number of edges per node in the index graph. Larger the value - more accurate the search, more space required.
type: integer
format: uint
minimum: 0
ef_construct:
description: Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build index.
type: integer
format: uint
minimum: 4
full_scan_threshold:
description: 'Minimal size threshold (in KiloBytes) below which full-scan is preferred over HNSW search. This measures the total size of vectors being queried against. When the maximum estimated amount of points that a condition satisfies is smaller than `full_scan_threshold_kb`, the query planner will use full-scan search instead of HNSW index traversal for better performance. Note: 1Kb = 1 vector of size 256'
type: integer
format: uint
minimum: 0
max_indexing_threads:
description: Number of parallel threads used for background index building. If 0 - automatically select from 8 to 16. Best to keep between 8 and 16 to prevent likelihood of slow building or broken/inefficient HNSW graphs. On small CPUs, less threads are used.
default: 0
type: integer
format: uint
minimum: 0
on_disk:
description: 'Store HNSW index on disk. If set to false, index will be stored in RAM. Default: false'
type:
- boolean
- 'null'
payload_m:
description: Custom M param for hnsw graph built for payload index. If not set, default M will be used.
type:
- integer
- 'null'
format: uint
minimum: 0
inline_storage:
description: 'Store copies of original and quantized vectors within the HNSW index file. Default: false. Enabling this option will trade the search speed for disk usage by reducing amount of random seeks during the search. Requires quantized vectors to be enabled. Multi-vectors are not supported.'
type:
- boolean
- 'null'
StopwordsSet:
type: object
properties:
languages:
description: Set of languages to use for stopwords. Multiple pre-defined lists of stopwords can be combined.
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Language'
uniqueItems: true
custom:
description: Custom stopwords set. Will be merged with the languages set.
type:
- array
- 'null'
items:
type: string
uniqueItems: true
VectorsConfigDiff:
description: 'Vector update params for multiple vectors
{ "vector_name": { "hnsw_config": { "m": 8 } } }'
type: object
additionalProperties:
$ref: '#/components/schemas/VectorParamsDiff'
BinaryQuantizationQueryEncoding:
type: string
enum:
- default
- binary
- scalar4bits
- scalar8bits
ModelUsage:
type: object
required:
- tokens
properties:
tokens:
type: integer
format: uint64
minimum: 0
ScalarQuantization:
type: object
required:
- scalar
properties:
scalar:
$ref: '#/components/schemas/ScalarQuantizationConfig'
SnowballParams:
type: object
required:
- language
- type
properties:
type:
$ref: '#/components/schemas/Snowball'
language:
$ref: '#/components/schemas/SnowballLanguage'
StrictModeSparse:
type: object
properties:
max_length:
description: Max length of sparse vector
type:
- integer
- 'null'
format: uint
minimum: 1
BoolIndexParams:
type: object
required:
- type
properties:
type:
$ref: '#/components/schemas/BoolIndexType'
on_disk:
description: 'If true, store the index on disk. Default: false.'
type:
- boolean
- 'null'
enable_hnsw:
description: 'Enable HNSW graph building for this payload field. If true, builds additional HNSW links (Need payload_m > 0). Default: true.'
type:
- boolean
- 'null'
ScalarType:
type: string
enum:
- int8
CompressionRatio:
type: string
enum:
- x4
- x8
- x16
- x32
- x64
OptimizationsSummary:
type: object
required:
- idle_segments
- queued_optimizations
- queued_points
- queued_segments
properties:
queued_optimizations:
description: Number of pending optimizations in the queue. Each optimization will take one or more unoptimized segments and produce one optimized segment.
type: integer
format: uint
minimum: 0
queued_segments:
description: Number of unoptimized segments in the queue.
type: integer
format: uint
minimum: 0
queued_points:
description: Number of points in unoptimized segments in the queue.
type: integer
format: uint
minimum: 0
idle_segments:
description: Number of segments that don't require optimization.
type: integer
format: uint
minimum: 0
SparseVectorsConfig:
type: object
additionalProperties:
$ref: '#/components/schemas/SparseVectorParams'
VectorParamsDiff:
type: object
properties:
hnsw_config:
description: Update params for HNSW index. If empty object - it will be unset.
anyOf:
- $ref: '#/components/schemas/HnswConfigDiff'
- {}
quantization_config:
description: Update params for quantization. If none - it is left unchanged.
anyOf:
- $ref: '#/components/schemas/QuantizationConfigDiff'
- {}
on_disk:
description: If true, vectors are served from disk, improving RAM usage at the cost of latency
type:
- boolean
- 'null'
Language:
type: string
enum:
- arabic
- azerbaijani
- basque
- bengali
- catalan
- chinese
- danish
- dutch
- english
- finnish
- french
- german
- greek
- hebrew
- hinglish
- hungarian
- indonesian
- italian
- japanese
- kazakh
- nepali
- norwegian
- portuguese
- romanian
- russian
- slovene
- spanish
- swedish
- tajik
- turkish
CollectionParamsDiff:
type: object
properties:
replication_factor:
description: Number of replicas for each shard
type:
- integer
- 'null'
format: uint32
minimum: 1
write_consistency_factor:
description: Minimal number successful responses from replicas to consider operation successful
type:
- integer
- 'null'
format: uint32
minimum: 1
read_fan_out_factor:
description: Fan-out every read request to these many additional remote nodes (and return first available response)
type:
- integer
- 'null'
format: uint32
minimum: 0
read_fan_out_delay_ms:
description: Delay in milliseconds before sending read requests to remote nodes
type:
- integer
- 'null'
format: uint64
minimum: 0
on_disk_payload:
description: 'If true - point''s payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM.'
default: null
type:
- boolean
- 'null'
Distance:
description: Type of internal tags, build from payload Distance function types used to compare vectors
type: string
enum:
- Cosine
- Euclid
- Dot
- Manhattan
GeoIndexType:
type: string
enum:
- geo
Datatype:
type: string
enum:
- float32
- uint8
- float16
FloatIndexParams:
type: object
required:
- type
properties:
type:
$ref: '#/components/schemas/FloatIndexType'
is_principal:
description: If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.
type:
- boolean
- 'null'
on_disk:
description: 'If true, store the index on disk. Default: false.'
type:
- boolean
- 'null'
enable_hnsw:
description: 'Enable HNSW graph building for this payload field. If true, builds additional HNSW links (Need payload_m > 0). Default: true.'
type:
- boolean
- 'null'
BinaryQuantizationEncoding:
type: string
enum:
- one_bit
- two_bits
- one_and_half_bits
MaxOptimizationThreadsSetting:
type: string
enum:
- auto
Usage:
description: Usage of the hardware resources, spent to process the request
type: object
properties:
hardware:
anyOf:
- $ref: '#/components/schemas/HardwareUsage'
- {}
inference:
anyOf:
- $ref: '#/components/schemas/InferenceUsage'
- {}
StopwordsInterface:
anyOf:
- $ref: '#/components/schemas/Language'
- $ref: '#/components/schemas/StopwordsSet'
IntegerIndexParams:
type: object
required:
- type
properties:
type:
$ref: '#/components/schemas/IntegerIndexType'
lookup:
description: If true - support direct lookups. Default is true.
type:
- boolean
- 'null'
range:
description: If true - support ranges filters. Default is true.
type:
- boolean
- 'null'
is_principal:
description: If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests. Default is false.
type:
- boolean
- 'null'
on_disk:
description: 'If true, store the index on disk. Default: false. Default is false.'
type:
- boolean
- 'null'
enable_hnsw:
description: 'Enable HNSW graph building for this payload field. If true, builds additional HNSW links (Need payload_m > 0). Default: true.'
type:
- boolean
- 'null'
ProductQuantization:
type: object
required:
- product
properties:
product:
$ref: '#/components/schemas/ProductQuantizationConfig'
OptimizationsResponse:
description: Optimizations progress for the collection
type: object
required:
- running
- summary
properties:
summary:
$ref: '#/components/schemas/OptimizationsSummary'
running:
description: Currently running optimizations.
type: array
items:
$ref: '#/components/schemas/Optimization'
queued:
description: An estimated queue of pending optimizations. Requires `?with=queued`.
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PendingOptimization'
completed:
description: Completed optimizations. Requires `?with=completed`. Limited by `?completed_limit=N`.
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Optimization'
idle_segments:
description: Segments that don't require optimization. Requires `?with=idle_segments`.
type:
- array
- 'null'
items:
$ref: '#/components/schemas/OptimizationSegmentInfo'
IntegerIndexType:
type: string
enum:
- integer
StrictModeSparseConfigOutput:
type: object
additionalProperties:
$ref: '#/components/schemas/StrictModeSparseOutput'
CollectionsResponse:
type: object
required:
- collections
properties:
collections:
type: array
items:
$ref: '#/components/schemas/CollectionDescription'
example:
collections:
- name: arxiv-title
- name: arxiv-abstract
- name: medium-title
- name: medium-text
OptimizersConfigDiff:
type: object
properties:
deleted_threshold:
description: The minimal fraction of deleted vectors in a segment, required to perform segment optimization
type:
- number
- 'null'
format: double
maximum: 1
minimum: 0
vacuum_min_vector_number:
description: The minimal number of vectors in a segment, required to perform segment optimization
type:
- integer
- 'null'
format: uint
minimum: 100
default_segment_number:
description: 'Target amount of segments optimizer will try to keep. Real amount of segments may vary depending on multiple parameters: - Amount of stored points - Current write RPS
It is recommended to select default number of segments as a factor of the number of search threads, so that each segment would be handled evenly by one of the threads If `default_segment_number = 0`, will be automatically selected by the number of available CPUs'
type:
- integer
- 'null'
format: uint
minimum: 0
max_segment_size:
description: 'Do not create segments larger this size (in kilobytes). Large segments might require disproportionately long indexation times, therefore it makes sense to limit the size of segments.
If indexation speed have more priority for your - make this parameter lower. If search speed is more important - make this parameter higher. Note: 1Kb = 1 vector of size 256'
type:
- integer
- 'null'
format: uint
minimum: 1
memmap_threshold:
description: 'Maximum size (in kilobytes) of vectors to store in-memory per segment. Segments larger than this threshold will be stored as read-only memmapped file.
Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value.
To disable memmap storage, set this to `0`.
Note: 1Kb = 1 vector of size 256
Deprecated since Qdrant 1.15.0'
deprecated: true
type:
- integer
- 'null'
format: uint
minimum: 0
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/qdrant/refs/heads/main/openapi/qdrant-collections-api-openapi.yml