LittenHubDocs
Dashboard
Get started
Introduction Quickstart
Proxy
Connect to the proxy Country targeting Proxy types & billing Proxy errors
VPN
VPN app
API
API overview Authentication Errors Rate limits
API reference
Account
GETGet account POSTChange login password POSTRotate proxy password
Usage & billing
GETDaily usage GETInvoices GETPrices GETList orders GETGet an order
Proxy
GETAvailable countries
Access tokens
GETList access tokens POSTCreate an access token DELRevoke an access token
Rewards
POSTRedeem a code GETRedeemed codes GETReferral program
Status
GETHealth check
Dashboard Support Website
Documentation

Build with LittenHub

Guides and API reference to connect to our proxies, use the VPN app and automate your account.

bash
$ export PROXY=http://USER:PASS@gw.littencaptcha.com:8080
$ curl -x $PROXY https://api.ipify.org?format=json
{"ip": "203.0.113.42"}

$ curl https://littenhub.com/api/v1/me \
    -H "Authorization: Bearer $LP_TOKEN"
{"tierName": "Residential", "balance_bytes": 25000000000}
$ 

Start here

Everything you need, from your first request to a full integration.

QuickstartMake your first request through the proxy in under five minutes. ProxyConnect over HTTP or SOCKS5, choose a country and understand billing. VPNInstall the Windows app and connect to any location in one click. API referenceManage your account, usage, tokens and rewards from your code.

At a glance

The two addresses you'll use the most.

Proxy endpoint
gw.littencaptcha.com

Port 8080 residential, 8888 premium, 9090 datacenter.

API base URL
https://littenhub.com/api/v1

JSON over HTTPS with Bearer authentication.

Popular topics

Country targeting Proxy errors Proxy types & billing Authentication Get accountGET Redeem a codePOST
Get started

Quickstart

From a new account to your first request through the proxy, step by step.

Four steps

  1. Create your account

    Sign up at app.littenhub.com. You only need an email and a password.

  2. Add GB to your balance

    In the dashboard, open Plans, choose a proxy type and how many GB you want, and pay by card. Your balance never expires.

  3. Copy your credentials

    Open the Proxy page of the dashboard. You'll find the host, port, username and password, ready to copy:

    gw.littencaptcha.com:8080:USERNAME:PASSWORD
  4. Send your first request

    Replace USERNAME and PASSWORD with your credentials and run:

    curl -x "http://USERNAME:PASSWORD@gw.littencaptcha.com:8080" \
      "https://api.ipify.org?format=json"
    import requests
    
    proxy = "http://USERNAME:PASSWORD@gw.littencaptcha.com:8080"
    r = requests.get("https://api.ipify.org?format=json",
                     proxies={"http": proxy, "https": proxy}, timeout=30)
    print(r.json())
    import { ProxyAgent, fetch } from "undici";
    
    const dispatcher = new ProxyAgent("http://USERNAME:PASSWORD@gw.littencaptcha.com:8080");
    const res = await fetch("https://api.ipify.org?format=json", { dispatcher });
    console.log(await res.json());

    The response shows the IP your request came from: one of our proxy IPs, not yours.

Next steps

Country targetingChoose the country your requests come from. Automate with the APICreate an access token and check your balance from code.
Proxy

Connect to the proxy

One host for every proxy type. Each product has its own port, username and password, over HTTP or SOCKS5.

Your credentials

FieldValue
Hostgw.littencaptcha.com
Port8080 residential, 8888 premium, 9090 datacenter.
UsernameYour proxy username for that product, shown on the Proxy page of the dashboard (proxy.products in GET /me).
PasswordYour proxy password for that product (proxy.products in GET /me). It's different from the password you use to sign in.

Each product (residential, premium and datacenter) has its own username, password, balance and port. Credentials only work on their product's port: on any other port you get 407.

Think your password leaked? Generate a new one on the Proxy page or with POST /rotate-password. The old one stops working immediately.

Protocols

