---
slug: "/docs/v1/integration-guide/install"
title: "Install and configure"
description: "Stage 6: install and configure with a clear outcome, verification steps and one next action."
section: "Integration Guide"
order: 21
audience: "all"
level: "beginner"
last_updated: "2026-10-21"
version: "v1"
related: []
draft: false
layout: "guide"
---
## What you will do
Install exactly the published source archive, then configure a private [Sandbox](/docs/v1/start/glossary#sandbox) example.
:::tabs
:::tab python Python
### Python setup
Use Python 3.11–3.14 and a working HTTPS certificate store. The official package is published on [PyPI](https://pypi.org/project/kdpika-licensing/) with [GitHub source](https://github.com/kdpika/kdpika-licensing). Create a virtual environment, then install:
```bash
python3 -m venv .venv
.venv/bin/python -m pip install "kdpika-licensing==1.1.5"
.venv/bin/python -m pip check
```
On native Windows use py -m venv .venv, then .venv\\Scripts\\python.exe for both pip commands and the example. Import kdpika_licensing. Use the same virtualenv interpreter for pip and your example.
:::
:::tab javascript JavaScript / Node.js
### JavaScript setup
Requires Node.js 18+ source compatibility, npm and an authenticated backend, CLI or Electron main process. Do not run this SDK in a web page. Download [JavaScript SDK 1.0.0](/docs/downloads/kdpika-javascript-sdk-1.0.0.zip) and extract into kdpika-javascript-sdk, then run:
```bash
npm install --ignore-scripts --save-exact ./kdpika-javascript-sdk
```
Save your example with the .mjs extension. The installed module is @kdpika/license-sdk. Choose a maintained Node runtime for production and run the compatibility tests there.
:::
:::tab php PHP
### PHP setup
Requires PHP 8.2+, cURL, Sodium and Composer. The package's older ^8.1 declaration is not its actual minimum. Download [PHP SDK 1.0.0](/docs/downloads/kdpika-php-sdk-1.0.0.zip) and extract into kdpika-php-sdk:
```bash
composer install --working-dir ./kdpika-php-sdk --no-interaction --no-plugins --no-scripts --prefer-dist
```
The example loads that folder's vendor/autoload.php. It runs on your trusted backend or CLI, not in browser JavaScript. KDP_SDK_DIR can point to a different extracted package folder.
:::
:::tab csharp C# / .NET
### C# setup
Requires the .NET SDK and the unchanged SDK's net7.0 source target. Download [C# SDK 1.0.0](/docs/downloads/kdpika-csharp-sdk-1.0.0.zip) and extract into kdpika-csharp-sdk. Save the project below beside that folder:
```xml
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems></PropertyGroup>
  <ItemGroup><Compile Include="Program.cs"/>
    <ProjectReference Include="kdpika-csharp-sdk/KDPika.LicenseSdk/KDPika.LicenseSdk.csproj"/>
  </ItemGroup>
</Project>
```
```bash
dotnet restore Guide.csproj
```
The demonstrated net7 target is an existing compatibility constraint, not a recommendation to deploy an end-of-support runtime. Production needs a maintained-runtime compatibility assessment; see the disclosed SDK limitations.
:::
:::tab curl cURL / other language
### cURL setup
This is a transport exercise, not an SDK or signature verifier. Use this route for a REST-only language, then follow its real client and verification project before granting access.
```bash
umask 077
curl --fail --silent --show-error -o response-private.json \
  -H "X-App-ID: $KDP_APP_ID" -H "X-Environment: SANDBOX" \
  -H "Content-Type: application/json" \
  --data '{"license_key":"YOUR_SANDBOX_LICENSE_KEY","device_id":"guide-install-CHANGE-ONCE"}' \
  https://licensing.kdpika.com/api/v1/licenses/activate
```
Replace the key privately. Keep the device_id stable for this installation. The file contains a private [activation token](/docs/v1/start/glossary#activation-token): do not publish or log it. HTTP success alone does not authorize your app. Read [activation](/docs/v1/api/activate), then choose your [REST client](/docs/v1/sdks/overview) and [signature verification](/docs/v1/security/verify-ed25519).
:::
:::

## Configure this terminal
Set these variables in your terminal. App ID is public; your [customer](/docs/v1/start/glossary#customer)'s key and state directory are private. Do not use a [developer API key](/docs/v1/start/glossary#developer-api-key) in this client.
:::tabs
:::tab bash macOS / Linux · Bash
```bash
export KDP_APP_ID="YOUR_PUBLIC_APP_ID"
export KDP_CUSTOMER_EMAIL="YOUR_TEST_CUSTOMER_EMAIL"
export KDP_STATE_DIR="$HOME/.kdpika-guide-sandbox"
read -r -s -p "Sandbox license key: " KDP_LICENSE_KEY
printf '\n'
export KDP_LICENSE_KEY
```
For a different [device](/docs/v1/start/glossary#device) test, use a new private state directory, not a different email.
:::
:::tab powershell Windows · PowerShell
```powershell
$env:KDP_APP_ID = "YOUR_PUBLIC_APP_ID"
$env:KDP_CUSTOMER_EMAIL = "YOUR_TEST_CUSTOMER_EMAIL"
$env:KDP_STATE_DIR = Join-Path $env:LOCALAPPDATA "KDPikaGuideSandbox"
$secureKey = Read-Host "Sandbox license key" -AsSecureString
$env:KDP_LICENSE_KEY = [System.Net.NetworkCredential]::new("", $secureKey).Password
```
The variable is plaintext in this process; do not print it or leave it in a shared terminal. Close the terminal after testing. Windows Python uses .venv\\Scripts\\python.exe; Node/PHP/.NET commands are the same if their runtimes are installed.
:::
:::
Expected result: the variables are available only to this terminal and its child processes. Use a user-owned directory, outside a web root or shared repository. The sample uses Sandbox explicitly.
## Expected result
Your chosen runtime can load the SDK and write private installation state. Python uses its verified PyPI release; other SDKs retain their documented source-install requirements.
## If it does not work
If extraction creates another directory level, point the install command at the folder containing pyproject.toml, package.json, composer.json or KDPika.LicenseSdk.csproj. PHP needs 8.2+ despite older metadata.
## Stage checklist
- I installed my chosen SDK from its source ZIP.
- I configured App ID, test email, Sandbox key and private state path.

## Next steps
[Continue to Stage 7: Activate your first license](/docs/v1/integration-guide/activate)
