Appwrite VectorsDB API
VectorsDB — similarity search as a first-class Appwrite database, announced 2026-09-02. 35 operations across 17 paths in the Appwrite 2.0.0 OpenAPI.
VectorsDB — similarity search as a first-class Appwrite database, announced 2026-09-02. 35 operations across 17 paths in the Appwrite 2.0.0 OpenAPI.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/appwrite-vectorsdb-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.0.0
info:
title: Appwrite VectorsDB API
description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
version: 2.0.0
termsOfService: https://appwrite.io/policy/terms
contact:
name: Appwrite Team
url: https://appwrite.io/support
email: team@appwrite.io
license:
name: BSD-3-Clause
url: https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE
servers:
- url: https://cloud.appwrite.io/v1
description: Appwrite Cloud endpoint.
- url: https://{region}.cloud.appwrite.io/v1
description: Appwrite Cloud regional endpoint. Replace `{region}` with your project region.
variables:
region:
default: fra
description: Appwrite Cloud region.
tags:
- name: vectorsDB
description: Appwrite vectorsDB service.
paths:
/vectorsdb:
get:
summary: List databases
operationId: vectorsDBList
tags:
- vectorsDB
description: Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.
responses:
'200':
description: Databases List
content:
application/json:
schema:
$ref: '#/components/schemas/databaseList'
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/list.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following columns: name'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
post:
summary: Create database
operationId: vectorsDBCreate
tags:
- vectorsDB
description: 'Create a new Database.
'
responses:
'201':
description: Database
content:
application/json:
schema:
$ref: '#/components/schemas/database'
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/create.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
requestBody:
content:
application/json:
schema:
type: object
properties:
databaseId:
description: Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
type: string
example: <DATABASE_ID>
x-appwrite:
idGenerator: ID.unique
name:
description: 'Database name. Max length: 128 chars.'
type: string
example: <NAME>
enabled:
description: Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.
type: boolean
default: true
example: false
specification:
description: Database specification. Defaults to `serverless`, which creates the database on the shared pool. Any other value provisions a dedicated database on that specification.
type: string
default: serverless
example: serverless
replicas:
description: Number of high availability replicas (0-5) for the dedicated database backing this database. Requires a dedicated `specification`; must be 0 for a serverless database. High availability is enabled when greater than 0.
type: integer
default: 0
example: 0
format: int32
syncMode:
description: 'Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.'
type: string
example: async
nullable: true
required:
- databaseId
- name
/vectorsdb/specifications:
get:
summary: List specifications
operationId: vectorsDBListSpecifications
tags:
- vectorsDB
description: List the dedicated database specifications available on the current plan. Each specification reports its resource limits, its own prices and overage rates, and whether it is enabled for the organization.
responses:
'200':
description: SpecificationList
content:
application/json:
schema:
$ref: '#/components/schemas/dedicatedDatabaseSpecificationList'
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/list-specifications.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: databases.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
/vectorsdb/transactions:
get:
summary: List transactions
operationId: vectorsDBListTransactions
tags:
- vectorsDB
description: List transactions across all databases.
responses:
'200':
description: Transaction List
content:
application/json:
schema:
$ref: '#/components/schemas/transactionList'
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/list-transactions.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.read
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
parameters:
- name: queries
description: Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries).
required: false
schema:
type: array
items:
type: string
default: []
in: query
post:
summary: Create transaction
operationId: vectorsDBCreateTransaction
tags:
- vectorsDB
description: Create a new transaction.
responses:
'201':
description: Transaction
content:
application/json:
schema:
$ref: '#/components/schemas/transaction'
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/create-transaction.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.write
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
ttl:
description: Seconds before the transaction expires.
type: integer
default: 300
example: 60
format: int32
/vectorsdb/transactions/{transactionId}:
get:
summary: Get transaction
operationId: vectorsDBGetTransaction
tags:
- vectorsDB
description: Get a transaction by its unique ID.
responses:
'200':
description: Transaction
content:
application/json:
schema:
$ref: '#/components/schemas/transaction'
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/get-transaction.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.read
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
parameters:
- name: transactionId
description: Transaction ID.
required: true
schema:
type: string
example: <TRANSACTION_ID>
in: path
patch:
summary: Update transaction
operationId: vectorsDBUpdateTransaction
tags:
- vectorsDB
description: Update a transaction, to either commit or roll back its operations.
responses:
'200':
description: Transaction
content:
application/json:
schema:
$ref: '#/components/schemas/transaction'
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/update-transaction.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.write
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
parameters:
- name: transactionId
description: Transaction ID.
required: true
schema:
type: string
example: <TRANSACTION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
commit:
description: Commit transaction?
type: boolean
default: false
example: false
rollback:
description: Rollback transaction?
type: boolean
default: false
example: false
delete:
summary: Delete transaction
operationId: vectorsDBDeleteTransaction
tags:
- vectorsDB
description: Delete a transaction by its unique ID.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/delete-transaction.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.write
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
parameters:
- name: transactionId
description: Transaction ID.
required: true
schema:
type: string
example: <TRANSACTION_ID>
in: path
/vectorsdb/transactions/{transactionId}/operations:
post:
summary: Create operations
operationId: vectorsDBCreateOperations
tags:
- vectorsDB
description: Create multiple operations in a single transaction.
responses:
'201':
description: Transaction
content:
application/json:
schema:
$ref: '#/components/schemas/transaction'
deprecated: false
x-appwrite:
group: transactions
demo: vectorsdb/create-operations.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.write
platforms:
- console
- server
- client
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
client:
Project: []
security:
- Project: []
Key: []
Session: []
JWT: []
parameters:
- name: transactionId
description: Transaction ID.
required: true
schema:
type: string
example: <TRANSACTION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
operations:
description: Array of staged operations.
type: array
default: []
example:
- action: create
databaseId: <DATABASE_ID>
collectionId: <COLLECTION_ID>
documentId: <DOCUMENT_ID>
data:
name: Walter O'Brien
items:
type: object
/vectorsdb/{databaseId}:
get:
summary: Get database
operationId: vectorsDBGet
tags:
- vectorsDB
description: Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.
responses:
'200':
description: Database
content:
application/json:
schema:
$ref: '#/components/schemas/database'
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/get.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
put:
summary: Update database
operationId: vectorsDBUpdate
tags:
- vectorsDB
description: Update a database by its unique ID.
responses:
'200':
description: Database
content:
application/json:
schema:
$ref: '#/components/schemas/database'
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/update.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
description: 'Database name. Max length: 128 chars.'
type: string
example: <NAME>
enabled:
description: Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.
type: boolean
default: true
example: false
specification:
description: Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.
type: string
example: serverless
nullable: true
replicas:
description: Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.
type: integer
example: 0
format: int32
nullable: true
syncMode:
description: 'Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.'
type: string
example: async
nullable: true
required:
- name
delete:
summary: Delete database
operationId: vectorsDBDelete
tags:
- vectorsDB
description: Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: vectorsdb
demo: vectorsdb/delete.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
/vectorsdb/{databaseId}/collections:
get:
summary: List collections
operationId: vectorsDBListCollections
tags:
- vectorsDB
description: Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.
responses:
'200':
description: VectorsDB Collections List
content:
application/json:
schema:
$ref: '#/components/schemas/vectorsdbCollectionList'
deprecated: false
x-appwrite:
group: collections
demo: vectorsdb/list-collections.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.collections.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
example: <SEARCH>
default: ''
in: query
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
post:
summary: Create collection
operationId: vectorsDBCreateCollection
tags:
- vectorsDB
description: Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#documentsDBCreateCollection) API or directly from your database console.
responses:
'201':
description: VectorsDB Collection
content:
application/json:
schema:
$ref: '#/components/schemas/vectorsdbCollection'
deprecated: false
x-appwrite:
group: collections
demo: vectorsdb/create-collection.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.collections.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
collectionId:
description: Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
type: string
example: <COLLECTION_ID>
x-appwrite:
idGenerator: ID.unique
name:
description: 'Collection name. Max length: 128 chars.'
type: string
example: <NAME>
dimension:
description: Embedding dimension.
type: integer
example: 1
format: int32
permissions:
description: An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
type: array
example:
- read("any")
items:
type: string
documentSecurity:
description: Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).
type: boolean
default: false
example: false
enabled:
description: Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.
type: boolean
default: true
example: false
required:
- collectionId
- name
- dimension
/vectorsdb/{databaseId}/collections/{collectionId}:
get:
summary: Get collection
operationId: vectorsDBGetCollection
tags:
- vectorsDB
description: Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.
responses:
'200':
description: VectorsDB Collection
content:
application/json:
schema:
$ref: '#/components/schemas/vectorsdbCollection'
deprecated: false
x-appwrite:
group: collections
demo: vectorsdb/get-collection.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.collections.read
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID.
required: true
schema:
type: string
example: <COLLECTION_ID>
in: path
put:
summary: Update collection
operationId: vectorsDBUpdateCollection
tags:
- vectorsDB
description: Update a collection by its unique ID.
responses:
'200':
description: VectorsDB Collection
content:
application/json:
schema:
$ref: '#/components/schemas/vectorsdbCollection'
deprecated: false
x-appwrite:
group: collections
demo: vectorsdb/update-collection.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.collections.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID.
required: true
schema:
type: string
example: <COLLECTION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
description: 'Collection name. Max length: 128 chars.'
type: string
example: <NAME>
dimension:
description: Embedding dimensions.
type: integer
example: 1
format: int32
permissions:
description: An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
type: array
example:
- read("any")
items:
type: string
documentSecurity:
description: Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).
type: boolean
default: false
example: false
enabled:
description: Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.
type: boolean
default: true
example: false
required:
- name
delete:
summary: Delete collection
operationId: vectorsDBDeleteCollection
tags:
- vectorsDB
description: Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: collections
demo: vectorsdb/delete-collection.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.collections.write
platforms:
- console
- server
packaging: false
public: true
auth:
console:
Project: []
server:
Project: []
Key: []
security:
- Project: []
Key: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID.
required: true
schema:
type: string
example: <COLLECTION_ID>
in: path
/vectorsdb/{databaseId}/collections/{collectionId}/documents:
get:
summary: List documents
operationId: vectorsDBListDocuments
tags:
- vectorsDB
description: Get a list of all the user's documents in a given collection. You can use the query params to filter your results.
responses:
'200':
description: Documents List
content:
application/json:
schema:
$ref: '#/components/schemas/documentList'
deprecated: false
x-appwrite:
group: documents
demo: vectorsdb/list-documents.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: vectorsdb.documents.read
platforms:
- console
- client
- server
packaging: false
public: true
auth:
console:
Project: []
client:
Project: []
server:
Project: []
Session: []
security:
- Project: []
Session: []
Key: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#da
# --- truncated at 32 KB (133 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appwrite/refs/heads/main/openapi/appwrite-vectorsdb-api-openapi.yml