# SDKs

> Integrate with Skyflow's client-side and server-side SDKs to securely collect, store, and use sensitive data.

Integrate with Skyflow's client-side and server-side SDKs to securely collect, store, and use sensitive data.

## Server-side SDKs

Skyflow SDK v2.1.0 is now generally available for all four server-side SDKs — Java, Node.js, Python, and Go. V2.1.0 brings flexible authentication, multi-vault support, a builder pattern for request construction, native data structures, and rich error diagnostics.

**What's new in V2.1.0:**

- **Flexible authentication:** Choose from five auth methods (API keys, environment variables, credentials files, JSON strings, or bearer tokens) to match your deployment model
- **Multi-vault support:** Manage multiple vaults from a single client instance, reducing code complexity
- **Builder pattern:** Self-documenting, IDE-friendly request construction with named setters and sensible defaults
- **Native data structures:** Work directly with language-native types without third-party JSON dependencies
- **Rich error diagnostics:** Every error includes HTTP status, detailed message, and a unique `requestId` for instant support correlation
- **Language-nuanced syntax:** Idiomatic API design tailored to each language's conventions

#### [Java](https://github.com/skyflowapi/skyflow-java)

#### [Node.js](https://github.com/skyflowapi/skyflow-node)

#### [Python](https://github.com/skyflowapi/skyflow-python)

#### [Go](https://github.com/skyflowapi/skyflow-go)

### Authentication

| Feature                                      | Java V2.1.0 | Node.js V2.1.0 | Python V2.1.0 | Go V2.1.0 |
| -------------------------------------------- | :---------: | :------------: | :-----------: | :-------: |
| API key                                      |      ✅      |        ✅       |       ✅       |     ✅     |
| Environment variable (`SKYFLOW_CREDENTIALS`) |      ✅      |        ✅       |       ✅       |     ✅     |
| Credentials file path                        |      ✅      |        ✅       |       ✅       |     ✅     |
| Credentials string (JSON)                    |      ✅      |        ✅       |       ✅       |     ✅     |
| Bearer token                                 |      ✅      |        ✅       |       ✅       |     ✅     |
| `generateBearerToken`                        |      ✅      |        ✅       |       ✅       |     ✅     |
| `generateBearerTokenFromCreds`               |      ✅      |        ✅       |       ✅       |     ✅     |
| `generateSignedDataTokens`                   |      ✅      |        ✅       |       ✅       |     ✅     |
| Bearer roles scoping                         |      ✅      |        ✅       |       ✅       |     ✅     |
| Bearer context claims                        |      ✅      |        ✅       |       ✅       |     ✅     |

In v1, Python and Go only supported basic bearer token generation. V2 brings
full auth parity across all four SDKs — no more workarounds.

### Vault operations

| Feature                  | Java V2.1.0 | Node.js V2.1.0 | Python V2.1.0 | Go V2.1.0 |
| ------------------------ | :---------: | :------------: | :-----------: | :-------: |
| `insert`                 |      ✅      |        ✅       |       ✅       |     ✅     |
| `get` (by skyflow IDs)   |      ✅      |        ✅       |       ✅       |     ✅     |
| `get` (by column values) |      ✅      |        ✅       |       ✅       |     ✅     |
| `update`                 |      ✅      |        ✅       |       ✅       |     ✅     |
| `delete`                 |      ✅      |        ✅       |       ✅       |     ✅     |
| `query`                  |      ✅      |        ✅       |       ✅       |     ✅     |
| `tokenize`               |      ✅      |        ✅       |       ✅       |     ✅     |
| `detokenize`             |      ✅      |        ✅       |       ✅       |     ✅     |
| `uploadFile`             |      ✅      |        ✅       |       ✅       |     ✅     |

### Detect operations *(new in v2)*

| Feature          | Java | Node.js | Python |  Go |
| ---------------- | :--: | :-----: | :----: | :-: |
| `deidentifyText` |   ✅  |    ✅    |    ✅   |  ✅  |
| `reidentifyText` |   ✅  |    ✅    |    ✅   |  ✅  |
| `deidentifyFile` |   ✅  |    ✅    |    ✅   |  ✅  |
| `getDetectRun`   |   ✅  |    ✅    |    ✅   |  ✅  |

### Connections

| Feature                                                        | Java V2.1.0 | Node.js V2.1.0 | Python V2.1.0 | Go V2.1.0 |
| -------------------------------------------------------------- | :---------: | :------------: | :-----------: | :-------: |
| `invoke` (with method, pathParams, queryParams, headers, body) |      ✅      |        ✅       |       ✅       |     ✅     |

### Advanced options