HTTP and SOCKS5 share the same host and port. The proxy detects the protocol automatically.

  • HTTP / HTTPS: a standard HTTP proxy. HTTPS sites go through a CONNECT tunnel, so your traffic stays encrypted end to end.
  • SOCKS5: with username and password authentication. Use socks5h:// so that DNS is resolved by the proxy too.

Proxy formats

Most tools accept one of these formats:

FormatExample
Plaingw.littencaptcha.com:8080:USERNAME:PASSWORD
HTTPhttp://USERNAME:PASSWORD@gw.littencaptcha.com:8080
SOCKS5socks5h://USERNAME:PASSWORD@gw.littencaptcha.com:8080

Code examples

# HTTP / HTTPS
curl -x "http://USERNAME:PASSWORD@gw.littencaptcha.com:8080" \
  "https://api.ipify.org?format=json"

# SOCKS5 (same port)
curl -x "socks5h://USERNAME:PASSWORD@gw.littencaptcha.com:8080" \
  "https://api.ipify.org?format=json"
import requests

proxy = "http://USERNAME:PASSWORD@gw.littencaptcha.com:8080"
# SOCKS5: proxy = "socks5h://USERNAME:PASSWORD@gw.littencaptcha.com:8080"  (pip install requests[socks])

r = requests.get("https://api.ipify.org?format=json",
                 proxies={"http": proxy, "https": proxy}, timeout=30)
print(r.json())
// npm install undici
import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent("http://USERNAME:PASSWORD@gw.littencaptcha.com:8080");
const res = await fetch("https://api.ipify.org?format=json", { dispatcher });
console.log(await res.json());

How IPs rotate

Each new connection goes out through an available IP of your proxy type, so consecutive connections usually get different IPs. Requests sent over the same connection keep the same IP.

Usage and limits

  • Traffic is counted in both directions (upload and download) and deducted from your balance. See Proxy types & billing.
  • Each account can keep a limited number of simultaneous connections. Above that limit, new connections get 429.
  • Some destinations are blocked to prevent abuse.
Proxy

Country targeting

Choose the country your requests come from by adding a flag to your username.

Username format

Add _cr. and a two-letter country code (ISO 3166-1) to the end of your username. The password doesn't change.

USERNAME_cr.us
# Exit from Germany
curl -x "http://USERNAME_cr.de:PASSWORD@gw.littencaptcha.com:8080" \
  "https://api.ipify.org?format=json"
import requests

proxy = "http://USERNAME_cr.de:PASSWORD@gw.littencaptcha.com:8080"
r = requests.get("https://api.ipify.org?format=json",
                 proxies={"http": proxy, "https": proxy}, timeout=30)
print(r.json())
import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent("http://USERNAME_cr.de:PASSWORD@gw.littencaptcha.com:8080");
const res = await fetch("https://api.ipify.org?format=json", { dispatcher });
console.log(await res.json());

Without the flag, your requests can exit from any available country.

Available countries

The countries depend on the IPs online for your proxy type at each moment. Get the current list with GET /proxy/countries, or pick a country on the Proxy page of the dashboard, which builds the username for you.

If a country isn't available

If there's no IP available in that country, the proxy answers 503 Service Unavailable over HTTP, or a general failure over SOCKS5. Try another country, or remove the flag to use any country.

Proxy

Proxy types & billing

Pay only for the traffic you use. Your balance is measured in GB and never expires.

Proxy types

Datacenter
$0.50 per GB

The fastest option for high volumes, at the lowest price.

Residential
$1.00 per GB

Real home IPs that look like everyday users.

Premium residential
$5.00 per GB

Our top residential IPs, for the most demanding sites.

Prices are in US dollars. You can always get the current prices with GET /pricing.

How traffic is measured

  • Both upload and download count. 1 GB = 1,000,000,000 bytes.
  • Traffic is deducted from your balance as you use it. Check it in the dashboard or with GET /me and GET /usage.
  • When your balance reaches zero, new connections are refused with 403 until you add more GB.

Separate products

Each proxy type is a separate product with its own balance, username, password and port. You can have several at once, and buying one never changes the others.

Buying GB

Buy GB in the dashboard under Plans with a one-time card payment: no subscriptions and no auto-renewal. Every purchase appears in Invoices.

