Requirements
- Windows operating system.
- C/C++ compiler (Visual Studio recommended).
- Assigned App ID from Bright SDK Dashboard.
Create App ID on Dashboard
If you haven’t done this yet, log in to your Bright SDK Dashboard and create your app ID first.Format: Your assigned App ID uniquely identifies your application and associates the peers provided by your application with you in the Bright Data network.
Install SDK Files
You can set up the Bright SDK in your .NET Windows app in two ways:
- Using the Bright SDK integration CLI tool Recommended - automatically downloads the SDK, copies the required files, and patches your
.csprojwith the necessary references. - Manually - download the SDK from the sdk downloader and copy the files yourself.
Option A - Using the Integration Tool (Recommended)
Option A - Using the Integration Tool (Recommended)
Run the tool using the bright-sdk-integration CLI. See the Windows example for full setup instructions.The tool will:
- Download the latest BrightSDK zip from
cdn.bright-sdk.com/static/. - Extract
lum_sdk.dllandnet_updater64.exeintoBrightSDK/. - Copy
brd_config.jsoninto your app directory. - Inject a
<Reference>tolum_sdk.dlland a<None>entry forbrd_config.jsoninto your.csproj. - Save
brd_sdk.config.jsonfor future runs.
Option B - Manual
Option B - Manual
Download the latest Bright SDK using the Bright SDK downloader, unzip it.Once you unzip the SDK, the following files are of interest:
| File (32-bit) | File (64-bit) | Description | |
|---|---|---|---|
net_updater32.exe | net_updater64.exe | Bright Data Windows service installer, uninstaller and entry point | |
lum_sdk32.dll | lum_sdk64.dll | C++ native API | |
lum_sdk32.lib | lum_sdk64.lib | Link lib for `lum_sdk(32 | 64).dll` |
lum_sdk.h | lum_sdk.h | Header file to include in C/C++ binaries (imports with *_c suffix are c-style) | |
brd_config.json | brd_config.json | Consent configuration and customization |
Integrate Bright SDK in Your Code
Add SDK Files to Your SolutionMicrosoft Visual C/C++ AppUse Non-Microsoft or Non-C AppsAdd SDK Initialization to Your CodeSee Code Example at the end of the guide.
vc++_console_64bit from samples directory for reference. Add the following files to your project:lum_sdk.hlum_sdk(32|64).liblum_sdk(32|64).dllbrd_config.json
lum_sdk(32|64).dll and brd_config.json are copied to the output folder.If you used the CLI tool in Option A, skip copying
lum_sdk.dll and brd_config.json - they are already in place in BrightSDK/ and app/. You still need to add lum_sdk.h, lum_sdk(32|64).lib to your project and ensure all files are copied to the output folder.- Use the equivalent to
LoadLibrary&GetProcAddressin your language/compiler. - Load all
xxx_cmethod variants you require fromlum_sdk32.dll. - Don’t forget to include the
dllin your app package. - Once imported, use same API flow as in previous implementation sample.
All included samples in the SDK package should compile and run as-is (Note: some of the more exotic samples are not verified for each release).
- Configure and initialize Bright SDK during your application’s startup initialization.
- Set required fields (use
brd_config.jsonand/or set them programmatically - see API Documentation). - Call
brd_sdk_init(). - Write handler code for the user choice change event.
- For example: enable/disable ads or premium features. Close the SDK when your application is exiting.
brd_sdk_init() will show a consent screen to the user only if the user hasn’t seen the consent screen before (didn’t agree or disagree). You can disable consent on init completely with brd_sdk_set_skip_consent_on_init(TRUE) and manually show it later with brd_sdk_show_consent().Add Opt-In/Out Settings Option
Critical Requirement: The user must always be able to opt-out of Bright SDK after giving their initial consent.
Every time the user toggles Web Indexing ON, the consent screen must reappear — regardless of any previous opt-in.
- Add a switch (checkbox/toggle button) labeled “Web Indexing”:
- Must clearly reflect current status (opted-in or opted-out).
- Should be checked if
BrightData.Api.ConsentChoiceis true. - Unchecking it should call
BrightData.Api.OptOut(). - Checking it should call
BrightData.Api.ShowConsent().
- Add value text below the switch:
- Emphasize the benefits users get when opting in. (see examples)
- Include a “Learn More” option:
- Hyperlink should open a browser window: https://bright-sdk.com/users#learn-more-about-bright-sdk-web-indexing
- UX Guidelines:
- You’re free to choose the UX (radio button, switch, etc.).
- The opt-out option must be clearly labeled.
- Users must be able to freely opt-out.
Ensure the opt-out functionality is fully implemented before submitting for review. Bright Data will verify both UX and functionality during the approval process.




