Official Signalbird SDKv1.4.0

Whatever you do in the panel,
kodla da yapabilirsiniz

One package, five surfaces, twelve entry points. Write logs, send email/SMS/push, manage your Radio project and chat inbox, put live chat in your mobile app — all under the same contract.

NPMnpm install signalbird
COMPOSERcomposer require pariette/signalbird
PIPpip install signalbird
4
surfaces
12
entry points
84
methods, same names everywhere
0
dependencies
01Five surfaces

Enter through the door that matches your job

Each surface has its own key. That is not friction, it is a deliberate wall: the key that writes logs cannot send email, and the key embedded in your site cannot read your contact list.

The Management surface is not an admin interface. A key belongs to a single team and touches only that team's records; user, billing and subscription operations are not in the SDK.

02Code samples

Pick your language, copy it

Every call here genuinely exists in the package. Method names are identical across languages; only the naming convention changes.

typescript
import { signalbird } from 'signalbird'

// SIGNALBIRD_KEY ortam değişkeninden okunur

// Kritik kanal — kime gideceği, sessiz saatte ne olacağı,
// kaç kez uyaracağı PANELDE durur. Kod yalnız olayı bildirir.
await signalbird().critical('critical', 'ödeme servisi yanıt vermiyor', {
  service: 'iyzico',
  attempt: 3,
})

// Rutin kayıt — panelde görünür, bildirim göndermez
await signalbird().info('info', 'ahmet@x.com yeni hesap oluşturdu')

// Yakalanmamış hatalar tek satırla bağlanır
signalbird().captureUncaught('critical')

Telsiz · 12 / 12

03In five minutes

From install to the first call

  1. 01

    Create your key

    For Radio, open a project in the panel (Radio → Projects); the secret key is shown once. For Messaging and Management, create a key with the scopes you need under Console → API Keys.

  2. 02

    Paketi kurun

    One package carries every surface. It brings no dependencies — it will not fight your project's HTTP client version.

  3. 03

    Call it

    It does not throw: if Radio is unreachable your payment flow keeps working. The result is always an ok/status/code envelope.

  4. 04

    Manage the rule from the panel

    Channel settings, working hours, alert recipients and chat appearance live in the panel. Your code only reports the event.

bash
# 1 — paketi kurun
npm install signalbird

# 2 — anahtarı verin
export SIGNALBIRD_KEY=sbr_live_…      # Telsiz (panel → Telsiz → Projeler)
export SIGNALBIRD_API_KEY=sb_…        # Gönderim + Yönetim (Konsol → API Anahtarları)
typescript
import { signalbird, management } from 'signalbird'

// Log yaz
await signalbird().critical('critical', 'ödeme servisi yanıt vermiyor')

// Kendi projenizi yönetin
await management().createRadioProject({ name: 'ödeme-servisi' })
04Dil matrisi

What exists in which language

They ship from the same tag and carry the same version. There is no separate SDK repository and no per-language versioning.

Dil / platformTelsizMessagingManagementUygulamaPartnerKurulum
Node.js / TypeScriptnpm install signalbird
Tarayıcı (düz JS)npm install signalbird
React / Next.jsnpm install signalbird
Vue 3npm install signalbird
Angularnpm install signalbird
React Native / Exponpm install signalbird
PHP / Laravelcomposer require pariette/signalbird
Pythonpip install signalbird
Gogo get github.com/Pariette-Inc/signalbird.sdk
.NET / ASP.NET Coredotnet add package Signalbird.Sdk
Swift (iOS)https://github.com/Pariette-Inc/signalbird.sdk
Kotlin (Android)implementation("io.signalbird:signalbird-sdk:1.9.0")
05Design decisions

Why it is written this way

Zero dependencies

fetch on Node, cURL in PHP, urllib in Python, the standard library in Go, HttpClient in .NET. An SDK dictating an HTTP client version is the most common source of version conflicts.

Parity across languages

A method added to one language and not another breaks the build. The method set of all five surfaces is identical in every language.

Silent failure

Shipping a log or drawing a chat bubble is not your application's real job. If Signalbird is unreachable, your payment flow keeps running.

No automatic retry

Sending the same message twice costs more than not sending it at all, and ringing a critical alarm twice is no better. The decision to retry is yours.

Key type is checked at construction

Pass a key from the wrong family and you get an error while building the client, not on the first request. Better than swallowing a 401 and noticing weeks later.

Public and secret keys are separate

Only the public key reaches browsers and mobile apps; its safety comes from constraint rather than secrecy — allowed origins, allowed channels, only its own data.

06Error codes

Silent failure, explicit code

The default behaviour is not to throw. The result envelope returns ok:false and a machine-readable code; during development you can turn exceptions on with throwOnError.

KodMeaning
INVALID_KEYKey missing, wrong, or project inactive
WRONG_KEY_TYPEKey from the wrong family — caught at construction time
SECRET_KEY_IN_BROWSERA secret key was used from a browser
ORIGIN_NOT_ALLOWEDThis domain is not registered on the key
API_KEY_SCOPEThe key lacks the required scope (e.g. radio:write)
MODULE_DISABLEDYour package does not include this module
LIMIT_REACHEDYour monthly limit is used up
VALIDATION_ERROR422 — the body failed validation
VISITOR_INVALIDThe visitor secret is invalid; the local identity is cleared and a new session opens
NETWORK_ERRORThe network was unreachable (status 0)
TIMEOUTTimed out (status 0)
07Belgeler

Detailed documentation

A page per language: full method list, field names, error codes and real examples.

Do not let your code stay silent
connect it in five minutes

Create your key, install the package, make the first call. Changing a rule will never need another release.