nimeet Docs
中文

Server SDKs

Node, Java, Go, Python, .NET and PHP server SDKs: structure, install, token and REST helpers.

Version v1.1.0 · Updated 2026-10-26 · revision 1

The server SDK solves three things: issuing tokens, calling REST and verifying callback signatures. Node / Java / Go / Python / .NET / PHP provide the same semantics.

Three layers

LayerContentsDocumentation
TokenAccessToken2 / RtcTokenBuilder / RtmTokenBuilder: issue and verify channel tokensAccessToken2 semantics
REST clientAgora-shaped endpoint wrappers (channel queries, bans, recording, streaming, Analytics)REST API reference
CallbacksAgora-Signature (SHA1) / Agora-Signature-V2 (SHA256) verification and envelope parsingCallback integration

Installation

LanguagePackage / how to include
Node.js / TypeScript@nimeet/server-sdk
JavaAdd the Java server SDK dependency to your pom.xml
GoGo module nimeet
Pythonpip install . (no runtime dependencies)
.NET / C#NiMeet.ServerSdk.csproj
PHPcomposer require nimeet/server-sdk

Issue a token in three lines (Node)

typescript
import { NiMeetClient, RtcTokenBuilder2 } from '@nimeet/server-sdk';

const token = RtcTokenBuilder2.buildTokenWithUid(appId, appCertificate, 'weekly-sync', 10001, 'host', 3600, 3600);
const channels = await new NiMeetClient({ baseUrl, customerId, customerSecret }).api.getChannelByAppid(appId, 0, 100);

The parameter order is identical in every language: appId, appCertificate, channel, uid, role, tokenTtlSeconds, privilegeTtlSeconds. For token semantics (privilege bits, exp/pexp, wildcards) see AccessToken2 semantics.

When to use the SDK and when to call HTTP directly

ScenarioRecommendation
You have a backend and need to issue tokensUse the SDK (no need to re-implement signing)
Bulk channel queries / moderationUse the SDK's typed wrappers
Dependency-injection framework, fine-grained timeout/retry controlHTTP directly with your own client
Edge functions (size-sensitive)HTTP directly (the SDK type surface is larger)

Callback verification (same shape in every language)

typescript
import { verifyCallbackSignature } from '@nimeet/server-sdk';

// Use the raw request-body bytes; do not deserialise first
const ok = verifyCallbackSignature({
  rawBody,
  signature: headers['agora-signature'],
  signatureV2: headers['agora-signature-v2'],
  secret: process.env.WEBHOOK_SECRET!,
});

For event codes and payloads see Callback event reference; for retries and reconciliation see Callback integration.

FAQ

SymptomCauseFix
401 invalid_credentialscustomerSecret is the pre-rotation valueGet the current secret from the console and update the environment variable
Generated token fails verificationThe appCertificate belongs to another projectOne project has one set of credentials; do not reuse them across projects
Callback signature never matchesYou re-serialised the deserialised JSONUse the raw body bytes
Go module cannot be fetchedThe module proxy is unreachablePoint replace at a local directory
No PHP runtime availableThe environment has no PHPAn environment limitation, not an SDK problem

Generated by the documentation build pipeline · 2026-10-31 01:24:02 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.