| When opted-out: | When opted-in: |
|---|---|
| Enable to see fewer ads | When enabled you see fewer ads |
| Enable to get 100 extra coins | When enabled you get 100 extra coins |
| Enable to enjoy premium features | When enabled you enjoy premium features |
| Enable to get 2 free cars | When enabled you get 2 free cars |
| Enable to unlock more levels | When enabled you unlock more levels |
| Example | Issue |
|---|---|
| Label: “Bright SDK” | ❌ Label should be “Web Indexing”, not “Bright/Bright SDK” |
| Switch without value text | ❌ Missing text emphasizing value to users |
| Switch without status indicator | ❌ Switch should clearly show current opt-in/opt-out status |
| No “Learn More” option | ❌ Missing link/QR code to information page |
- Discourage opt-out: “If you disable Web Indexing, you will start seeing ads. Do you want to see ads?”
- Confirm opt-out: “You have successfully disabled Web Indexing. You may enable it again anytime from the settings menu.”
You are responsible for the text and design. These will be reviewed before publishing.


Update Application Installer
Install:
- Add the following text to your installation wizard under “License agreement”:
- Add step to deploy the following to your install directory:
lum_sdk.dllnet_updater32.exeBrd_config.json
- Add step to execute Bright Data service installer during app installation (recommended, optional):
- Process to start:
net_updater32.exe --install-ui APPIDIt will show the consent screen and if agreed, install the service.
- Process to start:
- Run
net_updater32.exe -hin command prompt to see available--dlg-parameters, or set them inbrd_config.json. - Wait for the process to finish before proceeding.
- Make sure no process uses
lum_sdk.dll(terminate your application). - Uninstall Bright Data service and remove all SDK files by executing
net_updater32.exe --uninstall APPID. - Wait for uninstall to finish before proceeding.
- Stop your application (which is using
lum_sdk.dll). - Stop Bright Data service:
luminati_net_updater_APPID- Where APPID is your assigned APPID with . (dot) replaced with _ (underscore).
- Example:
win_abc.myapp.com→luminati_net_updater_win_abc_myapp_com.
- Deploy new files:
net_updater32.exelum_sdk.dllBrd_config.jsonyour
- Choose one option:
- Option A: Install new
net_updater:net_updater32.exe --install-ui APPID- Shows consent to user (they can accept or decline).
- Requires admin privileges.
- Use
brd_config.jsonfor consent customization.
- Option B: Restart service if it exists
- Does not require admin privileges.
- Does not show consent.
- Option A: Install new
Add SDK Service Status Notifications (Optional)
NotificationsYou can register your app for notifications about the SDK service status. This allows you to:RecoveryIf the
- Know if the SDK is in a valid usable state.
- Prevent users from receiving benefits until they restore the SDK service.
brd_sdk_set_service_status_change_cb() API. The callback function should be of the brd_sdk_service_status_change_t type.See service_status_t enum for more information on the different statuses.The callback function can be called from a different thread than the one used to register the callback.
service_status_t is SERVICE_STATUS_NOT_INSTALLED, SERVICE_STATUS_INSTALLED, or SERVICE_STATUS_NOT_RUNNING, you can use the brd_sdk_fix_service_status() API to trigger automatic recovery.You can also trigger this on user action (e.g., “Click here to fix Bright Data SDK and regain benefit”).Self-Check Your Integration
Testing ModeYou may set
BrightData.Api.Settings.TestMode = true while developing. This way the BrightData service will not be installed when you accept the consent screen, making it easier to develop.Resetting During TestingWhile testing, you can:- Opt-out through settings
- Remove Bright Data service by opting out through your application settings.
- Delete the
luminatifolder (or your entire output folder). - This resets your consent choice.
- Consent screen will display next time you run the application.
- Uninstall via command
- Execute
net_updater32.exe --uninstall APPIDin your output folder. - This deletes all SDK files.
- Execute
Self-check using an emulator/simulator is not yet supported. Currently, self-check can only be performed on a real device.
If the SDK isn’t initializing / peer not connecting:
- Verify the correct App ID is used, confirm the SDK service is running.
- Check there aren’t multiple SDK apps running from the same IP — that can interfere.
- If nothing helps, check with our team.
Update Your Terms of Service
Bright Data ensures users are fully informed about joining the peer network.Add the following text to your Terms of Service web page (TOS, EULA, or Privacy Policy):In return for premium features of ‘[Your App Name]’, you may choose to be a peer on the Bright Data network. By doing so, you agree to have read and accepted the Bright SDK EULA and Bright Data’s Privacy Policy.You may opt out of the Bright Data network by [add clear opt-out instructions].Requirements:
- Include all text and links as provided above.
- Any additional Bright SDK-related content must be shared during the app review process for approval.
How to Update SDK
Option A - Using the Integration CLI Tool (Recommended)
Option A - Using the Integration CLI Tool (Recommended)
Run the tool with the
--update flag. It will automatically fetch and replace the SDK files in place without losing your config or consent flow settings:Option B - Manual
Option B - Manual
- Download the latest SDK using the Bright SDK downloader.
- Replace the following files with the newer versions:
net_updater32.exe(ornet_updater64.exe)lum_sdk.dll(orlum_sdk32.dll/lum_sdk64.dllfor C/C++)brd_config.json
- Clean and rebuild your project.
API Documentation
- Settings in
brd_config.jsonare shared by bothlum_sdk.dllandnet_updater32.exe. - You can use the config file together with the programmatic API.
- Programmatic API settings take precedence over config file settings.
Configuration File (brd_config.json)
Configuration File (brd_config.json)
Required Properties
Optional Properties
| Property | Type | Description |
|---|---|---|
app_id | string | Your APPID |
app_name | string | Friendly name of your app that appears on the consent screen |
logo_link | string | URL to your app’s logo for the consent screen |
| Property | Type | Description |
|---|---|---|
benefit | string | Description of benefits user gets when enabling SDK. Changes consent screen wording. Becomes the first part of the first sentence on the consent screen |
agree_btn | string | Text of the consent screen’s agree button |
disagree_btn | string | Text of the consent screen’s disagree button |
opt_out_txt | string | Text of the consent screen’s opt-out instructions |
C++ API Reference
C++ API Reference
Core Methods
Properties
Callbacks
| Method | Description |
|---|---|
brd_sdk_init() | Initializes Bright SDK. Should be called during app initialization. All other methods will be accessible afterwards. By default, consent screen will be shown if the user hasn’t made a choice yet, but can be skipped with brd_sdk_set_skip_consent_on_init(TRUE) |
brd_sdk_show_consent() | Displays consent screen. (Clears user choice and removes Brightdata service if installed.) Can be used when a user tries to close an ad or clicks the checkbox to activate Bright SDK |
brd_sdk_opt_out() | Disables Bright SDK and removes Brightdata service. Consent choice will change to LUM_SDK_CHOICE_NOT_PEER |
brd_sdk_close() | Closes Bright SDK. Should be called when the application exits if the SDK cannot automatically detect the application exit and keeps running, keeping the app process running |
char * brd_sdk_get_uuid() | Returns the peer’s unique identifier. Useful for debugging |
| Method | Description | Return Values |
|---|---|---|
int brd_sdk_get_consent_choice() | Returns the user’s consent choice | LUM_SDK_CHOICE_NONE (=0) - no choice yet LUM_SDK_CHOICE_PEER (=1) - agreed LUM_SDK_CHOICE_NOT_PEER (=2) - disagreed |
int brd_sdk_is_supported() | Return whether machine supports minimum .NET version required to run |
| Method | Description |
|---|---|
brd_sdk_set_choice_change_cb(brd_sdk_choice_change_t cb) | Sets a callback function that is invoked when the user’s consent choice has changed. For example when they accepted the consent or they disabled Bright SDK through your application settings |
brd_sdk_set_on_dialog_shown_cb(brd_sdk_on_dialog_shown_t cb) | Sets a callback function that is invoked when the consent dialog is shown |
brd_sdk_set_on_dialog_closed_cb(brd_sdk_on_dialog_closed_t cb) | Sets a callback function that is invoked when the consent dialog is closed |
Configuration Methods
Configuration Methods
Required Settings
Basic Configuration
Localization
Visual Customization
| Method | Description |
|---|---|
brd_sdk_set_appid(char *appid) | Your APPID. Required if not provided in brd_config.json file |
brd_sdk_set_app_name(char *app_name) | Friendly name of your app that will appear on the consent screen. Required if not provided in brd_config.json file |
brd_sdk_set_logo_link(char *logo_link) | URL to your app’s logo that will appear on the consent screen. Required if not provided in brd_config.json file |
| Method | Description |
|---|---|
brd_sdk_set_skip_consent_on_init(BOOLEAN skip_consent) | If TRUE, init method will not show consent screen. The consent screen can be shown later with the brd_sdk_show_consent method. Default FALSE |
brd_sdk_set_benefit(char *benefit_txt) | Description of the benefits a user gets if he/she consents to enable Bright SDK. Consent screen will have different wordings if set. The value will be the first part of the first sentence on the consent screen |
brd_sdk_set_opt_out_txt(char *opt_out_txt) | Text of the consent screen’s opt-out instructions |
brd_sdk_set_campaign(char *camp) | Optional parameter for the further breakdown of the existing app ID to monitor the statistics separately |
| Method | Description |
|---|---|
brd_sdk_set_lang(char *lang) | Language code for consent screen language. Default value: “en-US”. Supported: en-US, de-De, es-Es, fr-FR, it-IT, pt-PT, ru-RU, zh-CN |
| Method | Description |
|---|---|
brd_sdk_set_txt_color(char *txt_color) | Color of the consent text. Format: hex argb, “#AABBCCDD”. Optional |
brd_sdk_set_app_name_color(char *app_name_color) | Color of the application name text. Format: hex argb, “#AABBCCDD”. Optional |
brd_sdk_set_bright_data_logo_color(char *bright_data_logo_color) | Color of the BrightData logo background. Format: hex argb, “#AABBCCDD”. Optional |
brd_sdk_set_bg_color(char *bg_color) | Background color of the consent screen. Format: hex argb, “#AABBCCDD”. Optional |
brd_sdk_set_btn_color(char *btn_color) | Button color of the consent screen. Format: hex argb, “#AABBCCDD”. Optional |
C API Reference
C API Reference
The same functions as above with a
_c suffix, e.g., brdsdk_init_c().Command Line Tool (net_updater.exe)
Command Line Tool (net_updater.exe)
net_updater(32|64).exe Command Line Arguments.Help & Information| Argument | Description |
|---|---|
-h | Print command descriptions |
| Argument | Description |
|---|---|
--install-ui appid | Install service with provided appid after showing dialog and getting user permission |
--check-peer appid | Validate peer |
--uninstall appid | Remove service with provided appid (must match appid used during install) |
--start-service appid | Starts Bright Data service |
--stop-service appid | Stops Bright Data service |
| Argument | Description |
|---|---|
--dlg-language culture | Language code for consent screen language. Default value: “en-US”. Supported: en-US, de-De, es-Es, fr-FR, it-IT, pt-PT, ru-RU, zh-CN |
--dlg-app-name name | Friendly name of your app that will appear on the consent screen |
--dlg-logo-link logo | URL to your app’s logo that will appear on the consent screen |
--dlg-benefit benefit | Description of the benefits a user gets if he/she consents to enable Bright SDK. Consent screen will have different wordings if set. The value will be the first part of the first sentence on the consent screen |
--dlg-agree-btn text | Text of the consent screen’s agree button |
--dlg-disagree-btn text | Text of the consent screen’s disagree button |
| Argument | Description |
|---|---|
--campaign campaign_id | Optional parameter for the further breakdown of the existing app ID to monitor the statistics separately |