Skip to main content

Errors and troubleshooting

Server SDK errors​

CodeMeaningCheck
SDK_CLIENT_NOT_CONFIGUREDAn unconfigured side was accessedClassroom/whiteboard configuration
SDK_TOKEN_INPUT_INVALIDInvalid local signing inputApplication, secret, user/room identifiers and TTL
SDK_NETWORK_ERRORNetwork call failedDNS, TLS, endpoint and connectivity
SDK_TIMEOUTRequest timed outWhether the server already completed the operation
SDK_INVALID_JSONInvalid JSON responseGateway error pages, proxies and routing
HTTP_<status> or backend errorCodeServer rejected the requestHTTP status and traceId

Use EduskitError fields status, errorCode, traceId, path and source. Python uses snake_case, Java getters and Go exported fields. A local signing error makes no HTTP request and may have no server trace.

Client errors​

Client errors use five-digit numeric module codes, separate from server SDK SDK_* strings:

Range / codeModule or meaning
10001 / 10003 / 10004Not initialized / invalid argument / invalid state
20001 / 20002 / 20003Classroom not found / permission denied / backend or network failure
20004Backend response lacks required SDK fields
20005Entry aborted
20006 / 20007 / 20008Not started / ended / expired
30001 / 40001 / 50001 / 60001IM / whiteboard / RTC / live provider failure
70001UI resource error
80001 / 80002 / 80003Provider missing / platform provider failure / not implemented
90001Unknown internal error

Investigate by stage​

  1. Installation/build: check package coordinates, architecture, matching native bindings and WASM assets.
  2. Registration/creation: use server-api, check credentials and durationMinutes; schedule at least 10 minutes ahead.
  3. Join 401/403: check token audience, expiry, application/environment, registration and roster.
  4. Join returned but not ready: check IM connectivity, login and group confirmation; HTTP completion is not entry readiness.
  5. Whiteboard/media-only failure: inspect the affected onJoinProgress domain, then OS permissions, provider credentials, assets and connectivity.
  6. Device icon disagrees with reality: update from onStreamInfoChanged, not only command acknowledgments.

Record time, SDK version, platform, classroom/user IDs, phase and error code. Preserve traceId across services and distinguish repeated joins by session/attempt. Exclude secrets, full tokens, UserSig and signed download URLs from logs.