# የሞባይል ፖርቶችና IP ማለዋወጥ

> የAfricaProxies API፦ 4G/5G ፖርቶች፣ IP አሁን፣ በሰዓት ወይም በአገናኝ ማለዋወጥና ዕለታዊ ትራፊክ። የጥያቄ መለኪያዎች፣ የምላሽ ምሳሌዎችና የcurl፣ Python እና Node.js ኮድ።

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

የተወሰኑ 4G/5G ፖርቶች፦ IP አሁን ወይም በሰዓት ይቀይሩ፣ የማለዋወጫ አገናኙን ይጠቀሙ፣ ዕለታዊ ትራፊኩንም ያንብቡ።

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

- `GET /v1/mobile`: የሞባይል ፖርቶችን ይዘርዝሩ
- `GET /v1/mobile/{portId}`: የሞባይል ፖርት ያግኙ
- `PATCH /v1/mobile/{portId}`: እንደገና ይሰይሙ፣ ራስ-ሰር እድሳትን ያብሩ/ያጥፉ፣ ወይም ራስ-ሰር ማለዋወጥ ያዋቅሩ
- `POST /v1/mobile/{portId}/rotate`: IP አሁን ይቀይሩ
- `GET /v1/mobile/{portId}/rotate`: የማለዋወጫ አገናኝ (GET ከAPI ቁልፍ ጋር በመጠይቅ ጽሑፍ)
- `POST /v1/mobile/{portId}/reset-password`: ለፖርቱ አዲስ የproxy ይለፍ ቃል ይፍጠሩ
- `GET /v1/mobile/{portId}/usage`: በፖርቱ የሚያልፍ ዕለታዊ ትራፊክ (ለመረጃ፦ በፍትሃዊ አጠቃቀም መሠረት ያልተገደበ ዳታ)
- `GET /v1/catalog/countries/{countryCode}/carriers`: በአገር ውስጥ የሚገኙ 4G/5G ፖርቶች ያላቸው የሞባይል ኦፕሬተሮች

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

## የሞባይል ፖርቶችን ይዘርዝሩ

`GET /v1/mobile`

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

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "id": "mob_2v8k1q",
      "label": "AE Etisalat #1",
      "status": "active",
      "country": "AE",
      "city": null,
      "carrier": "etisalat",
      "carrierName": "Etisalat",
      "networkType": "4G",
      "currentIp": "203.0.113.201",
      "ipChangedAt": "2026-10-05T14:03:11Z",
      "endpoint": {
        "host": "gw.africaproxies.com",
        "httpPort": 7777,
        "socksPort": 7778
      },
      "username": "USERNAME",
      "password": "PASSWORD",
      "rotation": {
        "mode": "interval",
        "intervalMinutes": 10
      },
      "minRotationIntervalSeconds": 30,
      "rotationLink": "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
      "planId": "mob-30d",
      "autoRenew": false,
      "createdAt": "2026-10-05T14:03:11Z",
      "expiresAt": "2026-11-04T14:03:11Z"
    }
  ]
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/mobile" \
  -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}/mobile", 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}/mobile`, {
  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/mobile/{portId}`

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

**ፓራሜትሮች**

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

**ምላሽ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "AE Etisalat #1",
  "status": "active",
  "country": "AE",
  "city": null,
  "carrier": "etisalat",
  "carrierName": "Etisalat",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/mobile/mob_2v8k1q" \
  -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}/mobile/mob_2v8k1q", 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}/mobile/mob_2v8k1q`, {
  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/mobile/{portId}`

ፖርቱን እንደገና ይሰይሙ፣ ራስ-ሰር እድሳትን ያብሩ ወይም ያጥፉ፣ ወይም ከእያንዳንዱ 2 ደቂቃ እስከ እያንዳንዱ 24 ሰዓት የሚደርስ ራስ-ሰር ማለዋወጫ ጊዜ ያዘጋጁ፦ `"rotation": { "mode": "interval", "intervalMinutes": 10 }` (2–1440 ደቂቃ)፤ `"mode": "manual"` ያጠፋዋል። ካልሆነ፣ እርስዎ እስኪያለዋውጡት ድረስ ፖርትዎ ያለውን IP ያቆያል፣ ምንም እንኳን ኦፕሬተሩ ከጊዜ ወደ ጊዜ በራሱ ሊቀይረው ቢችልም።

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

**ፓራሜትሮች**

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

**የጥያቄ አካል**

| መስክ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- |
| `label` | string | አይደለም | እስከ 60 ቁምፊዎች |
| `autoRenew` | boolean | አይደለም | — |
| `rotation` | object | አይደለም | ራስ-ሰር የማለዋወጫ ሰዓት፦ `{ "mode": "interval", "intervalMinutes": 2–1440 }` (ከእያንዳንዱ 2 ደቂቃ እስከ እያንዳንዱ 24 ሰዓት)፣ ወይም ሲጠየቅ ብቻ ለማለዋወጥ `{ "mode": "manual", "intervalMinutes": null }`። |

*ምሳሌ: ራስ-ሰር ማለዋወጥ*

```json
{
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  }
}
```

*ምሳሌ: በእጅ*

```json
{
  "rotation": {
    "mode": "manual",
    "intervalMinutes": null
  }
}
```

