nimeet Docs
中文

Console Guide

Sign-in, projects, key rotation, service enablement, token builder, usage, analytics, webhooks, members and audit.

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

The console is the self-hosted admin UI: sign in, create projects, obtain credentials, enable services, generate tokens, review usage and Analytics, configure webhooks, and manage members and audit. This page is organised around what you do in the UI, and every action comes with the equivalent REST call so you can script it.

Routes and pages

PagePathWhat you can do
Sign in/loginSign in with email and password to get a session
Project list/projectsView and open projects
New project/projects/newCreate a project, choose the services to enable, set quotas
Project overview/p/:projectId/overviewChannel count, task count, usage over the last 24h
Settings/p/:projectId/settingsRename, quotas, rotate keys
Services/p/:projectId/servicesEnable/disable recording, streaming, and so on
Token generator/p/:projectId/tokensGenerate and verify debug tokens
Webhook/p/:projectId/webhookConfigure the URL and secret, inspect the delivery log, replay
Members/p/:projectId/collaboratorsAdd/remove collaborators and their roles
Audit/p/:projectId/auditWho changed what, and when
Usage/p/:projectId/usageMinutes and amount by hour/day/month
Analytics/p/:projectId/crystal-ballReal-time monitoring, quality, call investigation, data insights
Recordings/p/:projectId/recordingsRecording task list and status
Streams/p/:projectId/streamsStream task list and status

First things first: create a project and save its credentials

In the UI: /projects/new → fill in a name → tick the services to enable → create.

customerSecret and appCertificate are shown only once; close the dialog and they are gone for good. Store them in your secret manager immediately. If you lose them, rotation is the only remedy (see below).

Equivalent call:

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H 'Content-Type: application/json' \
  -d '{"name":"my-project","services":{"recording":true,"streaming":true}}'

Key rotation (the most dangerous operation)

Entry point: the project settings page → rotate Customer Secret / App Certificate. You can also call:

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/keys/rotate" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H 'Content-Type: application/json' \
  -d '{"scope":"all"}'

scope accepts all / customerSecret / appCertificate. After rotation:

  • if customerSecret changed → every server-side Basic call returns 401 immediately, so update your server configuration before rotating;
  • if appCertificate changed → every token already issued becomes invalid immediately, and clients in an active call are disconnected at the next expiry check.

Recommended rhythm: announce one hour ahead → update the server configuration → rotate → watch the 401 invalid_token curve → have clients renew or reconnect proactively.

Enabling services

Entry point: the project services page. Once a service is disabled, the corresponding endpoints return 403 service_not_enabled (there is no silent degradation).

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/services" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H 'Content-Type: application/json' \
  -d '{"recording":true,"streaming":false}'

Token generator

Entry point: the Token generator page; fill in channel name / uid / role / TTL, and after generating you can copy the token straight into a debug client. While generating you can also click "Verify" to read the privilege bits and expiry back (equivalent to GET /v1/tokens/verify).

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/token" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H 'Content-Type: application/json' \
  -d '{"channelName":"weekly-sync","uid":10001,"role":"host","ttlSeconds":600}'

Webhook configuration and delivery log

Entry point: the Webhook page → fill in the URL and secret → select events → save. Saving triggers a test delivery immediately (X-Request-Id can be used to trace it).

bash
curl -s -X PUT "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com/hooks/nimeet","secret":"$WEBHOOK_SECRET","events":["channel_create","user_join"],"enabled":true}'

# delivery log (failure reason, response code, retry count)
curl -s "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook/deliveries?limit=20" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

# replay one failed delivery
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook/deliveries/$DELIVERY_ID/replay" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

Signature and retry semantics are in Callback integration.

Members and audit

  • The members page lets you add/remove collaborators and assign roles (owner / admin / developer / viewer);
  • The audit page lists project-level changes in reverse chronological order (who, when, what changed); it is commonly used for accountability and troubleshooting after a key rotation;
  • Both actions have REST equivalents: /console/projects/{projectId}/collaborators and /console/projects/{projectId}/audit.

Usage and Analytics

  • Usage page: minutes and the amount by hour/day/month; the definitions are in Billing model;
  • Analytics page: real-time curves for the last 30 minutes, quality distribution, call investigation, data insights; the definitions are in Analytics;
  • Both draw on the same API as the console, so the numbers you see on the page can be reproduced directly over REST.

FAQ

SymptomCauseFix
401 when signing inWrong email/password, or the seeded password was changedCheck CONSOLE_SEED_PASSWORD
Empty project listThe session belongs to another accountSign out and sign in again
Credentials not visibleThey are returned once and the dialog was closedRotate the keys
Everything returns 401 after rotationThe server still uses the old secretUpdate the environment variables and restart
Empty delivery logThe event has not happened yet, or the service is not enabledTrigger a join and check again
Usage numbers are 0Wrong time window (it defaults to today)Switch the time window

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.