You can also get free GB by redeeming a code or inviting friends.

Proxy

Proxy errors

What each proxy response means and how to fix it.

Response codes

407Proxy Authentication Required

Authentication failed

The username or password is wrong or missing, or you're using another product's port.

Copy your credentials again from the Proxy page. If you generated a new password, use the new one.

SOCKS5: authentication failure
403Forbidden

Not allowed

Your balance is used up, or the destination is blocked by our abuse policy.

Add GB in Plans. If you still have balance, that site can't be used through the proxy.

SOCKS5: connection not allowed
429Too Many Requests

Too many connections

Your account has too many simultaneous connections open.

Lower your concurrency or reuse connections.

SOCKS5: general failure
503Service Unavailable

No IP available

There's no IP available right now for your proxy type or the country you asked for.

Try again in a moment, choose another country or remove the country flag.

SOCKS5: general failure
502Bad Gateway

Destination unreachable

The website couldn't be reached through the proxy.

Check the website's address and port, and try again.

SOCKS5: host unreachable

Quick checklist

  • Use your product's port for both HTTP and SOCKS5: 8080 residential, 8888 premium, 9090 datacenter.
  • If you choose a country, the username must end in _cr.xx.
  • Test with curl -x against https://api.ipify.org to rule out problems in your code.
  • Still stuck? Write to us from Support in the dashboard.
VPN

VPN app

Protect your connection with LittenVPN: WireGuard® encryption and locations around the world, one click away.

Get the app

The app is available for Windows 10 and 11. Apps for macOS, iOS, Android and Linux are coming soon.

Download for Windows

Connect in three steps

  1. Install

    Run the installer and open LittenVPN.

  2. Sign in

    Use the same email and password as your dashboard account.

  3. Connect

    Press Quick connect or choose a location from the list.

VPN plans

VPN plans are one-time payments for 1, 12 or 24 months, with no auto-renewal. Buy one in the dashboard under Plans → VPN. If you already have a plan, the new period is added to the time you have left.

See VPN prices

Good to know

  • Your VPN plan and your proxy balance are separate: the VPN doesn't use GB from your balance.
  • You can add free VPN days by redeeming a code.
API

API overview

Automate your LittenHub account: check your balance and usage, manage access tokens and more.

Base URL

https://littenhub.com/api/v1

All endpoints are relative to this URL and use JSON over HTTPS. The unversioned /api prefix still works, but it's deprecated.

Your first API call

Create an access token in the dashboard under Account & settings → API keys, save it in an environment variable and call GET /me:

export LP_TOKEN="lp_live_..."

curl https://littenhub.com/api/v1/me \
  -H "Authorization: Bearer $LP_TOKEN"
import os, requests

r = requests.get("https://littenhub.com/api/v1/me",
                 headers={"Authorization": f"Bearer {os.environ['LP_TOKEN']}"})
print(r.json())
const res = await fetch("https://littenhub.com/api/v1/me", {
  headers: { Authorization: `Bearer ${process.env.LP_TOKEN}` },
});
console.log(await res.json());

Conventions

  • Traffic is expressed in bytes. 1 GB = 1,000,000,000 bytes.
  • Prices are in US dollar cents (amountCents, perGbCents), except amt in invoices, which is in dollars.
  • Dates use ISO 8601 in UTC (2026-10-11T09:30:00Z) or the YYYY-MM-DD format.
  • IDs are UUIDs.

Endpoints

MethodPathDescription
GET/meGet account
POST/account-passwordChange login password
POST/rotate-passwordRotate proxy password
GET/usageDaily usage
GET/invoicesInvoices
GET/pricingPrices
GET/ordersList orders
GET/orders/{id}Get an order
GET/proxy/countriesAvailable countries
GET/keysList access tokens
POST/keysCreate an access token
DELETE/keys/{id}Revoke an access token
POST/redeemRedeem a code
GET/redeemRedeemed codes
GET/referralsReferral program
GET/healthHealth check
API

Authentication

Every API request, except for a few public endpoints, must be authenticated with a Bearer token.

Access tokens

