Skip to content

NUI Callbacks

NUI callbacks are registered on the client via RegisterNUICallback and invoked from the SolidJS frontend using fetchNui. Each callback receives data from the NUI and must call cb(response).

Most NUI callbacks in nui_bridge.lua are thin wrappers that forward to a server lib.callback and return the result. The mapping follows a consistent pattern:

NUI: fetchNui('callbackName', data) -> client RegisterNUICallback -> lib.callback('gcphone:...', data) -> server -> response -> cb(response)

Phone Core

CallbackDataResponseSource File
nuiReady--truemain.lua
closePhone--truephone.lua
useMousestate: booleantruephone.lua
setIgnoreFocusdata: tabletruephone.lua
phoneSetVisualMode{ mode: string, options?: table }truephone.lua
getPhoneMetadata--tablephone_drop.lua

Contacts

CallbackDataResponseSource File
getContacts--table[]nui_bridge.lua
addContact{ display, number, ... }tablenui_bridge.lua
updateContact{ id, display, number, ... }tablenui_bridge.lua
deleteContact{ id: integer }booleannui_bridge.lua
toggleFavorite{ id: integer }booleannui_bridge.lua

Messages

CallbackDataResponseSource File
getMessages--table[]nui_bridge.lua
sendMessage{ phoneNumber, message, ... }tablenui_bridge.lua
deleteMessage{ id: integer }booleannui_bridge.lua
deleteConversation{ phoneNumber: string }booleannui_bridge.lua
markAsRead{ phoneNumber: string }booleannui_bridge.lua
setAutoReply{ enabled, message }booleannui_bridge.lua
getAutoReply--tablenui_bridge.lua

WaveChat

CallbackDataResponseSource File
wavechatGetGroups--table[]nui_bridge.lua
wavechatGetInvites--table[]nui_bridge.lua
wavechatGetStatusMediaConfig--tablenui_bridge.lua
wavechatGetStatuses--table[]nui_bridge.lua
wavechatCreateStatus{ media, text, ... }tablenui_bridge.lua
wavechatMarkStatusViewed{ statusId: integer }booleannui_bridge.lua
wavechatCreateGroup{ name, members, ... }tablenui_bridge.lua
wavechatRespondInvite{ groupId, accept }booleannui_bridge.lua
wavechatGetGroupMessages{ groupId, ... }table[]nui_bridge.lua
wavechatSendGroupMessage{ groupId, message, ... }tablenui_bridge.lua
wavechatSearchGifs{ query: string }table[]nui_bridge.lua

Calls

CallbackDataResponseSource File
startCall{ number: string }tablecalls.lua
acceptCall{ callId: integer }tablecalls.lua
rejectCall{ callId: integer }--calls.lua
endCall{ callId: integer }--calls.lua
sendIceCandidate{ callId, candidates }--calls.lua
setUseRTC{ enabled: boolean }truecalls.lua
getCallHistory--table[]calls.lua
deleteCallHistory{ phoneNumber: string }booleancalls.lua
clearCallHistory--booleancalls.lua
emergencySOS--tablenui_bridge.lua

Phone Settings

CallbackDataResponseSource File
phoneGetSetupState--tablenui_bridge.lua
phoneCompleteSetup{ ... }tablenui_bridge.lua
phoneVerifyPin{ pin: string }tablenui_bridge.lua
phoneReportImeiViewed{ imei: string }tablenui_bridge.lua
setWallpaper{ url: string }booleannui_bridge.lua
setRingtone{ tone: string }booleannui_bridge.lua
setCallRingtone{ tone: string }booleannui_bridge.lua
setNotificationTone{ tone: string }booleannui_bridge.lua
setMessageTone{ tone: string }booleannui_bridge.lua
setVolume{ volume: number }booleannui_bridge.lua
setTheme{ theme: string }booleannui_bridge.lua
setLanguage{ language: string }booleannui_bridge.lua
setAudioProfile{ profile: string }booleannui_bridge.lua
setLockCode{ code: string }booleannui_bridge.lua
factoryResetPhone--booleannui_bridge.lua
setAirplaneMode{ enabled: boolean }--nui_bridge.lua
getAppLayout--tablenui_bridge.lua
setAppLayoutlayout: tablebooleannui_bridge.lua

Notifications

CallbackDataResponseSource File
notificationsGet{ limit?, offset? }tablenui_bridge.lua
notificationsMarkRead{ id: integer }booleannui_bridge.lua
notificationsMarkAllRead--booleannui_bridge.lua
notificationsDelete{ id: integer }booleannui_bridge.lua

