SDKs_
Get started with Appwrite SDKs and learn how to use them to add authentication, user management, file storage, and more to your apps.
5 min read
Appwrite provides SDK libraries for major programming languages and platforms so you don't have to write code for interacting with our API protocols from scratch.
We're always working on improving and extending the current stack of available platforms and SDKs, listed below is a list of official libraries the Appwrite team is maintaining.
Client
Client libraries for integrating with Appwrite to build client-based applications and websites. Read one of the many quick starts guides for your framework of choice to start building your first application.
| Platform | GitHub Repository | ||
|---|---|---|---|
| | Web SDK 28.3.0 | appwrite/sdk-for-web | |
| | Flutter SDK 27.2.0 | appwrite/sdk-for-flutter | |
| | React library 0.1.1 | appwrite/sdk-for-react | beta |
| | React Native SDK 1.3.0 | appwrite/sdk-for-react-native | |
| | Apple SDK 21.1.1 | appwrite/sdk-for-apple | |
| | Android SDK 31.0.1 | appwrite/sdk-for-android | |
Unity SDK 0.11.1 | appwrite/sdk-for-unity | beta |
Server
Server libraries for integrating with Appwrite to build server side integrations or use inside your Appwrite Functions. Read one of the many quick starts guides for your language/runtime of choice to start building your first server integration.
| Platform | GitHub Repository | ||
|---|---|---|---|
| | Node.js SDK 29.4.0 | appwrite/sdk-for-node | |
| | Python SDK 27.0.0 | appwrite/sdk-for-python | |
| | Dart SDK 29.4.0 | appwrite/sdk-for-dart | |
| | PHP SDK 30.4.0 | appwrite/sdk-for-php | |
| | Ruby SDK 28.4.0 | appwrite/sdk-for-ruby | |
| | .NET SDK 8.4.0 | appwrite/sdk-for-dotnet | |
| | Go SDK 7.11.0 | appwrite/sdk-for-go | |
| | Swift SDK 22.4.0 | appwrite/sdk-for-swift | |
| | Kotlin SDK 22.4.0 | appwrite/sdk-for-kotlin | |
| | Rust SDK 0.19.0 | appwrite/sdk-for-rust |
If you would like to help us extend our platforms and SDKs stack, you are more than welcome to contact us or contribute to the Appwrite SDK Generator project GitHub repository and read our contribution guide.
Project environments
On Appwrite Cloud, a project can have environments, such as staging, each with its own resources and users. An environment has no project ID of its own. To act in one, keep the ID of the project it belongs to in setProject and add the environment's ID with setEnvironment. Leave setEnvironment out to act in the project itself.
import { Client } from "appwrite";
const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') .setProject('<PROJECT_ID>') .setEnvironment('<ENVIRONMENT_ID>');const sdk = require('node-appwrite');
const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') .setProject('<PROJECT_ID>') .setEnvironment('<ENVIRONMENT_ID>') .setKey('<API_KEY>');The client sends the environment's ID in the X-Appwrite-Environment header with every request. Realtime connections and the URLs the SDK builds, such as file previews and avatars, carry it as the environment query parameter. An environment has its own users and API keys, so authenticate with a session or an API key created in that environment.
Protocols
We are always looking to add new SDKs to our platform. If the SDK you are looking for is still missing, labeled as beta or experimental, or you simply do not want to integrate with an SDK, you can always integrate with Appwrite directly using any standard HTTP, GraphQL, or WebSocket clients and the relevant Appwrite protocol.
Appwrite supports multiple API protocols for maximum flexibility and developer convenience. You can learn more about how to integrate directly with them using one of the following available guides:
Realtime API
Integrate with the Appwrite Realtime API
REST API
Integrate with the Appwrite REST API
GraphQL API
Integrate with the Appwrite GraphQL API
Utility classes
Appwrite's SDKs provide useful utility classes to make your development experience easier. Use these classes and methods to reduce guess work and get better code suggestions in your IDE.
IDs
Appwrite has utility classes to help you handle IDs. These generate the correct ID format to be passed to the Appwrite APIs.
import { Client, Account } from "appwrite";
// Generate a unique IDID.unique()
// Generate a custom IDID.custom("my-custom-id")const sdk = require('node-appwrite');
// Generate a unique IDsdk.ID.unique()
// Generate a custom IDsdk.ID.custom("my-custom-id")Appwrite generates unique IDs that are both random and ordered. Appwrite IDs combine a timestamp prefix based on microseconds and a random UID string, formatted as <timestamp_hex><uid_hex>.
Enums
Appwrite has enumeration classes for predefined strings used different parameters used for the Appwrite APIs.
These enums are available for authenticator type, name, OAuth provider, password hash types, browsers, authentication factors, index types, credit cards, image gravity, image format, relationship types, SMTP encryption, Function runtime, messaging provider type, compression algorithms, execution methods, and country flags.
You can discover the available enums in each SDK at the source.
| Platform | Enums | ||
|---|---|---|---|
| | Web SDK 28.3.0 | appwrite/sdk-for-web | |
| | Flutter SDK 27.2.0 | appwrite/sdk-for-flutter | |
| | React Native SDK 1.3.0 | appwrite/sdk-for-react-native | |
| | Apple SDK 21.1.1 | appwrite/sdk-for-apple | |
| | Android SDK 31.0.1 | appwrite/sdk-for-android |
You can discover the available enums in each SDK at the source.
| Platform | Enums | ||
|---|---|---|---|
| | Node.js SDK 29.4.0 | appwrite/sdk-for-node | |
| | Python SDK 27.0.0 | appwrite/sdk-for-python | |
| | Dart SDK 29.4.0 | appwrite/sdk-for-dart | |
| | PHP SDK 30.4.0 | appwrite/sdk-for-php | |
| | Ruby SDK 28.4.0 | appwrite/sdk-for-ruby | |
| | .NET SDK 8.4.0 | appwrite/sdk-for-dotnet | |
| | Go SDK 7.11.0 | appwrite/sdk-for-go | |
| | Swift SDK 22.4.0 | appwrite/sdk-for-swift | |
| | Kotlin SDK 22.4.0 | appwrite/sdk-for-kotlin | |
| | Rust SDK 0.19.0 | appwrite/sdk-for-rust |
Queries and permissions
Appwrite has utility classes for queries and permissions. You can learn more about query utility classes and permissions utility classes in their own pages.
File I/O
Depending on your platform, you will also need some helpers to interface with system I/O. Learn more about storage input file classes.
Community
If you have created your own framework or any other technology specific integration and would like us to list it here please contact us.
If you would like to help us expand Appwrite's list of SDKs, you can contribute to Appwrite's SDK Generator project on GitHub and read our contribution guide.
Was this page helpful?
Share what worked or what we should fix. Once approved, our agents automatically apply suggested updates to the docs.