# Oxylab

{% hint style="info" %}
API documentation: <https://torchlabs.readme.io/>
{% endhint %}

### **How to generate sticky proxies:**

```javascript
const string = (length) => {
  let result = '';
  const characters = 'abcdefghijklmnopqrstuvwxyz1234567890';
  const charactersLength = characters.length;
  for (let i = 0; i < length; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength));
  }
  return result;
};

function proxyGenerationSticky(amount, country, username, password) {
  proxy = [];
  for (var i = 0; i < parseInt(amount); i++) {
    proxy.push(
      `oxy.x.proxiess.com:7777:${username}:${password}-cc-${country.toLowerCase()}-sessid-${string(8,
      )}-sesstime-30\n`,
    );
  }
  return proxy.join('');
}
```

**How to Generate Oxylab EU sticky proxies**

```
oxyeu.x.proxiess.com:7778:<username>:<password>-cc-<country code>-sessid-<session id>-sesstime-30
```

### How to generate rotating proxies:

```javascript
function proxyGenerationRotating(amount, country, username, password) {
  proxy = [];
  for (var i = 0; i < parseInt(amount); i++) {
    proxy.push(
      `oxy.x.proxiess.com:7777:${username}:${password}-cc-${country.toLowerCase()}\n`,
    );
  }
  return proxy.join('');
}
```

**How to Generate Oxylab EU rotating proxies**

```
oxyeu.x.proxiess.com:7778:<username>:<password>-cc-<country code>
```

```javascript
    US: "USA",
    CA: "Canada",
    GB: "GB",
    DE: "Germany",
    FR: "France",
    ES: "Spain",
    IT: "Italy",
    SE: "Sweden",
    GR: "Greece",
    PT: "Portugal",
    NL: "Netherlands",
    BE: "Belgium",
    RU: "Russia",
    UA: "Ukraine",
    PL: "Poland",
    IL: "Israel",
    TR: "Turkey",
    AU: "Australia",
    MY: "Malaysia",
    TH: "Thailand",
    KR: "South Korea",
    JP: "Japan",
    PH: "Philippines",
    SG: "Singapore",
    CN: "China",
    HK: "Hong Kong",
    TW: "Taiwan",
    IN: "India",
    PK: "Pakistan",
    IR: "Iran",
    ID: "Indonesia",
    AZ: "Azerbaijan",
    KZ: "Kazakhstan",
    AE: "UAE",
    MX: "Mexico",
    BR: "Brazil",
    AR: "Argentina",
    CL: "Chile",
    PE: "Peru",
    EC: "Ecuador",
    CO: "Colombia",
    ZA: "South Africa",
    EG: "Egypt",
    AO: "Angola",
    CM: "Cameroon",
    CF: "Central African Republic",
    TD: "Chad",
    BJ: "Benin",
    ET: "Ethiopia",
    DJ: "Djibouti",
    GM: "Gambia",
    GH: "Ghana",
    CI: "Côte d'Ivoire",
    KE: "Kenya",
    LR: "Liberia",
    MG: "Madagascar",
    ML: "Mali",
    MR: "Mauritania",
    MU: "Mauritius",
    MA: "Morocco",
    MZ: "Mozambique",
    NG: "Nigeria",
    SN: "Senegal",
    SC: "Seychelles",
    ZW: "Zimbabwe",
    SS: "South Sudan",
    SD: "Sudan",
    TG: "Togo",
    TN: "Tunisia",
    UG: "Uganda",
    ZM: "Zambia",
    AF: "Afghanistan",
    BH: "Bahrain",
    BD: "Bangladesh",
    AM: "Armenia",
    BT: "Bhutan",
    MM: "Myanmar",
    KH: "Cambodia",
    GE: "Georgia",
    IQ: "Iraq",
    JO: "Jordan",
    LB: "Lebanon",
    MV: "Maldives",
    MN: "Mongolia",
    OM: "Oman",
    QA: "Qatar",
    SA: "Saudi Arabia",
    VN: "Vietnam",
    TM: "Turkmenistan",
    UZ: "Uzbekistan",
    YE: "Yemen",
    AL: "Albania",
    AD: "Andorra",
    AT: "Austria",
    BA: "Bosnia and Herzegovina",
    BG: "Bulgaria",
    BY: "Belarus",
    HR: "Croatia",
    CY: "Cyprus",
    CZ: "Czech Republic",
    DK: "Denmark",
    EE: "Estonia",
    FI: "Finland",
    HU: "Hungary",
    IS: "Iceland",
    IE: "Ireland",
    LV: "Latvia",
    LI: "Liechtenstein",
    LT: "Lithuania",
    LU: "Luxembourg",
    MT: "Malta",
    MC: "Monaco",
    MD: "Moldova",
    ME: "Montenegro",
    NO: "Norway",
    RO: "Romania",
    RS: "Serbia",
    SK: "Slovakia",
    SI: "Slovenia",
    CH: "Switzerland",
    MK: "Macedonia",
    BS: "Bahamas",
    BZ: "Belize",
    VG: "British Virgin Islands",
    CR: "Costa Rica",
    CU: "Cuba",
    DM: "Dominica",
    HT: "Haiti",
    HN: "Honduras",
    JM: "Jamaica",
    AW: "Aruba",
    PA: "Panama",
    PR: "Puerto Rico",
    TT: "Trinidad and Tobago",
    FJ: "Fiji",
    NZ: "New Zealand",
    BO: "Bolivia",
    PY: "Paraguay",
    UY: "Uruguay",
    VE: "Venezuela",
  }
```