Social Notifications

CallbackDataResponseSource File
socialGetNotificationsdata: tabletablenui_bridge.lua
socialMarkNotificationReaddata: tablebooleannui_bridge.lua
socialMarkAllNotificationsReaddata: tablebooleannui_bridge.lua
socialDeleteNotificationdata: tablebooleannui_bridge.lua
CallbackDataResponseSource File
getGallery--table[]nui_bridge.lua
getUploadConfig--tablenui_bridge.lua
getStorageConfig--tablenui_bridge.lua
storeMediaUrl{ url, type, ... }tablenui_bridge.lua
deletePhoto{ id: integer }booleannui_bridge.lua
galleryShareNfcdata: tabletablenui_bridge.lua
openGallery----nui_bridge.lua

Bank

CallbackDataResponseSource File
getBankBalance--tablenui_bridge.lua
getBankTransactions--table[]nui_bridge.lua
getContactsForTransfer--table[]nui_bridge.lua
transferMoney{ phoneNumber, amount, ... }tablenui_bridge.lua

Wallet

CallbackDataResponseSource File
walletGetState--tablenui_bridge.lua
walletTransferdata: tabletablenui_bridge.lua
walletProximityTransferdata: tabletablenui_bridge.lua
walletCreateRequestdata: tabletablenui_bridge.lua
walletGetPendingRequests--table[]nui_bridge.lua
walletRespondRequestdata: tabletablenui_bridge.lua
walletAddCarddata: tabletablenui_bridge.lua
walletRemoveCarddata: tablebooleannui_bridge.lua
walletCreateNfcInvoicedata: tabletablenui_bridge.lua
walletCreateInvoicedata: tabletablenui_bridge.lua
walletRespondNfcInvoicedata: tabletablenui_bridge.lua
walletRespondInvoicedata: tabletablenui_bridge.lua

Documents

CallbackDataResponseSource File
documentsGetList--table[]nui_bridge.lua
documentsCreatedata: tabletablenui_bridge.lua
documentsDeletedata: tablebooleannui_bridge.lua
documentsToggleNFCdata: tablebooleannui_bridge.lua
documentsScanNFCdata: tabletablenui_bridge.lua
documentsVerifydata: tabletablenui_bridge.lua
documentsGetScanHistory--table[]nui_bridge.lua
documentsGetTypes--table[]nui_bridge.lua

Chirp

CallbackDataResponseSource File
chirpGetAccount--tablenui_bridge.lua
chirpCreateAccount{ username, ... }tablenui_bridge.lua
chirpUpdateAccountdata: tabletablenui_bridge.lua
chirpGetTweets{ page?, filter? }table[]nui_bridge.lua
chirpPublishTweet{ content, media? }tablenui_bridge.lua
chirpToggleLike{ tweetId }booleannui_bridge.lua
chirpToggleRechirp{ tweetId }booleannui_bridge.lua
chirpFollow{ accountId }tablenui_bridge.lua
chirpGetProfile{ accountId }tablenui_bridge.lua
chirpGetPendingFollowRequests--table[]nui_bridge.lua
chirpGetSentFollowRequests--table[]nui_bridge.lua
chirpRespondFollowRequestdata: tablebooleannui_bridge.lua
chirpCancelFollowRequestdata: tablebooleannui_bridge.lua
chirpGetComments{ tweetId }table[]nui_bridge.lua
chirpAddComment{ tweetId, content }tablenui_bridge.lua
chirpDeleteTweet{ tweetId }booleannui_bridge.lua
chirpDeleteCommentdata: tablebooleannui_bridge.lua

Snap

