API Reference
Complete API documentation for Aetherfy. Compatible with qdrant-client for easy migration.
Qdrant Compatible
Drop-in replacement for existing Qdrant code
Global Edge
Automatic routing to nearest region
Rate Limits
10,000 requests/minute per key
POST
/collections/{collection}/upsertInsert or update vectors in a collection
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | number | string | Yes | Point identifier — an unsigned integer (≤ 2^53 − 1) or a UUID string |
| vector | number[] | Yes | Dense vector embeddings |
| payload | object | No | Additional data to store with the point |
Example Request
JavaScript SDK
const ok = await client.upsert('memories', [
{
id: 123,
vector: [0.1, 0.2, 0.3, ...],
payload: {
agent_id: 'claude',
timestamp: Date.now(),
type: 'conversation'
}
}
])Example Response
// upsert() resolves to true on success
truePOST
/collections/{collection}/searchPerform similarity search with optional filtering
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| vector | number[] | Yes | Query vector for similarity search |
| limit | number | No | Maximum number of results (default: 10) |
| filter | object | No | Metadata filtering conditions |
Example Request
JavaScript SDK
const results = await client.search('memories', queryEmbedding, {
limit: 10,
withPayload: true,
queryFilter: {
must: [
{ key: 'agent_id', match: { value: 'claude' } },
{ key: 'timestamp', range: { gte: Date.now() - 86400000 } }
]
}
})Example Response
// search() resolves to an array of SearchResult
[
{
"id": 123,
"score": 0.95,
"payload": { "agent_id": "claude" }
}
]POST
/collectionsCreate a new vector collection
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| size | number | Yes | Dimension of vectors in this collection |
| distance | string | Yes | DistanceMetric.COSINE, .EUCLIDEAN, or .DOT |
| index | object | No | Index configuration options |
Example Request
JavaScript SDK
await client.createCollection('agent-memory', {
size: 1536,
distance: DistanceMetric.COSINE
})Example Response
// createCollection() resolves to the Collection
{
"name": "agent-memory",
"config": { "size": 1536, "distance": "Cosine" },
"pointsCount": 0,
"status": "green"
}GET
/collections/{collection}/retrieveRetrieve specific vectors by ID
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ids | (number | string)[] | Yes | Point IDs to retrieve — unsigned integers or UUID strings |
| withVectors | boolean | No | Include vector data in response |
| withPayload | boolean | No | Include payload in response |
Example Request
JavaScript SDK
const vectors = await client.retrieve('memories', [123, 124], {
withVectors: true,
withPayload: true
})Example Response
// retrieve() resolves to an array of Point
[
{
"id": 123,
"vector": [0.1, 0.2],
"payload": { "agent_id": "claude" }
}
]Advanced Filtering & Query Patterns
Aetherfy supports powerful Qdrant-compatible filtering for precise vector searches. Combine similarity search with metadata filtering for optimal results.
Basic Filtering Examples
Match Specific Values
Find documents by category
// Find all documents with category "research"
const results = await client.search('knowledge-base', queryVector, {
limit: 10,
queryFilter: {
must: [
{ key: "category", match: { value: "research" } }
]
}
})Multiple Conditions (AND)
Find active user conversations
// Find conversations for specific user that are still active
const results = await client.search('conversations', queryVector, {
queryFilter: {
must: [
{ key: "user_id", match: { value: "user_123" } },
{ key: "status", match: { value: "active" } }
]
}
})Multiple Options (OR)
Find images or videos
// Find content that is either image or video
const results = await client.search('media', queryVector, {
queryFilter: {
should: [
{ key: "type", match: { value: "image" } },
{ key: "type", match: { value: "video" } }
]
}
})Exclude Results (NOT)
Exclude deleted content
// Find content but exclude deleted items
const results = await client.search('content', queryVector, {
queryFilter: {
must_not: [
{ key: "status", match: { value: "deleted" } }
]
}
})Range Queries
Find recent content
// Find content from the last 7 days
const lastWeek = Date.now() - (7 * 24 * 60 * 60 * 1000);
const results = await client.search('content', queryVector, {
queryFilter: {
must: [
{
key: "created_at",
range: { gte: lastWeek }
}
]
}
})Complex Nested Queries
Advanced filtering
// Complex query: active user content (images OR videos) from last week
const results = await client.search('user-content', queryVector, {
queryFilter: {
must: [
{ key: "user_id", match: { value: "user_123" } },
{ key: "status", match: { value: "active" } },
{
key: "created_at",
range: { gte: Date.now() - (7 * 24 * 60 * 60 * 1000) }
}
],
should: [
{ key: "type", match: { value: "image" } },
{ key: "type", match: { value: "video" } }
],
must_not: [
{ key: "flagged", match: { value: true } }
]
}
})Additional SDK Methods
Collection Management
- •
listCollections()- List all collections - •
deleteCollection(name)- Delete a collection - •
getCollection(name)- Get collection info
Vector Operations
- •
delete(collection, ids)- Delete vectors - •
scroll(collection, options)- Paginate vectors - •
count(collection, filter)- Count vectors