Access tokens are the recommended way to use the API from scripts and servers. They start with lp_live_, don't expire and can be revoked at any time.

  • Create one in the dashboard under Account & settings → API keys, or with POST /keys.
  • The full token is only shown once. We store just its SHA-256 hash.
  • Each account can have up to 20 active tokens.

Send it in the header of every request:

Authorization: Bearer lp_live_0123456789abcdef0123456789abcdef01234567

Treat tokens like passwords: anyone with a token has full access to your account. If one leaks, revoke it right away.

Session tokens

The dashboard and the LittenVPN apps sign in with your email and password (protected by a captcha) and receive two tokens:

TokenLifetimeDescription
access_token15 minutesSigned JWT (HS256), returned in the response body. Send it as Authorization: Bearer.
mesh_rt7 daysRefresh token in an HttpOnly cookie limited to /api. It changes every time it's used.

When the access token expires, POST /refresh returns a new one and replaces the refresh token, so each refresh token works only once. POST /logout revokes it.

For your own integrations, use access tokens: signing in requires a captcha and is designed for our apps.

API

Errors

The API uses standard HTTP status codes and returns errors as JSON.

Error format

{ "error": "Not signed in" }

Some endpoints also return a machine-readable reason, such as POST /redeem:

{ "error": "This code has expired", "reason": "expired" }

Status codes

StatusMeaning
200 OKThe request worked.
400 Bad RequestMissing or invalid parameters.
401 UnauthorizedMissing, invalid or expired token.
402 Payment RequiredThe action needs a paid plan.
404 Not FoundThe resource doesn't exist or doesn't belong to you.
409 ConflictThe action was already done, for example a code you already redeemed.
410 GoneThe resource is no longer available, for example an expired code.
429 Too Many RequestsToo many requests. Wait a moment and try again.
500 Internal Server ErrorSomething went wrong on our side. Try again later.
502 Bad GatewayAn external service didn't respond. Try again later.
API

Rate limits

Some endpoints limit how often they can be called to protect your account. Going over a limit returns 429.

API limits

EndpointLimitCounted per
POST /login10 per minuteIP address
POST /signup5 every 5 minutesIP address
POST /checkout10 every 10 minutesAccount
POST /redeem8 every 10 minutesAccount
POST /redeem20 every 10 minutesIP address

Other endpoints have no fixed limit, but please keep a reasonable pace: checking your balance or usage once a minute is plenty.

Proxy connections

The proxy limits the number of simultaneous connections per account. Above that limit, new connections get 429 over HTTP or a general failure over SOCKS5.

Account

Get account

Returns your account details, balance and proxy credentials.

Response fields

usernamestring

Proxy username of your main product.

emailstring

Account email.

proxyPasswordstring

Proxy password of your main product.

tierstring

Proxy type: free, datacenter, residential or premium_residential.

tierNamestring

Name of the proxy type, ready to display.

balance_bytesinteger

Remaining balance, in bytes.

used_bytesinteger

Total traffic used, in bytes.

unlimitedboolean

Whether the account has no traffic limit.

hoststring

Proxy host.

portinteger

Proxy port.

proxyobject

Your proxy products: host, ports and products, with the product, port, username, password, balance_bytes, used_bytes and unlimited of each product you have.

vpnUntilinteger | null

End of your VPN plan, as a Unix timestamp.

vpnActiveboolean

Whether your VPN plan is active.

refCodestring

Your referral code.

The response includes a few more fields used by the LittenVPN apps. Don't rely on them: they may change.

username, proxyPassword, tier, balance_bytes, used_bytes, unlimited and port refer to your main product. Without any product, tier is free and there are no proxy credentials.