**ምላሽ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "AE Etisalat #1",
  "status": "active",
  "country": "AE",
  "city": null,
  "carrier": "etisalat",
  "carrierName": "Etisalat",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s -X PATCH "https://africaproxies.com/api/v1/mobile/mob_2v8k1q" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rotation":{"mode":"interval","intervalMinutes":10}}'
```

*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}/mobile/mob_2v8k1q", headers=HEADERS, json={"rotation": {"mode": "interval", "intervalMinutes": 10}}, 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}/mobile/mob_2v8k1q`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ rotation: { mode: 'interval', intervalMinutes: 10 } }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## IP አሁን ይቀይሩ

`POST /v1/mobile/{portId}/rotate`

እያንዳንዱ ማለዋወጥ አዲስ IP ለማግኘት ፖርትዎን ከኦፕሬተሩ ጋር እንደገና ያገናኛል፣ ብዙውን ጊዜም 5–15 ሰከንዶች ይወስዳል፤ ኦፕሬተሩ አንዳንድ ጊዜ ያንኑ IP ሊመልስ ይችላል፦ እንደገና ያለዋውጡ። በእያንዳንዱ ፖርት ቢበዛ በ30 ሰከንድ አንድ ጊዜ (`minRotationIntervalSeconds`)፤ ከጊዜው ቀድሞ የተጠየቀ ማለዋወጥ `429 rotation_too_soon` ከ `Retry-After` ጋር ይመልሳል (መጠበቅ ያለብዎት ሰከንዶች)።

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

**ፓራሜትሮች**

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

**ምላሽ** `200 OK`

```json
{
  "ip": "203.0.113.201",
  "previousIp": "203.0.113.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}
```

*curl*

```bash
curl -s -X POST "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate" \
  -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}/mobile/mob_2v8k1q/rotate", 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}/mobile/mob_2v8k1q/rotate`, {
  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 ከAPI ቁልፍ ጋር በመጠይቅ ጽሑፍ)

`GET /v1/mobile/{portId}/rotate`

ከ `POST` ጋር ተመሳሳይ፣ ለስክሪፕቶችና ለዕልባቶች፦ `GET https://africaproxies.com/api/v1/mobile/{portId}/rotate?key=API_KEY`። ቁልፉ `proxies` የፈቃድ ወሰን ያስፈልገዋል። `format=text` አዲሱን IP እንደ `text/plain` ይመልሳል።

ማረጋገጫ፦ በ`key` query parameter ውስጥ API key (scope `proxies`) አለ፣ ስለዚህ ሊንኩ ከbookmark ይሰራል።

**ፓራሜትሮች**

| ስም | በ | ዓይነት | አስፈላጊ | መግለጫ |
| --- | --- | --- | --- | --- |
| `key` | query | string | አዎ | የእርስዎ API ቁልፍ (`proxies` የፈቃድ ወሰን)። |
| `portId` | path | string | አዎ | — |
| `format` | query | `json` · `text` | አይደለም | ነባሪ `json` |

**ምላሽ** `200 OK`

```json
{
  "ip": "203.0.113.201",
  "previousIp": "203.0.113.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}
```

*curl*

```bash
curl -s "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate?key=$API_KEY&format=text"
```

*Python*

```python
import os
import requests

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

r = requests.get(f"{API}/mobile/mob_2v8k1q/rotate", params={"key": os.environ["API_KEY"], "format": "text"}, timeout=30)
r.raise_for_status()
print(r.text)
```

*Node.js*

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

const res = await fetch(`${API}/mobile/mob_2v8k1q/rotate?key=${process.env.API_KEY}&format=text`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.text());
```

## ለፖርቱ አዲስ የproxy ይለፍ ቃል ይፍጠሩ

`POST /v1/mobile/{portId}/reset-password`

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

**ፓራሜትሮች**

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

**ምላሽ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "AE Etisalat #1",
  "status": "active",
  "country": "AE",
  "city": null,
  "carrier": "etisalat",
  "carrierName": "Etisalat",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s -X POST "https://africaproxies.com/api/v1/mobile/mob_2v8k1q/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}/mobile/mob_2v8k1q/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}/mobile/mob_2v8k1q/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/mobile/{portId}/usage`

ለመረጃ ብቻ። በተወሰነው ፖርትዎ ያልተገደበ ዳታ፣ በፍትሃዊ አጠቃቀም መሠረት፦ ኦፕሬተሩ እጅግ ከባድ አጠቃቀምን ሊያዘገይ ወይም ሊያቆም ይችላል።

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

**ፓራሜትሮች**

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

**ምላሽ** `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/mobile/mob_2v8k1q/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}/mobile/mob_2v8k1q/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}/mobile/mob_2v8k1q/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());
```

## በአገር ውስጥ የሚገኙ 4G/5G ፖርቶች ያላቸው የሞባይል ኦፕሬተሮች

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

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

**ፓራሜትሮች**

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

**ምላሽ** `200 OK`

```json
{
  "data": [
    {
      "id": "etisalat",
      "name": "Etisalat",
      "networkTypes": [
        "4G",
        "5G"
      ],
      "available": true,
      "cities": []
    }
  ]
}
```

*curl*

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

*Python*

```python
import os
import requests

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

r = requests.get(f"{API}/catalog/countries/AE/carriers", 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/carriers`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

---

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