# የመኖሪያ ኔትወርክ proxy-ዎችና የመግቢያ መረጃዎች

> የAfricaProxies API፦ የትራፊክ ምዝገባዎች፣ የproxy መግቢያ መረጃዎች፣ ንዑስ ተጠቃሚዎች፣ የትራፊክ አጠቃቀምና ሊመረጡ የሚችሉ ቦታዎች። የcurl፣ Python እና Node.js ኮድ ምሳሌዎችን ያግኙ።

- URL: https://africaproxies.com/am/docs/api/residential/
- የመጨረሻው መዘመን: 2026-10-15
- አሳቢ: AfricaProxies (https://africaproxies.com)

የትራፊክ ምዝገባዎችን ያስተዳድሩ (የመኖሪያ ኔትወርክና በ GB የሚከፈል የሚለዋወጥ 4G/5G)፦ የproxy መግቢያ መረጃዎች፣ የራሳቸው መግቢያና የትራፊክ ገደብ ያላቸው ንዑስ ተጠቃሚዎች፣ ዕለታዊ አጠቃቀምና በproxy ተጠቃሚ ስም ሊመርጧቸው የሚችሉ ቦታዎች።

**በዚህ ገጽ ያሉ መዳረሻዎች**

- `GET /v1/residential/subscriptions`: የትራፊክ ምዝገባዎችን ይዘርዝሩ (የመኖሪያ ኔትወርክና በ GB የሚለዋወጥ ሞባይል)
- `GET /v1/residential/subscriptions/{subscriptionId}`: የመኖሪያ ኔትወርክ ምዝገባ ያግኙ
- `PATCH /v1/residential/subscriptions/{subscriptionId}`: እንደገና ይሰይሙ ወይም ራስ-ሰር እድሳትን ያብሩ/ያጥፉ
- `POST /v1/residential/subscriptions/{subscriptionId}/reset-password`: ለዋናው ተጠቃሚ አዲስ የproxy ይለፍ ቃል ይፍጠሩ
- `GET /v1/residential/subscriptions/{subscriptionId}/usage`: ዕለታዊ የትራፊክ አጠቃቀም
- `GET /v1/residential/subscriptions/{subscriptionId}/sub-users`: ንዑስ ተጠቃሚዎችን ይዘርዝሩ (የራሳቸው የትራፊክ ገደብ ያላቸው የተለዩ proxy መግቢያዎች)
- `POST /v1/residential/subscriptions/{subscriptionId}/sub-users`: ንዑስ ተጠቃሚ ይፍጠሩ
- `PATCH /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}`: ንዑስ ተጠቃሚ ያዘምኑ (መለያ፣ ገደብ፣ ማንቃት/ማጥፋት፣ አዲስ ይለፍ ቃል)
- `DELETE /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}`: ንዑስ ተጠቃሚ ይሰርዙ
- `GET /v1/catalog/countries`: ምርት የሚገኝባቸው አገሮች
- `GET /v1/catalog/countries/{countryCode}/cities`: በአገር ውስጥ ሊመረጡ የሚችሉ ከተሞች
- `GET /v1/catalog/countries/{countryCode}/asns`: በአገር ውስጥ ሊመረጡ የሚችሉ የኢንተርኔት አቅራቢዎች (ASN) — የመኖሪያ ኔትወርክ ብቻ

መሠረታዊ URL `https://africaproxies.com/api/v1`። የመለያ ማረጋገጫ፣ ስህተቶችና ገደቦች፦ [የAPI አጠቃላይ መግለጫ](/am/docs/api/) ይመልከቱ።

## ተመሳሳይ አድራሻ የሚይዙ ክፍለ ጊዜዎች

ተመሳሳይ IP ለማቆየት በproxy ተጠቃሚ ስሙ `-session-{id}-ttl-{minutes}` ይጨምሩ፤ `{id}` የመረጧቸው 1–32 ፊደላት ወይም አሃዞች ናቸው፣ `ttl` ደግሞ 1–30 ደቂቃ ነው። ለምሳሌ ከአድራሻው ጀርባ ያለው መሣሪያ ከመስመር ውጭ ሲሆን፣ IP ከዚያ ቀድሞ ሊለወጥ ይችላል።

## የትራፊክ ምዝገባዎችን ይዘርዝሩ (የመኖሪያ ኔትወርክና በ GB የሚለዋወጥ ሞባይል)

`GET /v1/residential/subscriptions`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `productId` | query | `residential` · `mobile-gb` | አይደለም | ይህ ምርት ብቻ (ከሌለ፦ ሁለቱም)። |

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "id": "res_9x2m4k",
      "productId": "residential",
      "label": "Residential #1",
      "planId": "res-10",
      "status": "active",
      "trafficTotalBytes": 10000000000,
      "trafficUsedBytes": 2350000000,
      "trafficRemainingBytes": 7650000000,
      "expiresAt": null,
      "autoRenew": false,
      "username": "u7k2m9",
      "password": "PASSWORD",
      "endpoint": {
        "host": "gw.africaproxies.com",
        "httpPort": 7777,
        "socksPort": 7778
      },
      "subUserCount": 1,
      "createdAt": "2026-10-05T14:03:11Z"
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/residential/subscriptions" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## የመኖሪያ ኔትወርክ ምዝገባ ያግኙ

`GET /v1/residential/subscriptions/{subscriptionId}`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |

**ምላሽ** `200 OK`

```json
{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## እንደገና ይሰይሙ ወይም ራስ-ሰር እድሳትን ያብሩ/ያጥፉ

`PATCH /v1/residential/subscriptions/{subscriptionId}`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |

**የጥያቄ አካል**

| መስክ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- |
| `label` | string | አይደለም | እስከ 60 ቁምፊዎች |
| `autoRenew` | boolean | አይደለም | — |

*ምሳሌ*

```json
{
  "label": "Price monitoring",
  "autoRenew": true
}
```

**ምላሽ** `200 OK`

```json
{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}
```

*curl*

```bash
curl -s -X PATCH "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Price monitoring","autoRenew":true}'
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/residential/subscriptions/res_9x2m4k", headers=HEADERS, json={"label": "Price monitoring", "autoRenew": True}, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ label: 'Price monitoring', autoRenew: true }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ለዋናው ተጠቃሚ አዲስ የproxy ይለፍ ቃል ይፍጠሩ

