@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Qdrant API
@base http://localhost:6333
@version master
@auth ApiKey api-key in header | Bearer bearer
@endpoints 73
@hint download_for_search
@toc collections(56), root(1), telemetry(1), metrics(1), healthz(1), livez(1), readyz(1), issues(2), cluster(4), aliases(1), snapshots(4)

@group collections
@endpoint PUT /collections/{collection_name}/shards
@required {collection_name: str, shard_key: any}
@optional {timeout: int, shards_number: int(uint32), replication_factor: int(uint32), placement: [int(uint64)], initial_state: any}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint GET /collections/{collection_name}/shards
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{shard_keys: [map]?}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/shards/delete
@required {collection_name: str, shard_key: any}
@optional {timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endgroup

@group root
@endpoint GET /
@returns(200) {title: str, version: str, commit: str?}
@errors {4XX}

@endgroup

@group telemetry
@endpoint GET /telemetry
@optional {anonymize: bool, details_level: int, per_collection: bool, timeout: int=60}
@returns(200) {usage: any, time: num(float), status: str, result: map{id: str, app: any, collections: map{number_of_collections: int(uint), max_collections: int(uint)?, collections: [any]?, snapshots: [map]?}, cluster: any, requests: any, memory: any, hardware: any}}
@errors {4XX}

@endgroup

@group metrics
@endpoint GET /metrics
@optional {anonymize: bool, per_collection: bool, timeout: int=60}
@returns(200)
@errors {4XX}

@endgroup

@group healthz
@endpoint GET /healthz
@returns(200)
@errors {4XX}

@endgroup

@group livez
@endpoint GET /livez
@returns(200)
@errors {4XX}

@endgroup

@group readyz
@endpoint GET /readyz
@returns(200)
@errors {4XX}

@endgroup

@group issues
@endpoint GET /issues
@returns(200)
@errors {4XX}

@endpoint DELETE /issues
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endgroup

@group cluster
@endpoint GET /cluster
@returns(200) {usage: any, time: num(float), status: str, result: any}
@errors {4XX}

@endpoint GET /cluster/telemetry
@optional {details_level: int, timeout: int=60}
@returns(200) {usage: any, time: num(float), status: str, result: map{collections: map, cluster: any}}
@errors {4XX}

@endpoint POST /cluster/recover
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint DELETE /cluster/peer/{peer_id}
@required {peer_id: int}
@optional {timeout: int, force: bool=false}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endgroup

@group collections
@endpoint GET /collections
@returns(200) {usage: any, time: num(float), status: str, result: map{collections: [map]}}
@errors {4XX}

@endpoint GET /collections/{collection_name}
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{status: str, optimizer_status: any, warnings: [map], indexed_vectors_count: int(uint)?, points_count: int(uint)?, segments_count: int(uint), config: map{params: map{vectors: any, shard_number: int(uint32), sharding_method: any, replication_factor: int(uint32), write_consistency_factor: int(uint32), read_fan_out_factor: int(uint32)?, read_fan_out_delay_ms: int(uint64)?, on_disk_payload: bool, sparse_vectors: map?}, hnsw_config: map{m: int(uint), ef_construct: int(uint), full_scan_threshold: int(uint), max_indexing_threads: int(uint), on_disk: bool?, payload_m: int(uint)?, inline_storage: bool?}, optimizer_config: map{deleted_threshold: num(double), vacuum_min_vector_number: int(uint), default_segment_number: int(uint), max_segment_size: int(uint)?, memmap_threshold: int(uint)?, indexing_threshold: int(uint)?, flush_interval_sec: int(uint64), max_optimization_threads: int(uint)?, prevent_unoptimized: bool?}, wal_config: any, quantization_config: any, strict_mode_config: any, metadata: any}, payload_schema: map, update_queue: any}}
@errors {4XX}