### Other Optional Features

#### Selecting State:

{% embed url="<https://developers.oxylabs.io/proxies/residential-proxies/select-state>" %}

#### Selecting City:

{% embed url="<https://developers.oxylabs.io/proxies/residential-proxies/select-city>" %}

#### Session Control:

{% embed url="<https://developers.oxylabs.io/proxies/residential-proxies/session-control>" %}

#### Country Specific Nodes:

{% embed url="<https://developers.oxylabs.io/proxies/residential-proxies/country-specific-entry-nodes>" %}

### White labeling

Use this method to brand your proxies with your own domain/comapny name

To brand the proxies under your domain follow these steps:

1. Open the DNS configuration for your domain.
2. Create a C Name Record pointing to the domain.
3. Whatever you enter in 'host' will decide the domain which points to our API IP.
4. Thus if your domain is [API.com](http://api.com/) and you enter the host premium pointing to the oxylabs domain, your proxies will be formatted [premium.yourdomain.com](http://premium.yourdomain.com/):port:user:pass
5. An example on Godaddy is linked below:

<figure><img src="/files/QV4ZP1hrFDYd62YjJHQb" alt=""><figcaption></figcaption></figure>

### FAQ

#### What is Authorization?

This is a header value you provide with every request. We are using Bearer token so send in the header like this: <mark style="color:red;">`"Authorization: Bearer <your api token>"`</mark>

* Im getting this error: <mark style="color:red;">`{"message":"username cannot be null or undefined.","timestamp":1634146275996}`</mark> how do I fix it?

Make sure you have this <mark style="color:red;">`"Content-Type": "application/json"`</mark> header present in your requests.

#### Headers

Please check on how to send requests with headers in whichever languages you are using.

POST Request:

```javascript
{
	"Authorization": "Bearer <your api token>",
	"Content-Type": "application/json"
} 
```

```javascript
# Sample curl request
curl --location --request POST 'https://elite.proxiesapi.xyz/proxy_api/v1/elite/users/update' \
         --data-raw '{
							"user_id": 3194569,
					    "password": "3eqwd",
					    "traffic_limit": 3
     }' -H "Authorization: Bearer <your api token>" -H "Content-Type: application/json"
```

GET Request:

```javascript
{
	"Authorization": "Bearer <your api token>",
}
```

```javascript
ava# Sample curl request
curl --location --request GET 'https://elite.proxiesapi.xyz/proxy_api/v1/elite/users/2392122?type=lifetime' \
         -H "Authorization: Bearer <your api token>"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://reseller.torchlabs.xyz/reseller-apis/oxylab.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