`POST /v1/residential/subscriptions/{subscriptionId}/reset-password`

የቀድሞው ይለፍ ቃል በመግቢያ መስመሩ በ60 ሰከንድ ውስጥ መሥራት ያቆማል።

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |

**ምላሽ** `200 OK`

```json
{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}
```

*curl*

```bash
curl -s -X POST "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/reset-password" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/residential/subscriptions/res_9x2m4k/reset-password", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/reset-password`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ዕለታዊ የትራፊክ አጠቃቀም

`GET /v1/residential/subscriptions/{subscriptionId}/usage`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |
| `from` | query | string (date) | አይደለም | የመጀመሪያ ቀን (UTC)፣ ቀኑን ጨምሮ። ነባሪ = ከ `to` በፊት 29 ቀናት። |
| `to` | query | string (date) | አይደለም | የመጨረሻ ቀን (UTC)፣ ቀኑን ጨምሮ። ነባሪ = ዛሬ። ከፍተኛ ክልል 366 ቀናት። |
| `subUserId` | query | string | አይደለም | ለአንድ ንዑስ ተጠቃሚ ብቻ ይወስኑ። |

**ምላሽ** `200 OK`

```json
{
  "from": "2026-10-04",
  "to": "2026-10-05",
  "totalBytes": 2350000000,
  "totalRequests": 48210,
  "points": [
    {
      "date": "2026-10-04",
      "bytes": 1200000000,
      "requests": 24800
    },
    {
      "date": "2026-10-05",
      "bytes": 1150000000,
      "requests": 23410
    }
  ],
  "byCountry": [
    {
      "country": "AE",
      "bytes": 2350000000
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/usage" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k/usage", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/usage`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ንዑስ ተጠቃሚዎችን ይዘርዝሩ (የራሳቸው የትራፊክ ገደብ ያላቸው የተለዩ proxy መግቢያዎች)

`GET /v1/residential/subscriptions/{subscriptionId}/sub-users`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "id": "sub_3m9qk2",
      "label": "Client A",
      "username": "u7k2m9_scraper",
      "password": "PASSWORD",
      "trafficLimitBytes": 5000000000,
      "trafficUsedBytes": 1200000000,
      "enabled": true,
      "createdAt": "2026-10-05T14:03:11Z"
    }
  ],
  "limit": 50
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k/sub-users", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ንዑስ ተጠቃሚ ይፍጠሩ

`POST /v1/residential/subscriptions/{subscriptionId}/sub-users`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |

**የጥያቄ አካል**

| መስክ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- |
| `label` | string | አዎ | እስከ 60 ቁምፊዎች |
| `password` | string | አይደለም | ካልተሰጠ ይፈጠራል። — እስከ 64 ቁምፊዎች |
| `trafficLimitBytes` | integer (int64), nullable | አይደለም | ≥ 0 |

*ምሳሌ*

```json
{
  "label": "Scraper EU",
  "trafficLimitBytes": 5000000000
}
```

**ምላሽ** `201 Created`