{
  "username": "27457313123001",
  "email": "you@example.com",
  "proxyPassword": "8702c1038af5da887145",
  "tier": "residential",
  "tierName": "Residential",
  "balance_bytes": 25000000000,
  "used_bytes": 1245000000,
  "unlimited": false,
  "host": "gw.littencaptcha.com",
  "port": 8080,
  "proxy": {
    "host": "gw.littencaptcha.com",
    "ports": { "residential": 8080, "premium_residential": 8888, "datacenter": 9090 },
    "products": [
      { "product": "residential", "name": "Residential", "port": 8080,
        "username": "27457313123001", "password": "8702c1038af5da887145",
        "balance_bytes": 25000000000, "used_bytes": 1245000000, "unlimited": false },
      { "product": "datacenter", "name": "Datacenter", "port": 9090,
        "username": "52352375474564", "password": "3f1c9b0e7a2d64c58e91",
        "balance_bytes": 10000000000, "used_bytes": 0, "unlimited": false }
    ]
  },
  "vpnUntil": 1794275735,
  "vpnActive": true,
  "refCode": "00EVD3A"
}
{ "error": "Not signed in" }
Account

Change login password

Changes the password you use to sign in. Your proxy password doesn't change.

Body parameters

currentstringRequired

Your current password, hashed as explained below.

newstringRequired

The new password (at least 8 characters), hashed the same way.

Password hashing

Passwords never travel in plain text: send sha256$ followed by the SHA-256 of the password in lowercase hexadecimal, just like the dashboard does.

Response

Returns {"ok": true}. If the current password is wrong, you get 401.

CUR="sha256\$$(printf %s 'current-password' | sha256sum | cut -d' ' -f1)"
NEW="sha256\$$(printf %s 'new-strong-password' | sha256sum | cut -d' ' -f1)"

curl -X POST https://littenhub.com/api/v1/account-password \
  -H "Authorization: Bearer $LP_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"current\":\"$CUR\",\"new\":\"$NEW\"}"
import hashlib, os, requests

def lp_hash(password):
    return "sha256$" + hashlib.sha256(password.encode()).hexdigest()

r = requests.post(
    "https://littenhub.com/api/v1/account-password",
    headers={"Authorization": f"Bearer {os.environ['LP_TOKEN']}"},
    json={"current": lp_hash("current-password"), "new": lp_hash("new-strong-password")},
)
print(r.json())
import { createHash } from "node:crypto";

const lpHash = (pw) => "sha256$" + createHash("sha256").update(pw).digest("hex");

const res = await fetch("https://littenhub.com/api/v1/account-password", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LP_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ current: lpHash("current-password"), new: lpHash("new-strong-password") }),
});
console.log(await res.json());
{ "ok": true }
{ "error": "Current password is incorrect" }
Account

Rotate proxy password

Generates a new proxy password and returns it. The old one stops working immediately. Your sign-in password doesn't change.

Body parameters

productstringOptional

residential, premium_residential or datacenter. By default, your main product. Your other products keep their password.

Response fields

passwordstring

The new proxy password.

productstring

Product whose password changed.

Update the password in every tool that uses the proxy. Otherwise, their requests will fail with 407.

{ "password": "4c9e1a07d2b85f3e6a0c", "product": "datacenter" }
Usage & billing

Daily usage

Returns your proxy traffic per day for the last 14 days, from oldest to newest.

Response fields

An array with one item per day:

datestring

Day, in YYYY-MM-DD format.

bytesinteger

Traffic that day (upload and download), in bytes.

[
  { "date": "2026-09-28", "bytes": 412000000 },
  { "date": "2026-09-29", "bytes": 0 },
  { "date": "2026-09-30", "bytes": 388500000 }
]
Usage & billing

Invoices

Returns your purchases, newest first: proxy GB and VPN plans.

Response fields

idstring

Invoice number.

datestring

Purchase date (YYYY-MM-DD).

kindstring

proxy or vpn.

gbnumber

GB purchased (proxy).

monthsinteger | null

Months purchased (VPN).

amtnumber

Amount paid, in US dollars.

planstring

Description of the purchase.

sourcestring

How it was paid: stripe (card), coingate (crypto) or manual.

[
  {
    "id": "INV-8F10FE57",
    "date": "2026-10-03",
    "kind": "proxy",
    "gb": 10.0,
    "months": null,
    "amt": 10.0,
    "plan": "Residential · 10 GB",
    "source": "stripe"
  },
  {
    "id": "INV-3C2A91D0",
    "date": "2026-09-21",
    "kind": "vpn",
    "gb": 0,
    "months": 12,
    "amt": 35.88,
    "plan": "LittenVPN · 12 months",
    "source": "stripe"
  }
]
Usage & billing

