PacketStream documentation

Account and sub-user endpoints

Create PacketStream reseller sub-users, transfer balances, retrieve 90 days of usage, inspect accounts, and reset proxy auth keys.

All endpoints use the base URL https://reseller.packetstream.io and require the reseller bearer token.

Endpoint summary

MethodPathPurpose
GET/reseller/my_infoRetrieve the reseller account
POST/reseller/sub_users/createCreate a sub-user
GET/reseller/sub_users/view_allList all owned sub-users
POST/reseller/sub_users/view_singleRetrieve one owned sub-user
POST/reseller/sub_users/view_txsRetrieve 90 days of daily usage
POST/reseller/sub_users/reset_auth_keyReplace a sub-user’s proxy auth key
POST/reseller/sub_users/give_balanceMove balance from reseller to sub-user
POST/reseller/sub_users/take_balanceReturn balance from sub-user to reseller

Sub-user object

Account and sub-user endpoints return this public shape inside data:

{
  "username": "u_7c091a1328f6caae",
  "balance": 500,
  "proxy_authkey": "REDACTED_PROXY_AUTH_KEY",
  "date_created": "2026-07-22T14:05:00Z"
}

balance is measured in USD cents. The proxy_authkey is a proxy credential, not the Reseller API bearer token.

Retrieve the reseller account

GET /reseller/my_info
curl --silent --show-error --fail-with-body \
  --header "Authorization: Bearer ${PACKETSTREAM_RESELLER_TOKEN}" \
  'https://reseller.packetstream.io/reseller/my_info' \
  | jq '.data'

Create a sub-user

POST /reseller/sub_users/create

Once an authenticated request has enough reseller balance to attempt creation, the $0.10 fee is charged even when validation fails or the username already exists. Generate and validate a unique random username before calling the endpoint.

Usernames:

  • are globally unique across PacketStream;
  • are converted to lowercase;
  • must contain 4–32 letters, numbers, periods, or underscores;
  • cannot begin or end with a period or underscore;
  • cannot contain adjacent periods or underscores.

This generates an allowed random username without using end-customer personal data:

SUBUSER="u_$(openssl rand -hex 8)"

Create it:

curl --silent --show-error --fail-with-body \
  --request POST \
  --header "Authorization: Bearer ${PACKETSTREAM_RESELLER_TOKEN}" \
  --header 'Content-Type: application/json' \
  --data "$(jq -nc --arg username "${SUBUSER}" '{username: $username}')" \
  'https://reseller.packetstream.io/reseller/sub_users/create' \
  | jq

The new sub-user starts with zero balance. The successful response contains its username and proxy auth key.

List all sub-users

GET /reseller/sub_users/view_all
curl --silent --show-error --fail-with-body \
  --header "Authorization: Bearer ${PACKETSTREAM_RESELLER_TOKEN}" \
  'https://reseller.packetstream.io/reseller/sub_users/view_all' \
  | jq '.data'

Do not depend on the returned array order.

Retrieve one sub-user

POST /reseller/sub_users/view_single

Request body:

{"username":"u_7c091a1328f6caae"}

The username must belong to the authenticated reseller.

Transfer balance to a sub-user

POST /reseller/sub_users/give_balance
{
  "username": "u_7c091a1328f6caae",
  "amount_usd_cents": 500
}

The amount must be a positive integer of at least one cent and cannot exceed the reseller’s available balance. A successful response reports the sub-user’s new balance.

Return balance to the reseller

POST /reseller/sub_users/take_balance
{
  "username": "u_7c091a1328f6caae",
  "amount_usd_cents": 100
}

The amount must be a positive integer of at least one cent and cannot exceed the sub-user’s available balance. The amount is returned to the reseller account.

Retrieve bandwidth history

POST /reseller/sub_users/view_txs

Request body:

{"username":"u_7c091a1328f6caae"}

The response contains up to the most recent 90 days of usage grouped by UTC day:

[
  {
    "bandwidth": {
      "up": 16814,
      "down": 142086
    },
    "timestamp": "2026-07-21T00:00:00Z"
  }
]

up and down are measured in bytes. Do not depend on array order; sort records by timestamp in your application.

Reset a proxy auth key

POST /reseller/sub_users/reset_auth_key

Request body:

{"username":"u_7c091a1328f6caae"}

The response contains the replacement proxy_authkey. Update your secret store and branded customer configuration as one controlled operation, and treat the previous proxy credential as retired.

Connect a sub-user

Provide the sub-user’s username and proxy_authkey with the branded proxy hostname established during reseller onboarding. Sub-users support the same country targeting and rotation or sticky-session behavior available through PacketStream’s proxy network.

Keep the Reseller API bearer token in your server-side control plane. Never expose it to sub-users or use it as a proxy password.

Questions? We’re here to help. Talk with our support team about your integration.
Contact support