---
title: Overview
description: Notiflows SDKs for server-side and client-side integration
---

Notiflows provides SDKs to help you integrate notifications into your application. There are two types of SDKs:

- **Server-side SDKs** - Trigger notiflows and manage users from your backend
- **Client-side SDKs** - Display notifications and manage preferences in your frontend

## Server-side SDKs

Server-side SDKs authenticate using your **Secret API Key** and are used to:

- Trigger notiflows to send notifications
- Create and manage users
- Manage topic subscriptions
- Query notifications and delivery status

<Cards>
  <Card title="Node.js" href="/docs/sdks/server-side/node">
    Official SDK for Node.js applications
  </Card>
  <Card title="Python" href="/docs/sdks/server-side/python">
    Official SDK for Python applications
  </Card>
  <Card title="Ruby" href="/docs/sdks/server-side/ruby">
    Official SDK for Ruby applications
  </Card>
  <Card title="Go" href="/docs/sdks/server-side/go">
    Official SDK for Go applications (coming soon)
  </Card>
  <Card title="PHP" href="/docs/sdks/server-side/php">
    Official SDK for PHP applications (coming soon)
  </Card>
  <Card title="Java" href="/docs/sdks/server-side/java">
    Official SDK for Java applications (coming soon)
  </Card>
  <Card title=".NET" href="/docs/sdks/server-side/dotnet">
    Official SDK for .NET applications (coming soon)
  </Card>
</Cards>

## Client-side SDKs

Client-side SDKs authenticate using a **User Key** (generated per-user) and are used to:

- Display in-app notification feeds
- Mark notifications as read, seen, or archived
- Manage user notification preferences
- Subscribe to real-time notification updates

<Cards>
  <Card title="JavaScript" href="/docs/sdks/client-side/javascript">
    Core client for any JavaScript application
  </Card>
  <Card title="React" href="/docs/sdks/client-side/react">
    React components and hooks for notification UI
  </Card>
  <Card title="Swift" href="/docs/sdks/client-side/swift">
    Native SDK for iOS, iPadOS, macOS, and watchOS (coming soon)
  </Card>
  <Card title="Kotlin" href="/docs/sdks/client-side/kotlin">
    Native SDK for Android (coming soon)
  </Card>
</Cards>

## Authentication

### Server-side Authentication

Server-side SDKs use your project's **API Key** and **Secret Key** for authentication. You can find them in your project settings under **API Keys**.

```typescript
import Notiflows from '@notiflows/node';

const client = new Notiflows({
  apiKey: process.env.NOTIFLOWS_API_KEY,
  secret: process.env.NOTIFLOWS_SECRET,
});
```

<Callout type="warn">
Never expose your Secret API Key in client-side code. It should only be used in your backend.
</Callout>

### Client-side Authentication

Client-side SDKs require a **User Key** that you generate on your backend for each authenticated user. This ensures users can only access their own notifications.

See [Generating User Tokens](/docs/api/user/authentication#generating-user-tokens) for detailed instructions on how to generate user keys from your backend.

## API Reference

All SDKs interact with the Notiflows API. For detailed endpoint documentation, see:

- [Admin API Reference](/docs/api/admin) - Server-to-server API
- [User API Reference](/docs/api/user) - Client-side API