Prices

Returns the current prices of proxy GB and VPN plans. It doesn't need authentication.

Response fields

proxyarray

Proxy types, each with its tier and its price per GB in cents (perGbCents).

vpnarray

VPN plans, each with plan, months and its total price in cents (amountCents).

gbMininteger

Minimum GB per purchase.

gbMaxinteger

Maximum GB per purchase.

providersobject

Payment methods available right now.

The response includes a few more fields used by the dashboard. Don't rely on them: they may change.

{
  "proxy": [
    { "tier": "datacenter", "perGbCents": 50 },
    { "tier": "residential", "perGbCents": 100 },
    { "tier": "premium_residential", "perGbCents": 500 }
  ],
  "vpn": [
    { "plan": "vpn1", "months": 1, "amountCents": 499 },
    { "plan": "vpn12", "months": 12, "amountCents": 3588 },
    { "plan": "vpn24", "months": 24, "amountCents": 5976 }
  ],
  "gbMin": 1,
  "gbMax": 10000,
  "providers": { "stripe": true, "coingate": false }
}
Usage & billing

List orders

Returns your 30 most recent orders, newest first, including the ones still pending.

Response fields

idstring

Order ID.

productstring

proxy or vpn.

tierstring | null

Proxy type (proxy orders).

gbinteger | null

GB purchased (proxy orders).

monthsinteger | null

Months purchased (VPN orders).

amountCentsinteger

Total, in US dollar cents.

providerstring

stripe or coingate.

statusstring

pending, paid, failed, expired or canceled.

createdAtstring

Creation date (ISO 8601, UTC).

[
  {
    "id": "9b1f4c2e-7d3a-4e8b-a1c5-2f6d8e0b4a7c",
    "product": "proxy",
    "tier": "residential",
    "gb": 10,
    "months": null,
    "amountCents": 1000,
    "provider": "stripe",
    "status": "paid",
    "createdAt": "2026-10-03T18:42:10Z"
  }
]
Usage & billing

Get an order

Returns one order. If it's still pending, we first check its status with the payment provider, so it's useful right after paying.

Path parameters

idstringRequired

Order ID.

Response

The same fields as each order in List orders.

{
  "id": "9b1f4c2e-7d3a-4e8b-a1c5-2f6d8e0b4a7c",
  "product": "vpn",
  "tier": null,
  "gb": null,
  "months": 12,
  "amountCents": 3588,
  "provider": "stripe",
  "status": "paid",
  "createdAt": "2026-10-03T18:42:10Z"
}
{ "error": "Order not found" }
Proxy

Available countries

Returns the countries with IPs available for your proxy type, as two-letter codes.

Use them with country targeting: add _cr.xx to your proxy username.

Query parameters

productstringOptional

residential, premium_residential or datacenter. By default, your main product.

Response

An array of country codes (ISO 3166-1), in alphabetical order.

["DE", "ES", "FR", "GB", "NL", "US"]
Access tokens

List access tokens

Returns your active access tokens, newest first. The full token is never shown again, only its first characters.

Response fields

idstring

Token ID.

namestring

The name you gave the token.

prefixstring

First characters of the token, to recognize it.

createdstring

Creation date (YYYY-MM-DD).

lastUsedstring | null

Last day it was used.

[
  {
    "id": "8f10fe57-79bb-4fe3-92dd-37e34e085242",
    "name": "Production scraper",
    "prefix": "lp_live_213fd5a3…",
    "created": "2026-10-03",
    "lastUsed": "2026-10-11"
  }
]
Access tokens

Create an access token

Creates a new access token and returns it in full. It's the only time you'll see it, so save it somewhere safe.

Body parameters

namestringOptional

A name to recognize the token, up to 60 characters. By default, API key.

Response fields

idstring

Token ID.

namestring

The name you gave the token.

tokenstring

The full token. Send it as Authorization: Bearer.

