> Full SurrealDB documentation index: https://surrealdb.com/docs/llms.txt

# SDKs

One official SurrealDB SDK per language. Each has a quickstart that gets you connected and a reference covering every method.

SurrealDB has ten official SDKs. Each speaks the same RPC protocol over WebSocket or HTTP, so the concepts carry between them: connect, select a namespace and database, sign in, then query. What differs is the idiom - types, async model and error handling follow the host language.

Every SDK page opens with a quickstart that gets you connected, and continues into a reference for each method.

- [Rust](/docs/languages/rust.md)

- [JavaScript](/docs/languages/javascript.md)

- [Python](/docs/languages/python.md)

- [Go](/docs/languages/golang.md)

- [.NET](/docs/languages/dotnet.md)

- [Java](/docs/languages/java.md)

- [Kotlin](/docs/languages/kotlin.md)

- [PHP](/docs/languages/php.md)

- [Swift](/docs/languages/swift.md)

- [Mojo](/docs/languages/mojo.md)

[Community SDKs](/docs/languages/community.md) cover further languages, and the [Expo](/docs/frameworks/expo.md) and [React Native](/docs/frameworks/react-native.md) guides cover mobile.

## Choosing between the interfaces

An SDK is the usual way in, but it is not the only one. The [RPC protocol](/docs/reference/rest-api/rpc-protocol.md) keeps one connection open and is what the SDKs use themselves, so it is the interface that supports live queries. The [HTTP REST API](/docs/reference/rest-api/http-protocol.md) opens a connection per request and suits environments where holding a socket is awkward. The [CLI](/docs/reference/cli.md) covers import, export and one-off queries.
