Skip to main content

SDKs Overview

Zyphr provides official SDKs for 6 platforms, all auto-generated from our OpenAPI specification. Every SDK stays perfectly in sync with the API.

Available SDKs

PlatformPackageInstallRegistry
Node.js / React / React Native@zyphr-dev/node-sdknpm install @zyphr-dev/node-sdknpm
MCP Server (AI clients)@zyphr-dev/mcp-servernpx -y @zyphr-dev/mcp-servernpm
Swift (server-side)ZyphrSDKSee Swift guideCocoaPods / SPM
Kotlin (server-side)dev.zyphr:zyphr-sdkSee Kotlin guideMaven Central
C# / .NETZyphrDev.SDKdotnet add package ZyphrDev.SDKNuGet
Rubyzyphrgem install zyphrRubyGems
Pythonzyphrpip install zyphrPyPI
GoREST integrationSee Go guideUse Go's net/http package
PHPzyphr/zyphr-phpcomposer require zyphr/zyphr-phpPackagist
React Inbox (Web)@zyphr-dev/inbox-reactnpm install @zyphr-dev/inbox-reactnpm
React Native Inbox@zyphr-dev/inbox-react-nativenpm install @zyphr-dev/inbox-react-nativenpm
These SDKs authenticate with a secret key

Every SDK above except the client-side inbox packages holds a secret API key (zy_live_* / zy_test_*) and belongs on a server. A secret key in a mobile app bundle is extractable from any APK or IPA — a native iOS or Android app should call your own backend, and your backend calls Zyphr.

The one credential that is safe in a client app is the publishable application key (za_pub_*) used by ZyphrClient, which covers end-user auth flows from a browser or React Native app.

SDK Features

All SDKs provide:

  • Type Safety - Full type definitions for all requests and responses
  • Native HTTP - Uses each platform's native HTTP client (fetch, URLSession, OkHttp, HttpClient, Faraday)
  • Auto-Generated - Always in sync with the latest API specification
  • Zero Config - Just provide your API key and start sending

Quick Comparison

MCP Server (any AI client)

{
"mcpServers": {
"zyphr": {
"command": "npx",
"args": ["-y", "@zyphr-dev/mcp-server"],
"env": { "ZYPHR_API_KEY": "zy_test_..." }
}
}
}

See the MCP Server guide for the full tool list.

Node.js / TypeScript

import { EmailsApi, Configuration } from '@zyphr-dev/node-sdk';

const config = new Configuration({
apiKey: process.env.ZYPHR_API_KEY,
});

const emails = new EmailsApi(config);
await emails.sendEmail({
sendEmailRequest: {
to: 'user@example.com',
subject: 'Hello',
html: '<p>Hi!</p>',
},
});

Swift (server-side)

import ZyphrSDK

// Server-side only — a secret key must never ship in an iOS bundle.
// See the Swift SDK guide for the backend-proxy shape.
let config = Configuration(apiKey: ProcessInfo.processInfo.environment["ZYPHR_API_KEY"]!)
let emails = EmailsAPI(configuration: config)

try await emails.sendEmail(
sendEmailRequest: SendEmailRequest(
to: "user@example.com",
subject: "Hello",
html: "<p>Hi!</p>"
)
)

Kotlin (server-side)

import dev.zyphr.sdk.api.EmailsApi
import dev.zyphr.sdk.infrastructure.ApiClient

// Server-side only — a secret key must never ship in an APK.
// See the Kotlin SDK guide for the backend-proxy shape.
val client = ApiClient(apiKey = System.getenv("ZYPHR_API_KEY"))
val emails = EmailsApi(client)

emails.sendEmail(
SendEmailRequest(
to = "user@example.com",
subject = "Hello",
html = "<p>Hi!</p>"
)
)

React Inbox (Web)

import { ZyphrProvider, InboxPopover } from '@zyphr-dev/inbox-react';
import '@zyphr-dev/inbox-react/styles.css';

function App() {
return (
<ZyphrProvider subscriberToken={token}>
<InboxPopover />
</ZyphrProvider>
);
}

React Native Inbox

import { ZyphrProvider, InboxPopover } from '@zyphr-dev/inbox-react-native';

function App() {
return (
<ZyphrProvider subscriberToken={token}>
<InboxPopover />
</ZyphrProvider>
);
}

REST API

Don't see your language? The REST API is simple to use directly:

curl -X POST https://api.zyphr.dev/v1/emails \
-H "X-API-Key: zy_live_xxx" \
-H "Content-Type: application/json" \
-d '{"to": "user@example.com", "subject": "Hello", "html": "<p>Hi!</p>"}'

Contributing & Support

Found a bug, want to request a feature, or need a new language SDK? Email support@zyphr.dev — we triage every request and prioritize based on customer demand.