CallbackDataResponseSource File
snapGetAccount--tablenui_bridge.lua
snapCreateAccount{ username, ... }tablenui_bridge.lua
snapUpdateAccountdata: tabletablenui_bridge.lua
snapGetFeed{ page?, filter? }table[]nui_bridge.lua
snapPublishPost{ content, media }tablenui_bridge.lua
snapToggleLike{ postId }booleannui_bridge.lua
snapFollow{ accountId }tablenui_bridge.lua
snapGetProfile{ accountId }tablenui_bridge.lua
snapGetDiscoverAccountsdata: tabletable[]nui_bridge.lua
snapGetDiscoverFeeddata: tabletable[]nui_bridge.lua
snapGetPendingFollowRequests--table[]nui_bridge.lua
snapGetSentFollowRequests--table[]nui_bridge.lua
snapRespondFollowRequestdata: tablebooleannui_bridge.lua
snapCancelFollowRequestdata: tablebooleannui_bridge.lua
snapGetStories--table[]nui_bridge.lua
snapPublishStorydata: tabletablenui_bridge.lua
snapGetLiveStreams--table[]nui_bridge.lua
snapStartLive--tablenui_bridge.lua
snapEndLive{ postId }booleannui_bridge.lua
snapDeletePost{ postId }booleannui_bridge.lua
snapDeleteStory{ storyId }booleannui_bridge.lua
snapJoinLivedata: tabletablenui_bridge.lua
snapLeaveLivedata: tablebooleannui_bridge.lua
snapSendLiveMessagedata: tabletablenui_bridge.lua
snapSendLiveReactiondata: tablebooleannui_bridge.lua
snapRemoveLiveMessagedata: tablebooleannui_bridge.lua
snapMuteLiveUserdata: tablebooleannui_bridge.lua

Clips

CallbackDataResponseSource File
clipsGetAccount--tablenui_bridge.lua
clipsCreateAccount{ username, ... }tablenui_bridge.lua
clipsUpdateAccountdata: tabletablenui_bridge.lua
clipsGetFeeddata: tabletable[]nui_bridge.lua
clipsGetMyClipsdata: tabletable[]nui_bridge.lua
clipsPublishdata: tabletablenui_bridge.lua
clipsDeletePost{ postId }booleannui_bridge.lua
clipsToggleLike{ postId }booleannui_bridge.lua
clipsGetComments{ postId }table[]nui_bridge.lua
clipsAddComment{ postId, content }tablenui_bridge.lua
clipsDeleteCommentdata: tablebooleannui_bridge.lua

News

CallbackDataResponseSource File
newsGetAccount--tablenui_bridge.lua
newsCreateAccount{ username, ... }tablenui_bridge.lua
newsUpdateAccountdata: tabletablenui_bridge.lua
newsGetArticlesdata: tabletable[]nui_bridge.lua
newsPublishArticledata: tabletablenui_bridge.lua
newsGetCategories--table[]nui_bridge.lua
newsGetLiveNews--table[]nui_bridge.lua
newsDeleteArticle{ articleId }booleannui_bridge.lua
newsViewArticle{ articleId }booleannui_bridge.lua
newsStartLivedata: tabletablenui_bridge.lua
newsEndLive{ articleId }booleannui_bridge.lua
newsGetScaleform{ articleId }tablenui_bridge.lua
newsJoinLivedata: tabletablenui_bridge.lua
newsLeaveLivedata: tablebooleannui_bridge.lua
newsSendLiveMessagedata: tabletablenui_bridge.lua
newsSendLiveReactiondata: tablebooleannui_bridge.lua
newsRemoveLiveMessagedata: tablebooleannui_bridge.lua
newsMuteLiveUserdata: tablebooleannui_bridge.lua
newsSetScaleformdata: tablebooleannui_bridge.lua

Market

CallbackDataResponseSource File
marketGetListingsdata: tabletable[]nui_bridge.lua
marketCreateListingdata: tabletablenui_bridge.lua
marketGetMyListings--table[]nui_bridge.lua
marketMarkAsSold{ listingId }booleannui_bridge.lua
marketDeleteListing{ listingId }booleannui_bridge.lua
marketContactSellerdata: tablebooleannui_bridge.lua

Yellow Pages

CallbackDataResponseSource File
yellowpagesGetCategories--table[]nui_bridge.lua
yellowpagesGetListingsdata: tabletable[]nui_bridge.lua
yellowpagesGetMyListingsdata: tabletable[]nui_bridge.lua
yellowpagesGetSellerInfo{ listingId }tablenui_bridge.lua
yellowpagesCreateListingdata: tabletablenui_bridge.lua
yellowpagesDeleteListing{ listingId }booleannui_bridge.lua
yellowpagesRecordContactdata: tablebooleannui_bridge.lua

Mail

CallbackDataResponseSource File
mailGetStatedata: tabletablenui_bridge.lua
mailCreateAccountdata: tabletablenui_bridge.lua
mailSenddata: tabletablenui_bridge.lua
mailGetMessagesdata: tabletable[]nui_bridge.lua
mailMarkReaddata: tablebooleannui_bridge.lua
mailDeletedata: tablebooleannui_bridge.lua

Notes