@endpoint PUT /collections/{collection_name}
@required {collection_name: str}
@optional {timeout: int, vectors: any, shard_number: int(uint32)=null, sharding_method: any=null, replication_factor: int(uint32)=null, write_consistency_factor: int(uint32)=null, on_disk_payload: bool=null, hnsw_config: any, wal_config: any, optimizers_config: any, quantization_config: any=null, sparse_vectors: map, strict_mode_config: any, metadata: any}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint PATCH /collections/{collection_name}
@required {collection_name: str}
@optional {timeout: int, vectors: any, optimizers_config: any, params: any, hnsw_config: any, quantization_config: any=null, sparse_vectors: any, strict_mode_config: any, metadata: any}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint DELETE /collections/{collection_name}
@required {collection_name: str}
@optional {timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint POST /collections/aliases
@required {actions: [any]}
@optional {timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/index
@required {collection_name: str, field_name: str}
@optional {wait: bool, ordering: str, timeout: int, field_schema: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint GET /collections/{collection_name}/exists
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{exists: bool}}
@errors {4XX}

@endpoint DELETE /collections/{collection_name}/index/{field_name}
@required {collection_name: str, field_name: str}
@optional {wait: bool, ordering: str, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint GET /collections/{collection_name}/cluster
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{peer_id: int(uint64), shard_count: int(uint), local_shards: [map], remote_shards: [map], shard_transfers: [map], resharding_operations: [map]?}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/cluster
@required {collection_name: str}
@optional {timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: bool}
@errors {4XX}

@endpoint GET /collections/{collection_name}/optimizations
@required {collection_name: str}
@optional {with: str, completed_limit: int=16}
@returns(200) {usage: any, time: num(float), status: str, result: map{summary: map{queued_optimizations: int(uint), queued_segments: int(uint), queued_points: int(uint), idle_segments: int(uint)}, running: [map], queued: [map]?, completed: [map]?, idle_segments: [map]?}}
@errors {4XX}

@endpoint GET /collections/{collection_name}/aliases
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{aliases: [map]}}
@errors {4XX}

@endgroup

@group aliases
@endpoint GET /aliases
@returns(200) {usage: any, time: num(float), status: str, result: map{aliases: [map]}}
@errors {4XX}

@endgroup

@group collections
@endpoint POST /collections/{collection_name}/snapshots/upload
@required {collection_name: str}
@optional {wait: bool, priority: str, checksum: str}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/snapshots/recover
@required {collection_name: str, location: str(uri)}
@optional {wait: bool, priority: any=null, checksum: str=null, api_key: str=null}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint GET /collections/{collection_name}/snapshots
@required {collection_name: str}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/snapshots
@required {collection_name: str}
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: map{name: str, creation_time: str(partial-date-time)?, size: int(uint64), checksum: str?}}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint DELETE /collections/{collection_name}/snapshots/{snapshot_name}
@required {collection_name: str, snapshot_name: str}
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint GET /collections/{collection_name}/snapshots/{snapshot_name}
@required {collection_name: str, snapshot_name: str}
@returns(200)
@errors {4XX}

@endgroup

@group snapshots
@endpoint GET /snapshots
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /snapshots
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: map{name: str, creation_time: str(partial-date-time)?, size: int(uint64), checksum: str?}}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint DELETE /snapshots/{snapshot_name}
@required {snapshot_name: str}
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint GET /snapshots/{snapshot_name}
@required {snapshot_name: str}
@returns(200)
@errors {4XX}

@endgroup

@group collections
@endpoint GET /collections/{collection_name}/shards/{shard_id}/snapshot
@required {collection_name: str, shard_id: int}
@returns(200)
@errors {4XX}

@endpoint POST /collections/{collection_name}/shards/{shard_id}/snapshots/upload
@required {collection_name: str, shard_id: int}
@optional {wait: bool, priority: str, checksum: str}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/shards/{shard_id}/snapshots/recover
@required {collection_name: str, shard_id: int, location: any}
@optional {wait: bool, priority: any=null, checksum: str=null, api_key: str=null}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint GET /collections/{collection_name}/shards/{shard_id}/snapshots
@required {collection_name: str, shard_id: int}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/shards/{shard_id}/snapshots
@required {collection_name: str, shard_id: int}
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: map{name: str, creation_time: str(partial-date-time)?, size: int(uint64), checksum: str?}}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint DELETE /collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}
@required {collection_name: str, shard_id: int, snapshot_name: str}
@optional {wait: bool}
@returns(200) {time: num(float), status: str, result: bool}
@returns(202) {time: num(float), status: str}
@errors {4XX}

