---
layout: article
title: SDKs
description: Get started with Appwrite SDKs and learn how to use them to add authentication, user management, file storage, and more to your apps.
---

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 %}

Client libraries for integrating with Appwrite to build client-based applications and websites. Read one of the many [quick starts](/docs/quick-starts) guides for your framework of choice to start building your first application.

{% table %}
* &nbsp; {% width=48 %}
* Platform
* GitHub Repository
* &nbsp; {% width=80 %}
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_light %}
* Web SDK `23.0.0`
* [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_light %}
* Flutter SDK `22.0.0`
* [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/react.svg" alt="React logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/react.svg" alt="React logo" size="m" /%}{% /only_light %}
* React Native SDK `0.25.0`
* [appwrite/sdk-for-react-native](https://github.com/appwrite/sdk-for-react-native)
* `beta`
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/apple.svg" alt="Apple logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/apple.svg" alt="Apple logo" size="m" /%}{% /only_light %}
* Apple SDK `15.0.0`
* [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/android.svg" alt="Android logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/android.svg" alt="Android logo" size="m" /%}{% /only_light %}
* Android SDK `13.0.0`
* [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android)
* 
{% /table %}

# Server {% #server %}

Server libraries for integrating with Appwrite to build server side integrations or use inside your [Appwrite Functions](/docs/products/functions). Read one of the many [quick starts](/docs/quick-starts) guides for your language/runtime of choice to start building your first server integration.

{% table %}
* &nbsp; {% width=48 %}
* Platform
* GitHub Repository
* &nbsp; {% width=80 %}
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/node.svg" alt="Node.js logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/node.svg" alt="Node.js logo" size="m" /%}{% /only_light %}
* Node.js SDK `22.1.3`
* [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/python.svg" alt="Python logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/python.svg" alt="Python logo" size="m" /%}{% /only_light %}
* Python SDK `16.0.0`
* [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/dart.svg" alt="Dart logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/dart.svg" alt="Dart logo" size="m" /%}{% /only_light %}
* Dart SDK `21.3.0`
* [appwrite/sdk-for-dart](https://github.com/appwrite/sdk-for-dart)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/php.svg" alt="PHP logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/php.svg" alt="PHP logo" size="m" /%}{% /only_light %}
* PHP SDK `20.2.1`
* [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_light %}
* Ruby SDK `21.1.0`
* [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_light %}
* .NET SDK `1.0.0`
* [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/go.svg" alt="Go logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/go.svg" alt="Go logo" size="m" /%}{% /only_light %}
* Go SDK `1.0.0`
* [appwrite/sdk-for-go](https://github.com/appwrite/sdk-for-go)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/swift.svg" alt="Swift logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/swift.svg" alt="Swift logo" size="m" /%}{% /only_light %}
* Swift SDK `15.2.0`
* [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift)
* 
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_light %}
* Kotlin SDK `14.1.0`
* [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/rust.svg" alt="Rust logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/rust.svg" alt="Rust logo" size="m" /%}{% /only_light %}
* Rust SDK `0.2.0`
* [appwrite/sdk-for-rust](https://github.com/appwrite/sdk-for-rust)
*
{% /table %}

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](https://github.com/appwrite/sdk-generator) project GitHub repository and read our contribution guide.

# Protocols {% #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:

{% cards %}
{% cards_item href="/docs/apis/realtime" title="Realtime API" %}
Integrate with the Appwrite Realtime API
{% /cards_item %}

{% cards_item href="/docs/apis/rest" title="REST API" %}
Integrate with the Appwrite REST API
{% /cards_item %}

{% cards_item href="/docs/apis/graphql" title="GraphQL API" %}
Integrate with the Appwrite GraphQL API
{% /cards_item %}
{% /cards %}

# Utility classes {% #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 {% #ids %}
Appwrite has utility classes to help you handle IDs. 
These generate the correct ID format to be passed to the Appwrite APIs.

{% tabs %}
{% tabsitem #client title="Client SDKs" %}
{% multicode %}
```client-web
import { Client, Account } from "appwrite";

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```client-flutter
import 'package:appwrite/appwrite.dart';

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom()
```
```client-apple
import Appwrite

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```client-android-kotlin
import io.appwrite.ID

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
{% /multicode %}
{% /tabsitem %}

{% tabsitem #server title="Server SDKs" %}
{% multicode %}
```server-nodejs
const sdk = require('node-appwrite');

// Generate a unique ID
sdk.ID.unique()

// Generate a custom ID
sdk.ID.custom("my-custom-id")

```
```deno
import * as sdk from "npm:node-appwrite";
// Generate a unique ID
sdk.ID.unique()

// Generate a custom ID
sdk.ID.custom("my-custom-id")
```
```php
<?php

use Appwrite\ID;

// Generate a unique ID
ID::unique()

// Generate a custom ID
ID::custom("my-custom-id")
```
```python
from appwrite.id import ID

# Generate a unique ID
ID.unique()

# Generate a custom ID
ID.custom("my-custom-id")
```
```csharp
using Appwrite.ID;

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```dart
import 'package:dart_appwrite/dart_appwrite.dart';

// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```java
io.appwrite.ID
// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```kotlin
io.appwrite.ID
// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```ruby
require 'appwrite'

include Appwrite
ß
# Generate a unique ID
ID.unique()

# Generate a custom ID
ID.custom("my-custom-id")
```
```swift
import Appwrite
// Generate a unique ID
ID.unique()

// Generate a custom ID
ID.custom("my-custom-id")
```
```rust
use appwrite::id::ID;

// Generate a unique ID
ID::unique()

// Generate a custom ID
ID::custom("my-custom-id")
```
{% /multicode %}
{% /tabsitem %}
{% /tabs %}

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 {% #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.
{% tabs %}
{% tabsitem #client title="Client SDKs" %}
You can discover the available enums in each SDK at the source.

{% table %}
* &nbsp; {% width=48 %}
* Platform
* Enums
* &nbsp; {% width=80 %}

---
* {% only_dark %}{% icon_image src="/images/platforms/dark/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_light %}
* Web SDK `23.0.0`
* [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web/tree/dev/src/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_light %}
* Flutter SDK `22.0.0`
* [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter/tree/dev/lib/src/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/react.svg" alt="React logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/react.svg" alt="React logo" size="m" /%}{% /only_light %}
* React Native SDK `0.25.0`
* [appwrite/sdk-for-react-native](https://github.com/appwrite/sdk-for-react-native)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/apple.svg" alt="Apple logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/apple.svg" alt="Apple logo" size="m" /%}{% /only_light %}
* Apple SDK `15.0.0`
* [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple/tree/dev/Sources/AppwriteEnums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/android.svg" alt="Android logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/android.svg" alt="Android logo" size="m" /%}{% /only_light %}
* Android SDK `13.0.0`
* [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android/tree/dev/library/src/main/java/io/appwrite/enums)
*
{% /table %}
{% /tabsitem %}

{% tabsitem #server title="Server SDKs" %}
You can discover the available enums in each SDK at the source.

{% table %}
* &nbsp; {% width=48 %}
* Platform
* Enums
* &nbsp; {% width=80 %}
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/node.svg" alt="Node.js logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/node.svg" alt="Node.js logo" size="m" /%}{% /only_light %}
* Node.js SDK `22.1.3`
* [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node/tree/dev/lib/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/python.svg" alt="Python logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/python.svg" alt="Python logo" size="m" /%}{% /only_light %}
* Python SDK `16.0.0`
* [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python/tree/dev/appwrite/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/dart.svg" alt="Dart logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/dart.svg" alt="Dart logo" size="m" /%}{% /only_light %}
* Dart SDK `21.3.0`
* [appwrite/sdk-for-dart](https://github.com/appwrite/sdk-for-dart/blob/dev/lib/enums.dart)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/php.svg" alt="PHP logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/php.svg" alt="PHP logo" size="m" /%}{% /only_light %}
* PHP SDK `20.2.1`
* [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php/tree/dev/src/Appwrite/Enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_light %}
* Ruby SDK `21.1.0`
* [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby/tree/dev/lib/appwrite/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_light %}
* .NET SDK `1.0.0`
* [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet/tree/dev/src/Appwrite/Enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/go.svg" alt="Go logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/go.svg" alt="Go logo" size="m" /%}{% /only_light %}
* Go SDK `1.0.0`
* [appwrite/sdk-for-go](https://github.com/appwrite/sdk-for-go)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/swift.svg" alt="Swift logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/swift.svg" alt="Swift logo" size="m" /%}{% /only_light %}
* Swift SDK `15.2.0`
* [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift/tree/dev/Sources/AppwriteEnums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_light %}
* Kotlin SDK `14.1.0`
* [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin/tree/dev/src/main/kotlin/io/appwrite/enums)
*
---
* {% only_dark %}{% icon_image src="/images/platforms/dark/rust.svg" alt="Rust logo" size="m" /%}{% /only_dark %}
{% only_light %}{% icon_image src="/images/platforms/light/rust.svg" alt="Rust logo" size="m" /%}{% /only_light %}
* Rust SDK `0.2.0`
* [appwrite/sdk-for-rust](https://github.com/appwrite/sdk-for-rust/tree/dev/src/enums)
*
{% /table %}
{% /tabsitem %}
{% /tabs %}

## Queries and permissions {% #queries-and-permissions %}
Appwrite has utility classes for queries and permissions. 
You can learn more about [query utility classes](/docs/products/databases/queries) and [permissions utility classes](/docs/advanced/platform/permissions) in their own pages.

## File I/O {% #file-io %}
Depending on your platform, you will also need some helpers to interface with system I/O.
Learn more about [storage input file classes](/docs/products/storage/upload-download#input-file).

# Community {% #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](/contact-us).

If you would like to help us expand Appwrite's list of SDKs, you can contribute to Appwrite's [SDK Generator](https://github.com/appwrite/sdk-generator) project on GitHub and read our [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md).
