---
sourceDocument: Australia API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/api-reference

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# NowVoiceService class - Android

# NowVoiceService class - Android {#ariaid-title1}

Release version: Australia  
Updated July 21, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read  
Manages voice agent sessions for a single ServiceNow instance.  
Note:  
Initialize a NowVoiceService by calling [NowVoiceSDK - makeVoiceService(instanceURL: URL)](https://servicenow-prod.fluidtopics.net/Y5cEntbqq7WxFM~uZUrQKg#NVoiceSDK-makeVoiceService_S "Creates a NowVoiceService instance for the specified ServiceNow instance. This is a suspend function.").  
{#NowVoiceServiceAndroidAPI__table_vx2_klw_nva1__entry__3}

| Name | Type | Description |
|-|-|-|
| configuration | [NowServiceConfiguration](https://servicenow-prod.fluidtopics.net/QG_Kyv2OgBbJrTDafvRhEw "The NowServiceConfiguration class enables you to configure the ServiceNow instance URL and package name for a feature service.") | The service configuration for the ServiceNow instance. |
| isMuted | Boolean | Flag that indicates the microphone mute state for the current call. Setting this property has no effect if no call is currently active. Valid values: * true: The microphone is muted. * false: The microphone is unmuted or no call is active. {#NowVoiceServiceAndroidAPI__ul_png_bdk_jkc} |
| nowVoiceEndpoints | List\<[NowVoiceEndpoint](https://servicenow-prod.fluidtopics.net/QhLOadYxolFqg5zfTiqqcw "Describes a voice agent endpoint.")\> | Read-only. The list of available voice endpoint configurations retrieved from the instance. |
[Table 1. Properties]

{#NowVoiceServiceAndroidAPI__table_vx2_klw_nva1}

## NowVoiceService - endCall() {#ariaid-title2}

Ends the current voice call.
Has no effect if no call is active.
{#NVoiceServA-endCall__table_cs5_2ck_jkc__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 2. Parameters]

{#NVoiceServA-endCall__table_cs5_2ck_jkc} {#NVoiceServA-endCall__table_qft_qzv_nva8__entry__2}

| Type | Description |
|-|-|
| None |   |
[Table 3. Returns]

{#NVoiceServA-endCall__table_qft_qzv_nva8}  
The following code example ends the active voice call.

    val voiceService = NowVoiceSDK.makeVoiceService(instanceUrl).getOrNull()

    val endpoint = voiceService?.nowVoiceEndpoints?.first()
    voiceService?.start(activity, endpoint = endpoint, theme = theme)

    // End a call on timeout, navigation, or from a custom hang-up button
    voiceService?.endCall()

## NowVoiceService - hasActiveCall() {#ariaid-title3}

Checks whether there is a currently active voice call.
{#NVoiceServA-hasActiveCall__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 4. Parameters]

{#NVoiceServA-hasActiveCall__table_qft_qzv_nva8__entry__2}

| Type | Description |
|-|-|
| Boolean | Flag that indicates whether there is an active voice call. Valid values: * true: There is an active voice call. * false: There isn't an active voice call. {#NVoiceServA-hasActiveCall__ul_qs4_pbk_jkc} |
[Table 5. Returns]

{#NVoiceServA-hasActiveCall__table_qft_qzv_nva8}  
The following code example checks if a voice call is in progress.

    val voiceService = NowVoiceSDK.makeVoiceService(instanceUrl).getOrNull()

    val endpoint = voiceService?.nowVoiceEndpoints?.first()
    voiceService?.start(activity, endpoint = endpoint, theme = theme)

    // Guard UI state or prevent starting a second call
    if (voiceService?.hasActiveCall() == true) {
        // A voice call is currently in progress
    }

## NowVoiceService - start(context: Context, endpoint: NowVoiceEndpoint, uiConfiguration: NowVoiceUiConfiguration, callbacks: NowVoiceCallbacks?, theme: NowVoiceTheme) {#ariaid-title4}

Launches the full-screen voice agent Activity. This is a suspend function that returns
after the session ends.
{#NVoiceServA-start_O_O_O_O_O__table_pft_qzv_nva2__entry__3}

| Name | Type | Description |
|-|-|-|
| context | [Context](https://developer.android.com/reference/kotlin/android/content/Context.html) | An Android `Context` used to launch the voice Activity. Typically your current `Activity`. |
| endpoint | [NowVoiceEndpoint](https://servicenow-prod.fluidtopics.net/QhLOadYxolFqg5zfTiqqcw "Describes a voice agent endpoint.") | The voice agent endpoint to connect to. Obtain from `NowVoiceService.nowVoiceEndpoints`. |
| uiConfiguration | [NowVoiceUiConfiguration](https://servicenow-prod.fluidtopics.net/hsJ~RrANdqidMjrgfzTIIw#NVoiceUiConfigAndroidClass "Specifies presentation options for the voice agent UI.") | Optional. Presentation options for the voice agent UI. If omitted, uses the default values for NowVoiceUiConfiguration. |
| callbacks | [NowVoiceCallbacks](https://servicenow-prod.fluidtopics.net/tBbBnJvnoXTqckiFmtaiaA "Provides callback functions for voice session lifecycle and content events.")? | Optional. Callbacks for voice session events. If `null`, events are silently ignored. |
| theme | [NowVoiceTheme](https://servicenow-prod.fluidtopics.net/~3xxmka~Nk2nyFwmsaYKhw "Customizes the visual appearance of the voice agent UI.") | Optional. The visual theme applied to the voice UI. Default: The prebuilt light theme. |
[Table 6. Parameters]

{#NVoiceServA-start_O_O_O_O_O__table_pft_qzv_nva2} {#NVoiceServA-start_O_O_O_O_O__table_qft_qzv_nva2__entry__2}

| Type | Description |
|-|-|
| None |   |
[Table 7. Returns]

{#NVoiceServA-start_O_O_O_O_O__table_qft_qzv_nva2}  
The following code example shows how to call this function.

    //voiceService is an initialized NowVoiceService
    val endpoint = voiceService.nowVoiceEndpoints.firstOrNull() ?: return

    voiceService.start(
        context = this@MainActivity,
        endpoint = endpoint,
        uiConfiguration = NowVoiceUiConfiguration(
            hidePostCallTranscript = false,
            shouldBlockAttachmentSharing = false
        ),
        callbacks = object : NowVoiceCallbacks {
            override fun onCallEnd(conversationId: String?, error: NowVoiceError?) {
                if (error != null) {
                    Log.e("NowVoice", "Session ended with error: $error")
                } else {
                    Log.d("NowVoice", "Session complete. ID: $conversationId")
                }
            }

            override fun onMuteStateChanged(isMuted: Boolean) {
                // Update your UI to reflect the current mute state
                Log.d("NowVoice", "Microphone muted: $isMuted")
            }

            override fun onMessageReceived(message: TranscriptMessage) {
                // Receive real-time transcript messages
                Log.d("NowVoice", "${message.role}: ${message.content}")
            }
        },
        theme = object : NowVoiceTheme {}  // Uses default light theme
    )

## NowVoiceService - toggleMute() {#ariaid-title5}

Toggles the microphone mute state of the current call.
{#NVoiceServA-toggleMute__table_cs5_2ck_jkc__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 8. Parameters]

{#NVoiceServA-toggleMute__table_cs5_2ck_jkc} {#NVoiceServA-toggleMute__table_qft_qzv_nva7__entry__2}

| Type | Description |
|-|-|
| Boolean | Flag that indicates the new microphone mute state for the current call. Valid values: * true: The microphone is now muted. * false: The microphone is now unmuted or no call is active. {#NVoiceServA-toggleMute__ul_png_bdk_jkc} |
[Table 9. Returns]

{#NVoiceServA-toggleMute__table_qft_qzv_nva7}  
The following code example toggles and reads the microphone mute state.

    val voiceService = NowVoiceSDK.makeVoiceService(instanceUrl).getOrNull()

    val endpoint = voiceService?.nowVoiceEndpoints?.first()
    voiceService?.start(activity, endpoint = endpoint, theme = theme)

    // Wire to a custom mute button or auto-mute on backgrounding
    voiceService?.toggleMute()

    // Check mute state to update a custom mute button icon
    val muted = voiceService?.isMuted ?: false

## NowVoiceService - updateTheme(theme: NowVoiceTheme) {#ariaid-title6}

Updates the visual theme of the currently active voice UI.
This function has no effect if no voice session is currently active. To apply a visual
theme at voice session launch, provide a theme when calling [start(context:endpoint:uiConfiguration:callbacks:theme:)](https://servicenow-prod.fluidtopics.net/tRIQYHQALKmfk9GqAm~2BA#NVoiceServA-start_O_O_O_O_O "Launches the full-screen voice agent Activity. This is a suspend function that returns after the session ends.").
{#NVoiceServA-updateTheme_O__table_pft_qzv_nva3__entry__3}

| Name | Type | Description |
|-|-|-|
| theme | [NowVoiceTheme](https://servicenow-prod.fluidtopics.net/~3xxmka~Nk2nyFwmsaYKhw "Customizes the visual appearance of the voice agent UI.") | The theme to apply to the active voice UI. |
[Table 10. Parameters]

{#NVoiceServA-updateTheme_O__table_pft_qzv_nva3} {#NVoiceServA-updateTheme_O__table_qft_qzv_nva3__entry__2}

| Type | Description |
|-|-|
| None |   |
[Table 11. Returns]

{#NVoiceServA-updateTheme_O__table_qft_qzv_nva3}  
The following code example updates the visual theme of the currently active voice
UI.

    val voiceService = NowVoiceSDK.makeVoiceService(instanceUrl).getOrNull()

    val endpoint = voiceService?.nowVoiceEndpoints?.first()
    voiceService?.start(activity, endpoint = endpoint, theme = theme)

    // React to dark mode changes or apply brand colors at runtime
    voiceService?.updateTheme(NowVoiceThemeDark())