prefixstring

First characters of the token, to recognize it.

Each account can have up to 20 active tokens. Above that, you get 400.

{
  "id": "8f10fe57-79bb-4fe3-92dd-37e34e085242",
  "name": "Production scraper",
  "token": "lp_live_213fd5a38a2eea5ce40cb2e73e7ab1ec4c90f335",
  "prefix": "lp_live_213fd5a3…"
}
{ "error": "Too many active keys (max 20)" }
Access tokens

Revoke an access token

Revokes a token. It stops working immediately.

Path parameters

idstringRequired

Token ID, from GET /keys.

{ "ok": true }
{ "error": "Key not found" }
Rewards

Redeem a code

Redeems a gift or promo code and applies its reward: GB for your proxy balance or days of VPN.

Body parameters

codestringRequired

The code. Capital letters, spaces and dashes don't matter.

Response fields

codestring

The redeemed code.

kindstring

gb (proxy GB) or vpn (VPN days).

bytesinteger

GB added to the code's product, in bytes.

tierstring | null

Product that received the GB.

daysinteger | null

VPN days added.

balanceBytesinteger | null

New balance of that product, in bytes.

vpnUntilinteger | null

End of your VPN plan, as a Unix timestamp.

Errors

Errors include a reason field that you can use in your code:

reasonStatusMeaning
invalid400The code is too short or too long.
not_found404The code doesn't exist.
already409You already redeemed this code.
used410The code has reached its usage limit.
expired410The code has expired.
inactive410The code has been deactivated.
rate429Too many attempts. Try again in a few minutes.
{
  "code": "LITTEN-7KQ2-M9XA",
  "kind": "gb",
  "bytes": 5000000000,
  "tier": "residential",
  "days": null,
  "balanceBytes": 30000000000,
  "vpnUntil": null
}
{
  "error": "This code has expired",
  "reason": "expired"
}
Rewards

Redeemed codes

Returns the codes you've redeemed, newest first (up to 50).

Response fields

codestring

The redeemed code.

kindstring

gb (proxy GB) or vpn (VPN days).

bytesinteger

GB added to the code's product, in bytes.

tierstring | null

Product that received the GB.

daysinteger | null

VPN days added.

atstring

When it was redeemed (ISO 8601, UTC).

[
  {
    "code": "LITTEN-7KQ2-M9XA",
    "kind": "gb",
    "bytes": 5000000000,
    "tier": "residential",
    "days": null,
    "at": "2026-10-11T09:30:00Z"
  },
  {
    "code": "WELCOME2026",
    "kind": "vpn",
    "bytes": 0,
    "tier": null,
    "days": 30,
    "at": "2026-09-21T10:00:00Z"
  }
]
Rewards

Referral program

Returns your referral code and the status of your invitations.

When someone signs up with your link (https://app.littenhub.com/?ref=CODE) and buys a VPN plan or at least $5 of proxy, you both get 1 GB of residential proxy, added to your residential product.

Response fields

codestring

Your referral code.

countinteger

Friends who have made a qualifying purchase.

pendinginteger

Friends who signed up but haven't made a qualifying purchase yet.

gbnumber

GB earned, added to your residential product.

minProxyCentsinteger

Minimum proxy purchase that qualifies, in cents. VPN plans always qualify.

historyarray

Your invitations: date, the friend's masked email (friend), status (completed, pending or rejected) and gb.

{
  "code": "00EVD3A",
  "count": 2,
  "pending": 1,
  "gb": 4.0,
  "minProxyCents": 500,
  "history": [
    { "date": "2026-10-10", "friend": "l***@gmail.com", "status": "completed", "gb": 2.0 },
    { "date": "2026-10-08", "friend": "m***@outlook.com", "status": "pending", "gb": 0 }
  ]
}
Status

Health check

Checks that the API is up. It doesn't need authentication.

{ "ok": true }
Error 404

This page doesn't exist

It may have moved. Use the menu or the search to find what you're looking for.

Go to the documentation home

© 2026 LittenHub Website Dashboard Pricing support@littencaptcha.com
Esc
↑↓to moveEnterto open