Byteful

Byteful is a proxy provider that sells residential, static ISP, datacenter and mobile proxies. log uses its residential proxies, pinned to an account's city with a sticky session of up to 24 hours. Read this when you assign a Byteful proxy, check its traffic, or plan to use static ISP IPs.

  • Docs: https://documentation.byteful.com, including an OpenAPI spec.
  • API: https://api.byteful.com/1.0, with two headers, X-API-Public-Key and X-API-Private-Key. Put the keys in .env.local as BYTEFUL_PUBLIC_KEY and BYTEFUL_PRIVATE_KEY; they are never printed.
  • Code: src/proxyVendor/byteful (client.ts, types.ts, helpers/pickCity.ts, tests).
  • How it fits: like every provider, see Proxy providers.

Residential (what log uses now)

  • Connection: http://{proxyUser}_c_{country}_city_{city}_s_{session}_ttl_{ttl}:{password}@residential.byteful.com:8000 (SOCKS5 too). log doesn't build this string itself: GET /residential/list returns it whole, so the format can change without breaking log.
  • Sticky session: one IP for up to 24 hours (_ttl_24h, the maximum). Byteful tries to hold it for up to 7 days but doesn't promise that. A new list call is a new session, and so a new exit IP.
  • Targeting: country, US state (us-pa), city, ZIP or ASN.
    • Device counts per city vary a lot. On 2026-10-20 Pennsylvania had 34,101 residential devices: Philadelphia 10,147, Pittsburgh 1,786, and smaller cities a few hundred each.
    • Some cities aren't in Byteful's city list. For those, use --city to pick a nearby city.
  • Billing: per GB. log proxy balance shows what is left, and the warm-up meters it against each account's traffic budget.

Static ISP

Static ISP IPs give each account one dedicated IP. They are not in use yet.

  • Price: $3.00 per IP per month in the US (10 IPs quoted at $30.00 through POST /checkout/quote, "Static Residential ISP Proxies [Mixed]", 2026-10-20).
  • Buying: API checkouts are paid from account credit only, and log never buys. A person buys in Byteful's dashboard.
  • Location: an order through the API can be pinned to a country only (service_fulfillment_filter: country_id, and asn_id with an account permission). The IPs come from "random locations" in that country, so a specific city has to be arranged with Byteful's support.
  • Once issued: each IP carries its city, state and coordinates (GET /proxy/search, log proxy static). Each one becomes one account's proxy, after the same distance and speed check as any other proxy.

Every endpoint, and what it is for

All 58 endpoints from the OpenAPI spec. The Use column means:

  • Used: log calls it today.
  • Next: for the static IPs, when they are used.
  • Later: useful, not called.
  • Not ours: buys, cancels or deletes, or a product log doesn't use.
