Skip to main content
These events fire when fatal or non-fatal errors occur during a call.

error

Prebuilt Custom Fires when an unrecoverable error ends the call. A left-meeting event fires immediately after.
action
string
Always "error".
callClientId
string
The ID of the call client instance that emitted this event.
errorMsg
string
A human-readable description of the error.
error
object
Present when the error type is known. Always contains type and msg. When type is 'connection-error', also includes a details object — see below.
typeDescription
ejectedThe local participant was removed from the call by an owner.
nbf-roomThe room is not yet valid — current time is before the room’s nbf (not-before) timestamp.
nbf-tokenThe meeting token is not yet valid — current time is before the token’s nbf timestamp.
exp-roomThe room has expired.
exp-tokenThe meeting token has expired.
no-roomThe room does not exist.
meeting-fullThe room has reached its participant limit.
end-of-lifeThe daily-js version in use is no longer supported.
not-allowedThe participant is not permitted to join this room (e.g. token or privacy settings).
connection-errorA network or infrastructure failure prevented or severed the connection. This is the only type with a structured details object.
// Example event object
{
  "action": "error",
  "errorMsg": "network unreachable",
  "callClientId": "17225364729060.9442072768918943",
  "error": {
    "type": "ejected",
    "msg": "You were removed from the call"
  }
}
call.on('error', ({ error }) => {
  if (error?.type === 'ejected') {
    showEjectedMessage();
  } else {
    showGenericErrorMessage(error?.msg);
  }
});

connection-error details

When error.type is 'connection-error', an additional details object identifies where in the lifecycle the failure occurred:
details.on
string
Lifecycle stage where the failure occurred: 'load', 'join', 'reconnect', 'move', 'rtc-connection', or 'room-lookup'.
details.sourceError
object
The underlying error from the browser or network layer.
details.uri
string
Optional. The resource URL that failed to load.
details.workerGroup
string
Optional. Internal routing group.
details.geoGroup
string
Optional. Internal geo region.
details.bundleUrl
string
Optional. The call bundle URL if the failure was during bundle fetch.
// Example: connection-error
{
  "action": "error",
  "errorMsg": "Failed to connect",
  "callClientId": "17225364729060.9442072768918943",
  "error": {
    "type": "connection-error",
    "msg": "Failed to connect",
    "details": {
      "on": "join",
      "sourceError": {},
      "uri": "https://c.daily.co/static/call-machine-object-bundle.js"
    }
  }
}

nonfatal-error

Prebuilt Custom Non-fatal errors are recoverable — the call continues after they fire. They signal that something went wrong in a specific subsystem but did not bring down the call. Use these to surface targeted warnings in your UI.
action
string
Always "nonfatal-error".
callClientId
string
The ID of the call client instance that emitted this event.
type
string
Identifies which subsystem the error came from. See the subtypes below.
errorMsg
string
A human-readable description of the error.

input-settings-error

Fires when an error occurs while applying input settings changes.
details.category
string
Either 'settings' (error while applying media settings) or 'processor' (error while setting up the processor).
details.media
string[]
The affected media types — 'video' and/or 'audio'.
details.error
object
The underlying error. Contains a camera-error-shaped object if the failure was getting user media, or the processor error if the failure was in the processor.
{
  "action": "nonfatal-error",
  "type": "input-settings-error",
  "errorMsg": "...",
  "details": {
    "media": ["video"],
    "category": "settings",
    "error": {
      "failedMedia": ["video"],
      "msg": "Invalid constraints provided.",
      "reason": "invalid",
      "type": "constraints"
    }
  },
  "callClientId": "17225364729060.9442072768918943"
}

live-streaming-warning

Fires when an error occurs during a live stream — for example, when attempting to remove all live streaming endpoints.
{
  "action": "nonfatal-error",
  "type": "live-streaming-warning",
  "errorMsg": "...",
  "callClientId": "17225364729060.9442072768918943"
}

local-audio-level-observer-error

Fires if an error occurs while the local audio level observer is running.
{
  "action": "nonfatal-error",
  "type": "local-audio-level-observer-error",
  "errorMsg": "...",
  "callClientId": "17225364729060.9442072768918943"
}

meeting-session-data-error

Fires when an error occurs updating meeting session data via setMeetingSessionData().
{
  "action": "nonfatal-error",
  "type": "meeting-session-data-error",
  "errorMsg": "Meeting session data is too large. Maximum size supported is 100KB.",
  "callClientId": "17225364729060.9442072768918943"
}

screen-share-error

Fires when an error occurs while starting a screen share.
details.category
string
Either 'permissions' (user or OS blocked screen sharing) or 'unknown' (a getDisplayMedia() exception for another reason).
details.blockedBy
string
Present when category is 'permissions'. Either 'browser' (user denied access) or 'os' (OS is configured to block screen sharing).
details.browserError
object
The underlying browser error, including name and message.
// Example: permissions error
{
  "action": "nonfatal-error",
  "callClientId": "17225364729060.9442072768918943",
  "type": "screen-share-error",
  "errorMsg": "Error starting ScreenShare: blocked-by-browser",
  "details": {
    "category": "permissions",
    "blockedBy": "browser",
    "browserError": {
      "name": "NotAllowedError",
      "message": "The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
    }
  }
}
// Example: unknown error
{
  "action": "nonfatal-error",
  "callClientId": "17225364729060.9442072768918943",
  "type": "screen-share-error",
  "errorMsg": "Error starting ScreenShare: unknown",
  "details": {
    "category": "unknown",
    "browserError": {
      "name": "AbortError",
      "message": "In shutdown",
      "code": 20
    }
  }
}

video-processor-warning

Fires when the user enables background effects in a browser where performance will likely be degraded — for example, when hardware graphics acceleration is disabled. This often correlates with very low frame rates on the outgoing video stream. This is powered by the failIfMajorPerformanceCaveat WebGL property.
{
  "action": "nonfatal-error",
  "type": "video-processor-warning",
  "errorMsg": "Background processing using software WebGL. Performance may be degraded.",
  "callClientId": "17225364729060.9442072768918943"
}

video-processor-error

Fires when CPU usage becomes too high, causing the video processor to turn off and the camera to mute.
{
  "action": "nonfatal-error",
  "type": "video-processor-error",
  "errorMsg": "...",
  "callClientId": "17225364729060.9442072768918943"
}

audio-processor-error

Fires when audio processing (noise cancellation) fails, causing the audio processor to turn off and the microphone to mute.
{
  "action": "nonfatal-error",
  "type": "audio-processor-error",
  "errorMsg": "...",
  "callClientId": "17225364729060.9442072768918943"
}

See also