CallbackDataResponseSource File
notesGetAll--table[]nui_bridge.lua
notesSave{ id?, title, content }tablenui_bridge.lua
notesDelete{ id: integer }booleannui_bridge.lua

Darkrooms

CallbackDataResponseSource File
darkroomsGetRooms--table[]nui_bridge.lua
darkroomsCreateRoomdata: tabletablenui_bridge.lua
darkroomsJoinRoomdata: tabletablenui_bridge.lua
darkroomsGetPostsdata: tabletable[]nui_bridge.lua
darkroomsCreatePostdata: tabletablenui_bridge.lua
darkroomsVotePostdata: tablebooleannui_bridge.lua
darkroomsGetCommentsdata: tabletable[]nui_bridge.lua
darkroomsCreateCommentdata: tabletablenui_bridge.lua

Garage

CallbackDataResponseSource File
garageGetVehicles--table[]nui_bridge.lua
garageGetLocationHistory{ plate: string }table[]nui_bridge.lua
garageRequestVehicle{ plate: string }booleannui_bridge.lua
garageShareLocationdata: tablebooleannui_bridge.lua
garageGetImpoundLocation--GaragePoint|nilnui_bridge.lua
garageSetGps{ x, y, z }--nui_bridge.lua

Music

CallbackDataResponseSource File
musicSearchCatalog{ query: string }table[]nui_bridge.lua
musicSearchITunes{ query: string }table[]nui_bridge.lua
musicCanSearchCatalog--booleannui_bridge.lua
musicPlay{ url, title, ... }--nui_bridge.lua
musicPause----nui_bridge.lua
musicResume----nui_bridge.lua
musicStop----nui_bridge.lua
musicSetVolume{ volume: number }--nui_bridge.lua

Proximity

CallbackDataResponseSource File
shareContactdata: tablebooleanproximity.lua
sendFriendRequestdata: tablebooleanproximity.lua
acceptFriendRequestdata: tablebooleanproximity.lua
rejectFriendRequestdata: tablebooleanproximity.lua
acceptContactRequestdata: tabletableproximity.lua
getNearbyPlayersdata: tabletable[]proximity.lua
shareDocumentdata: tablebooleanproximity.lua
snapLiveAudioStartdata: tabletableproximity.lua
snapLiveAudioStop--trueproximity.lua
snapLiveAudioStatus--tableproximity.lua

Location Tracking

CallbackDataResponseSource File
startLiveLocationdata: tabletablelocation_tracking.lua
stopLiveLocation--booleanlocation_tracking.lua
getActiveLiveLocations--table[]location_tracking.lua
setLiveLocationIntervaldata: tabletruelocation_tracking.lua
getLiveLocationState--tablelocation_tracking.lua

Camera

CallbackDataResponseSource File
cameraGetCapabilities--tablecamera.lua
startCameraSessiondata: table--camera.lua
updateCameraSessiondata: table--camera.lua
captureCameraSessiondata: tabletablecamera.lua
captureCameraVideoSession--tablecamera.lua
cameraSetFreezedata: table--camera.lua
cameraSetLandscapedata: table--camera.lua
cameraSetQuickZoomdata: table--camera.lua
stopCameraSession----camera.lua
takePhotodata: tablestring (URL)camera.lua
faketakePhoto--string (URL)camera.lua

Flashlight

CallbackDataResponseSource File
cameraToggleFlashlightdata: tabletrueflashlight.lua
cameraGetFlashlightSettings--tableflashlight.lua
cameraSetFlashlightSettingsdata: tabletrueflashlight.lua

Native Audio

CallbackDataResponseSource File
previewNativeTonedata: tabletruenative_audio.lua
stopNativeTonePreview--truenative_audio.lua
playNativeNotificationdata: tabletruenative_audio.lua
playNativeMessagedata: tabletruenative_audio.lua
playNativeOutgoingdata: tabletruenative_audio.lua
stopNativeOutgoing--truenative_audio.lua

Nearby Voice

CallbackDataResponseSource File
setListeningPeerId{ peerId: integer }truenearby_voice.lua
getListeningPeerId--integer|nilnearby_voice.lua
CallbackDataResponseSource File
setGPS{ x, y }truenui_bridge.lua
getPlayerCoords--{ x, y, z }nui_bridge.lua
getWeatherData--tablenui_bridge.lua
getGameTime--tablenui_bridge.lua
livekitGetTokendata: tabletablenui_bridge.lua
socketGetTokendata: tabletablenui_bridge.lua

Released under GPL-3.0 License