UseMethodPathEndpointWhat it is for us
UsedPOST/checkout/quoteGenerate Checkout QuoteThe price of static ISP IPs for a country and quantity, without buying (quoteIsp; 10 US ISP IPs quoted at $3.00 each, 2026-10-20).
UsedGET/city/searchSearch CityThe account's city by name, nearest its home coordinates, with devices (searchCities, pickCity).
UsedGET/customer/retrieveRetrieve Current Customerlog proxy balance: the credit balance API checkouts are paid from (getCreditCents).
UsedGET/proxy/searchSearch Proxieslog proxy static: the static IPs on the account with each one's city, state and coordinates (staticProxies).
UsedGET/residential/listGenerated Residential Listlog proxy assign --vendor byteful: one sticky (24 h) residential URL pinned to the account's city, then checked and saved to Twenty's proxy (residentialProxyUrl).
UsedGET/residential/summaryRetrieve Residential Service Summarylog proxy balance and the warm-up's traffic meter: bytes used and left, and the proxy user (getResidentialSummary, bytefulMeter).
NextGET/checkout/catalogRetrieve Simplified Product Checkout CatalogWhich products are on sale per country, with stock (product_stock), before a quote.
NextGET/ip_address/geolocate/{ip_address}Retrieve IP Address GeolocationWhere an IP is: a second opinion on an exit IP next to our own proxy check.
NextPOST/proxy/list_by_idGenerate Proxy List By IDOne static IP as a connection string, by its id.
NextGET/proxy/list_by_searchGenerate Proxy List By SearchThe static IPs as connection strings (list_format, list_authentication) once bought: each one becomes an account's proxy in Twenty.
NextGET/proxy/retrieve/{proxy_id}Retrieve ProxyOne static IP's details (location, ports, online) for a check.
NextGET/residential_availability/searchSearch Residential AvailabilityHow many residential devices each city of a state has (group_by=city), to pick the nearest city with devices for an account whose own city has none (when a city is missing from the list).
NextGET/service/retrieve/{service_id}Retrieve ServiceOne service, with its proxies (proxies=true).
NextGET/service/searchSearch ServicesThe services on the account (the residential plan, a static order) and their status.
LaterGET/analytics/breakdownAnalytics BreakdownTraffic by hostname and proxy user over a period (what Reels cost per account).
LaterGET/analytics/graphGraph Proxy AnalyticsTraffic over time.
LaterGET/asn/retrieve/{asn_id}Retrieve ASNOne ASN.
LaterGET/asn/searchSearch ASNISP networks (ASNs), e.g. AT&T 7018, for an ISP order's asn_id filter (needs an account permission).
LaterGET/blacklist/searchSearch BlacklistsDomains blocked per product.
LaterGET/city/retrieve/{city_id}Retrieve CityOne city.
LaterGET/continent/retrieve/{continent_id}Retrieve ContinentOne continent.
LaterGET/continent/searchSearch ContinentContinents.
LaterGET/country/retrieve/{country_id}Retrieve CountryOne country.
LaterGET/country/searchSearch CountryCountries.
LaterGET/log/retrieve/{log_id}Retrieve LogOne log entry.
LaterGET/log/searchSearch LogsRequest logs by proxy user, session, location: what a run sent through the proxy.
LaterGET/log_summary/retrieve/{log_summary_id}Retrieve Log SummaryOne log summary.
LaterGET/log_summary/searchSearch Log SummaryRequests and errors per hostname.
LaterGET/product/searchSearch ProductThe product list by type and country.
LaterPOST/proxy/list/optionsGet Proxy User List OptionsThe proxy users that can authenticate a set of proxies.
LaterGET/proxy_test_server/searchSearch Proxy Test ServersByteful's test servers by city.
LaterPOST/proxy_user/createCreate Proxy UserA proxy user per account, so each account has its own credentials and traffic limit (proxy_user_residential_bytes_limit): a per-account budget enforced by Byteful.
LaterPATCH/proxy_user/edit/{proxy_user_id}Edit Proxy UserChange a proxy user's limit or IP authentication.
LaterGET/proxy_user/retrieve/{proxy_user_id}Retrieve Proxy UserOne proxy user.
LaterGET/proxy_user/searchSearch Proxy UsersThe proxy users.
LaterPOST/proxy_user_acl/createCreate Proxy User ACLRestrict a proxy user to one static IP, so an account's credentials only open its own IP.
LaterGET/proxy_user_acl/retrieve/{proxy_user_acl_id}Retrieve Proxy User ACLOne access rule.
LaterGET/proxy_user_acl/searchSearch Proxy User ACLsThe access rules.
LaterGET/residential_availability/countGet Residential Availability CountDevices in a country, state, city or ZIP: a quick stock check.
LaterGET/residential_ledger/retrieve/{residential_ledger_id}Retrieve Residential LedgerOne ledger entry.
LaterGET/residential_ledger/searchSearch Residential LedgerResidential traffic per day: an independent check of the warm-up's traffic ledger.
LaterGET/service_adjustment/retrieve/{service_adjustment_id}Retrieve Service AdjustmentOne service change.
LaterGET/service_adjustment/searchSearch Service AdjustmentsChanges to a service (replacements, top-ups).
LaterGET/subdivision/retrieve/{subdivision_id}Retrieve SubdivisionOne state.
LaterGET/subdivision/searchSearch SubdivisionUS states and their ids (us-pa).
LaterGET/zip_code/retrieve/{zip_code_id}Retrieve Zip CodeOne ZIP code.
LaterGET/zip_code/searchSearch Zip CodeZIP codes, for ZIP-level targeting.
Not oursPOST/checkout/createCreate CheckoutBuys a service from credit. log never buys: purchases are made by a person in the dashboard.
Not oursGET/mobile/listGenerated Mobile ListMobile proxies: not a product we use.
Not oursGET/mobile/summaryRetrieve Mobile Service SummaryMobile plan.
Not oursGET/mobile_availability/countGet Mobile Availability CountMobile stock.
Not oursGET/mobile_availability/searchSearch Mobile AvailabilityMobile stock.
Not oursGET/mobile_ledger/retrieve/{mobile_ledger_id}Retrieve Mobile LedgerMobile traffic.
Not oursGET/mobile_ledger/searchSearch Mobile LedgerMobile traffic.
Not oursDELETE/proxy_user/delete/{proxy_user_id}Delete Proxy User RecordDeletes a proxy user.
Not oursDELETE/proxy_user_acl/delete/{proxy_user_acl_id}Delete Proxy User ACL RecordRemoves an access rule.
Not oursDELETE/service/cancel/{service_id}Cancel ServiceCancels a service: done by a person only.
Not oursPATCH/service/edit/{service_id}Edit ServiceAuto-renew, payment method, cancel flag: done by a person, in the dashboard.