Skip to content

Admin SDK (linege-admin)

Standalone Admin SDK for the Linege anti-fingerprint browser platform API.

No dependency on linege-sdk-python -- this package is fully self-contained.

Installation

bash
pip install https://pub-69fcb37602174d10b2152f09439de470.r2.dev/sdk/linege_admin-0.2.0-py3-none-any.whl

For development:

bash
cd packages/linege-admin-python
pip install -e ".[dev]"

Quick Start

python
from linege_admin import LinegeAdmin

admin = LinegeAdmin(
    api_url="https://api.example.com",
    token="your-admin-token",
)

# List users
users = admin.list_users()
for u in users.users:
    print(f"{u.username} quota={u.quota_used}/{u.quota_total}")

# Import proxies from CSV
result = admin.import_proxies_csv("JP,socks5://1.2.3.4:1080\nUS,http://5.6.7.8:8080")
print(f"Inserted: {result.inserted}")

# Country readiness matrix
matrix = admin.get_country_matrix()
for c in matrix.countries:
    print(f"{c.code}: ready={c.ok}")

Environment Variables

VariableDescriptionDefault
LINEGE_API_URLBase URL for the Linege APIhttp://localhost:3000
LINEGE_ADMIN_TOKENAdmin bearer token(required)

API Reference

Constructor

python
LinegeAdmin(api_url: str, token: str, timeout: float = 30.0)
  • api_url -- Base URL (e.g. https://api.example.com). Automatically appends /api/v1 if not present.
  • token -- Admin bearer token.
  • timeout -- HTTP request timeout in seconds.

User Management

list_users(page=1, limit=20) -> UserListResponse

List all users with pagination.

python
resp = admin.list_users(page=1, limit=10)
# resp.users: List[AdminUser]
# resp.pagination: Pagination (page, limit, total, pages)

create_user(username, email, password=None, quota_total=10) -> AdminUser

Create a new user. Password is optional (enables password-based login).

python
user = admin.create_user("alice", "alice@example.com", password="secret", quota_total=20)

Token Management

list_tokens(page=1, limit=20) -> TokenListResponse

List all API tokens with pagination.

python
resp = admin.list_tokens()

create_token(user_id, name="", expires_in_days=None) -> CreateTokenResponse

Create a new API token for a user.

python
token = admin.create_token(user_id=1, name="ci-key", expires_in_days=90)

revoke_token(token_id) -> None

Revoke (delete) a token by ID.

python
admin.revoke_token(token_id=5)

Proxy Management

list_proxies(country=None, status="available", limit=100) -> ProxyListResponse

List proxies with optional filters.

python
resp = admin.list_proxies(country="JP", status="available", limit=50)

get_proxy_stats() -> ProxyStatsResponse

Get proxy usage statistics and restock suggestions.

python
stats = admin.get_proxy_stats()
# stats.summary: ProxyStatsSummary (total, available, full, expired, remaining_slots, avg_usage)
# stats.by_country: List[CountryProxyStat]
# stats.restock_needed: List[RestockItem]

recheck_proxies(country=None, limit=50) -> ProxyRecheckResponse

Batch recheck proxy health.

python
result = admin.recheck_proxies(country="US", limit=10)
# result.checked, result.ok, result.expired, result.failed

import_proxies(items=None, raw=None) -> ImportResult

Bulk import proxies in JSON format.

python
result = admin.import_proxies(items=[
    {"country": "JP", "proxy_url": "socks5://user:pass@1.2.3.4:1080"},
    {"country": "US", "proxy_url": "http://5.6.7.8:8080"},
])

import_proxies_csv(csv, default_country="US") -> ImportResult

Bulk import proxies from CSV text.

python
csv_text = """JP,socks5://user:pass@1.2.3.4:1080
US,http://5.6.7.8:8080
1.2.3.4:1080"""
result = admin.import_proxies_csv(csv=csv_text, default_country="US")

Templates & Fingerprints

import_templates(items) -> ImportResult

Bulk import fingerprint templates.

python
result = admin.import_templates(items=[
    {"country": "US", "ua": "Mozilla/5.0 ...", "platform": "Win32"},
])

import_fingerprints(items) -> ImportResult

Bulk import fingerprints.

python
result = admin.import_fingerprints(items=[
    {"country": "US", "userAgent": "Mozilla/5.0 ...", "hardwareConcurrency": 8},
])

get_fingerprint_stats() -> FingerprintStatsResponse

Get fingerprint statistics by country.

python
stats = admin.get_fingerprint_stats()
# stats.total: int
# stats.by_country: List[FingerprintCountryStats]

Country Matrix

get_country_matrix() -> CountryMatrixResponse

Get full country readiness matrix (templates + proxies availability).

python
matrix = admin.get_country_matrix()
for c in matrix.countries:
    print(f"{c.code}: fp={c.fingerprints} proxies={c.proxies_available} ready={c.ok}")

Types Summary

TypeFields
AdminUserid, username, email, quota_total, quota_used, status, has_password
UserListResponseusers: List[AdminUser], pagination: Pagination
TokenInfoid, user_id, username, token, name, expires_at, status
ProxyInfoid, country, proxy_url, gost_format, status
ProxyStatsSummarytotal, available, full, expired, remaining_slots
ImportResulttotal, inserted, duplicates, invalid, skipped
CountryMatrixEntrycode, fingerprints, proxies_available, ok

All types are @dataclass with a from_dict(d: Dict) -> T classmethod for deserialization.

Running the Full Example

bash
python examples/example_full.py \
  --api-url https://api.example.com \
  --token YOUR_ADMIN_TOKEN

Linege Anti-Browser Documentation