```json
{
  "id": "sub_3m9qk2",
  "label": "Client A",
  "username": "u7k2m9_scraper",
  "password": "PASSWORD",
  "trafficLimitBytes": 5000000000,
  "trafficUsedBytes": 1200000000,
  "enabled": true,
  "createdAt": "2026-10-05T14:03:11Z"
}
```

*curl*

```bash
curl -s -X POST "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Scraper EU","trafficLimitBytes":5000000000}'
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/residential/subscriptions/res_9x2m4k/sub-users", headers=HEADERS, json={"label": "Scraper EU", "trafficLimitBytes": 5000000000}, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ label: 'Scraper EU', trafficLimitBytes: 5000000000 }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ንዑስ ተጠቃሚ ያዘምኑ (መለያ፣ ገደብ፣ ማንቃት/ማጥፋት፣ አዲስ ይለፍ ቃል)

`PATCH /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |
| `subUserId` | path | string | አዎ | — |

**የጥያቄ አካል**

| መስክ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- |
| `label` | string | አይደለም | እስከ 60 ቁምፊዎች |
| `trafficLimitBytes` | integer (int64), nullable | አይደለም | ≥ 0 |
| `enabled` | boolean | አይደለም | — |
| `regeneratePassword` | boolean | አይደለም | — |

*ምሳሌ*

```json
{
  "enabled": false
}
```

**ምላሽ** `200 OK`

```json
{
  "id": "sub_3m9qk2",
  "label": "Client A",
  "username": "u7k2m9_scraper",
  "password": "PASSWORD",
  "trafficLimitBytes": 5000000000,
  "trafficUsedBytes": 1200000000,
  "enabled": true,
  "createdAt": "2026-10-05T14:03:11Z"
}
```

*curl*

```bash
curl -s -X PATCH "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2", headers=HEADERS, json={"enabled": False}, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ enabled: false }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ንዑስ ተጠቃሚ ይሰርዙ

`DELETE /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}`

ማረጋገጫ፦ የAPI ቁልፍ በ`Authorization: Bearer API_KEY` ራስጌ ውስጥ።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `subscriptionId` | path | string | አዎ | — |
| `subUserId` | path | string | አዎ | — |

**ምላሽ** `204 No Content`

ምንም አካል የለም፡ የሁኔታው ኮድ መልሱ ነው።

*curl*

```bash
curl -s -X DELETE "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.delete(f"{API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.status_code)  # 204: done
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(res.status); // 204: done
```

## ምርት የሚገኝባቸው አገሮች

`GET /v1/catalog/countries`

የሕዝብ፡ ምንም API ቁልፍ አያስፈልግም።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `product` | query | string | አይደለም | ይህ ምርት በሚገኝባቸው ቦታዎች ብቻ ይወስኑ (`residential`፣ `mobile`፣ `mobile-gb`)። |

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "code": "AE",
      "name": "United Arab Emirates",
      "region": "Asia",
      "products": [
        "residential",
        "mobile",
        "mobile-gb"
      ],
      "cities": 6,
      "asns": 2,
      "carriers": 2
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/catalog/countries"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries", timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## በአገር ውስጥ ሊመረጡ የሚችሉ ከተሞች

`GET /v1/catalog/countries/{countryCode}/cities`

በ `product=mobile` ወይም `product=mobile-gb`፣ 4G/5G ሞደሞች ያሉባቸው ከተሞች ብቻ።

የሕዝብ፡ ምንም API ቁልፍ አያስፈልግም።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `countryCode` | path | string | አዎ | ISO 3166-1 alpha-2፣ በአቢይ ፊደል። |
| `product` | query | string | አይደለም | ይህ ምርት በሚገኝባቸው ቦታዎች ብቻ ይወስኑ (`residential`፣ `mobile`፣ `mobile-gb`)። |

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "id": "dubai",
      "name": "Dubai",
      "state": null
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/catalog/countries/AE/cities"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries/AE/cities", timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries/AE/cities`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## በአገር ውስጥ ሊመረጡ የሚችሉ የኢንተርኔት አቅራቢዎች (ASN) — የመኖሪያ ኔትወርክ ብቻ

`GET /v1/catalog/countries/{countryCode}/asns`

የሕዝብ፡ ምንም API ቁልፍ አያስፈልግም።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `countryCode` | path | string | አዎ | ISO 3166-1 alpha-2፣ በአቢይ ፊደል። |

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "asn": 7922,
      "name": "Comcast Cable"
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/catalog/countries/AE/asns"
```

*Python*

```python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries/AE/asns", timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries/AE/asns`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

---

AfricaProxies: AfricaProxies በሰሃራ በታች ላለው አፍሪካ የመኖሪያ IP proxy አቅራቢ ነው፤ ክፍያው በክሪፕቶ ነው፣ መታወቂያ መጫን አያስፈልግም።