| Feature                | Java V2.1.0 | Node.js V2.1.0 | Python V2.1.0 | Go V2.1.0 |
| ---------------------- | :---------: | :------------: | :-----------: | :-------: |
| **Insert options**     |             |                |               |           |
| `continueOnError`      |      ✅      |        ✅       |       ✅       |     ✅     |
| `returnTokens`         |      ✅      |        ✅       |       ✅       |     ✅     |
| `upsert`               |      ✅      |        ✅       |       ✅       |     ✅     |
| `homogeneous`          |      ✅      |        ✅       |       ✅       |     ✅     |
| `tokenMode` (BYOT)     |      ✅      |        ✅       |       ✅       |     ✅     |
| **Get options**        |             |                |               |           |
| `redactionType`        |      ✅      |        ✅       |       ✅       |     ✅     |
| `returnTokens`         |      ✅      |        ✅       |       ✅       |     ✅     |
| `fields` filter        |      ✅      |        ✅       |       ✅       |     ✅     |
| `offset` / `limit`     |      ✅      |        ✅       |       ✅       |     ✅     |
| `downloadUrl`          |      ✅      |        ✅       |       ✅       |     ✅     |
| `orderBy`              |      ✅      |        ✅       |       —       |     ✅     |
| **Detokenize options** |             |                |               |           |
| `continueOnError`      |      ✅      |        ✅       |       ✅       |     ✅     |
| `downloadUrl`          |      ✅      |        ✅       |       —       |     ✅     |

### Client management *(new in v2)*

| Feature                                                                    | Java V2.1.0 | Node.js V2.1.0 | Python V2.1.0 | Go V2.1.0 |
| -------------------------------------------------------------------------- | :---------: | :------------: | :-----------: | :-------: |
| Multi-vault (`addVaultConfig` / `updateVaultConfig` / `removeVaultConfig`) |      ✅      |        ✅       |       ✅       |     ✅     |
| Multi-connection (`addConnectionConfig` / `removeConnectionConfig`)        |      ✅      |        ✅       |       ✅       |     ✅     |
| Per-instance logging (`setLogLevel` / `getLogLevel`)                       |      ✅      |        ✅       |       ✅       |     ✅     |

### Migrating from V1

With V2 now GA, V1 enters maintenance mode and will receive critical security patches through October 31, 2026. Each SDK includes a step-by-step migration guide with before/after code examples.

- [V1 to V2.1.0 migration guide for Go](https://docs.skyflow.com/docs/sdks/sdk-go-migration-v1-to-v2)
- [V1 to V2.1.0 migration guide for Python](https://docs.skyflow.com/docs/sdks/sdk-python-migration-v1-to-v2)
- [V1 to V2.1.0 migration guide for Node.js](https://docs.skyflow.com/docs/sdks/sdk-node-migration-v1-to-v2)
- [V1 to V2.1.0 migration guide for Java](https://docs.skyflow.com/docs/sdks/sdk-java-migration-v1-to-v2)

**V1 is deprecated.** V1 reaches end of life on October 31, 2026. The table
below reflects v1 capabilities for migration reference only. For new
integrations, use V2.1.0.

| Feature                           | Java | Node.js | Python |  Go |
| --------------------------------- | :--: | :-----: | :----: | :-: |
| Auth: bearer token generation     |   ✅  |    ✅    |    ✅   |  ✅  |
| Auth: bearer token with context   |   ✅  |    ✅    |    —   |  —  |
| Auth: scoped bearer tokens        |   ✅  |    ✅    |    —   |  —  |
| Auth: signed data tokens          |   ✅  |    ✅    |    —   |  —  |
| Connections: invoke               |   ✅  |    ✅    |    ✅   |  ✅  |
| Data: insert record               |   ✅  |    ✅    |    ✅   |  ✅  |
| Data: insert in bulk              |   ✅  |    ✅    |    ✅   |  ✅  |
| Data: detokenize                  |   ✅  |    ✅    |    ✅   |  ✅  |
| Data: get record by skyflow\_id   |   ✅  |    ✅    |    ✅   |  ✅  |
| Data: get record by unique values |   ✅  |    ✅    |    —   |  ✅  |
| Data: redaction types             |   ✅  |    ✅    |    ✅   |  ✅  |

Don't see your preferred language? You can also generate SDKs using Skyflow's [OpenAPI documents](https://docs.skyflow.com/docs/references/openapi-postman) or use the [Data](/api/data/), [Detect](https://docs.skyflow.com/api/detect), [Payments](https://docs.skyflow.com/api/payments), and [Management](https://docs.skyflow.com/api/management) APIs directly.

## Client-side SDKs

The client-side SDKs include Skyflow Elements, embeddable UI components that help you collect sensitive data securely from the client without exposing your app to sensitive data. They help you handle tokenization, PCI compliance, and compliance with data privacy regulations.

#### [JavaScript](https://github.com/skyflowapi/skyflow-js)

#### [React](https://github.com/skyflowapi/skyflow-react-js)

#### [React Native](https://github.com/skyflowapi/skyflow-react-native)

#### [iOS](https://github.com/skyflowapi/skyflow-ios)

#### [Android](https://github.com/skyflowapi/skyflow-android)