@endpoint GET /collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}
@required {collection_name: str, shard_id: int, snapshot_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /collections/{collection_name}/points/{id}
@required {collection_name: str, id: any}
@optional {consistency: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{id: any, payload: any, vector: any, shard_key: any, order_value: any}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points
@required {collection_name: str, ids: [any]}
@optional {consistency: any, timeout: int, shard_key: any, with_payload: any, with_vector: any}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/points
@required {collection_name: str}
@optional {wait: bool, ordering: str, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/delete
@required {collection_name: str}
@optional {wait: bool, ordering: str, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/points/vectors
@required {collection_name: str, points: [map{id!: any, vector!: any}]}
@optional {wait: bool, ordering: str, timeout: int, shard_key: any, update_filter: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/vectors/delete
@required {collection_name: str, vector: [str]}
@optional {wait: bool, ordering: str, timeout: int, points: [any], filter: any, shard_key: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/payload
@required {collection_name: str, payload: map}
@optional {wait: bool, ordering: str, timeout: int, points: [any], filter: any, shard_key: any, key: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint PUT /collections/{collection_name}/points/payload
@required {collection_name: str, payload: map}
@optional {wait: bool, ordering: str, timeout: int, points: [any], filter: any, shard_key: any, key: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/payload/delete
@required {collection_name: str, keys: [str]}
@optional {wait: bool, ordering: str, timeout: int, points: [any], filter: any, shard_key: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/payload/clear
@required {collection_name: str}
@optional {wait: bool, ordering: str, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: map{operation_id: int(uint64)?, status: str}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/batch
@required {collection_name: str, operations: [any]}
@optional {wait: bool, ordering: str, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/scroll
@required {collection_name: str}
@optional {consistency: any, timeout: int, shard_key: any, offset: any, limit: int(uint), filter: any, with_payload: any, with_vector: any, order_by: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{points: [map], next_page_offset: any}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/search
@required {collection_name: str, vector: any, limit: int(uint)}
@optional {consistency: any, timeout: int, shard_key: any, filter: any, params: any, offset: int(uint), with_payload: any, with_vector: any=null, score_threshold: num(float)}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/search/batch
@required {collection_name: str, searches: [map{shard_key: any, vector!: any, filter: any, params: any, limit!: int(uint), offset: int(uint), with_payload: any, with_vector: any, score_threshold: num(float)}]}
@optional {consistency: any, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: [[map]]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/search/groups
@required {collection_name: str, vector: any, group_by: str, group_size: int(uint32), limit: int(uint32)}
@optional {consistency: any, timeout: int, shard_key: any, filter: any, params: any, with_payload: any, with_vector: any=null, score_threshold: num(float), with_lookup: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{groups: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/recommend
@required {collection_name: str, limit: int(uint)}
@optional {consistency: any, timeout: int, shard_key: any, positive: [any]=, negative: [any]=, strategy: any, filter: any, params: any, offset: int(uint), with_payload: any, with_vector: any=null, score_threshold: num(float), using: any=null, lookup_from: any=null}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/recommend/batch
@required {collection_name: str, searches: [map{shard_key: any, positive: [any], negative: [any], strategy: any, filter: any, params: any, limit!: int(uint), offset: int(uint), with_payload: any, with_vector: any, score_threshold: num(float), using: any, lookup_from: any}]}
@optional {consistency: any, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: [[map]]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/recommend/groups
@required {collection_name: str, group_by: str, group_size: int(uint32), limit: int(uint32)}
@optional {consistency: any, timeout: int, shard_key: any, positive: [any]=, negative: [any]=, strategy: any=null, filter: any, params: any, with_payload: any, with_vector: any=null, score_threshold: num(float), using: any=null, lookup_from: any=null, with_lookup: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{groups: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/discover
@required {collection_name: str, limit: int(uint)}
@optional {consistency: any, timeout: int, shard_key: any, target: any, context: [map{positive!: any, negative!: any}], filter: any, params: any, offset: int(uint), with_payload: any, with_vector: any, using: any=null, lookup_from: any=null}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/discover/batch
@required {collection_name: str, searches: [map{shard_key: any, target: any, context: [map], filter: any, params: any, limit!: int(uint), offset: int(uint), with_payload: any, with_vector: any, using: any, lookup_from: any}]}
@optional {consistency: any, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: [[map]]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/count
@required {collection_name: str}
@optional {consistency: any, timeout: int, shard_key: any, filter: any, exact: bool=true}
@returns(200) {usage: any, time: num(float), status: str, result: map{count: int(uint)}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/facet
@required {collection_name: str, key: str}
@optional {consistency: any, timeout: int, shard_key: any, limit: int(uint), filter: any, exact: bool}
@returns(200) {usage: any, time: num(float), status: str, result: map{hits: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/query
@required {collection_name: str}
@optional {consistency: any, timeout: int, shard_key: any, prefetch: any=null, query: any, using: str, filter: any, params: any, score_threshold: num(float), limit: int(uint), offset: int(uint), with_vector: any, with_payload: any, lookup_from: any=null}
@returns(200) {usage: any, time: num(float), status: str, result: map{points: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/query/batch
@required {collection_name: str, searches: [map{shard_key: any, prefetch: any, query: any, using: str, filter: any, params: any, score_threshold: num(float), limit: int(uint), offset: int(uint), with_vector: any, with_payload: any, lookup_from: any}]}
@optional {consistency: any, timeout: int}
@returns(200) {usage: any, time: num(float), status: str, result: [map]}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/query/groups
@required {collection_name: str, group_by: str}
@optional {consistency: any, timeout: int, shard_key: any, prefetch: any=null, query: any, using: str, filter: any, params: any, score_threshold: num(float), with_vector: any, with_payload: any, lookup_from: any=null, group_size: int(uint), limit: int(uint), with_lookup: any}
@returns(200) {usage: any, time: num(float), status: str, result: map{groups: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/search/matrix/pairs
@required {collection_name: str}
@optional {consistency: any, timeout: int, shard_key: any, filter: any, sample: int(uint), limit: int(uint), using: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{pairs: [map]}}
@errors {4XX}

@endpoint POST /collections/{collection_name}/points/search/matrix/offsets
@required {collection_name: str}
@optional {consistency: any, timeout: int, shard_key: any, filter: any, sample: int(uint), limit: int(uint), using: str}
@returns(200) {usage: any, time: num(float), status: str, result: map{offsets_row: [int(uint64)], offsets_col: [int(uint64)], scores: [num(float)], ids: [any]}}
@errors {4XX}

@endgroup

@end
