MNO

Add SIM Recipient

post
POST /v3/mno/:iccid/recipient

Add a recipient (email) for receiving notifications related to a SIM/ICCID. The response includes the updated SIM details, including recipients.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

The ICCID (SIM) (URL path parameter).

Request body

Parameter Type Required Description
Parameter: email Type: String Required: Yes Description:

The email address to add as a recipient.

Parameter: number Type: String Required: No Description:

(Optional) A number to add with the recipient.

Send a Sample Request

POST

Header

Parameter

Request body

Code Examples

curl --location --request POST 'https://api.aql.com//v3/mno/89444901000000000499/recipient' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{"email": "[email protected]"}'
<?php
$data = [ "email" => "[email protected]" ];
$ch = curl_init('https://api.aql.com//v3/mno/89444901000000000499/recipient');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/89444901000000000499/recipient"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {"email": "[email protected]"}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/89444901000000000499/recipient");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"email\":\"[email protected]\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = { email => '[email protected]' };
$client->POST(
'https://api.aql.com//v3/mno/89444901000000000499/recipient',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 201 Created
{
"success": true,
"message": "The SIM recipient has been added",
"data": {
"iccid": "89444901000000000499",
"imsi": "123456789012345",
"msisdn": "447119878160",
"service_4g": true,
"service_5g": false,
"pin": "04090719",
"pin2": "10169248",
"puk": "37802414",
"puk2": "41847687",
"current_state": "pending",
"requested_state": "pending",
"recipients": [
{
"id": "8m4nQwzK1D",
"email": "[email protected]",
"number": "+447112223344"
},
{
"id": "6a5dTrlF3J",
"email": "[email protected]",
"number": null
}
]
}
}

Error Response Example

SIM Recipient Already Exists

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "SIM Recipient already exists"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Delete SIM Recipient

delete
DELETE /v3/mno/recipient/:simRecipientId

Delete a SIM recipient by id for the authenticated account. Only recipients belonging to SIMs associated with your account can be deleted.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: simRecipientId Type: String Required: Yes Description:

The id of the SIM recipient to delete (URL path parameter).

Send a Sample Request

DELETE

Header

Parameter

Code Examples

curl --location --request DELETE 'https://api.aql.com//v3/mno/recipient/aB1kD2zWpG' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno/recipient/aB1kD2zWpG";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/recipient/aB1kD2zWpG"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}"
}
response = requests.delete(url, headers=headers)
print(response.status_code)
print(response.text)
var client = new RestClient("https://api.aql.com//v3/mno/recipient/aB1kD2zWpG");
var request = new RestRequest(Method.DELETE);
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
$client->DELETE(
'https://api.aql.com//v3/mno/recipient/aB1kD2zWpG',
undef,
['X-Auth-Token' => '{{YOUR_API_TOKEN}}']
);
print $client->responseCode();
print $client->responseContent();

Success Response Example

HTTP/1.1 204 No Content

Error Response Example

Invalid SIM Recipient

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid SIM Recipient"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Get Account SIM/ICCID Details

get
GET /v3/mno

Retrieve a paginated list of SIMs for the authenticated account, with flexible filtering and sorting.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: page Type: Number Required: No Description:

Page number for pagination

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500)

Parameter: order_by Type: String Required: No Description:

Sort column

Parameter: order_direction Type: String Required: No Description:

Sort direction

Parameter: filters[iccid] Type: String Required: No Description:

[operator]] Operator for ICCID

Parameter: filters[imsi] Type: String Required: No Description:

[operator]] Operator for IMSI

Parameter: filters[msisdn] Type: String Required: No Description:

[operator]] Operator for MSISDN

Send a Sample Request

GET

Header

Parameter

Code Examples

curl --location --globoff --request GET 'https://api.aql.com//v3/mno?page=1&order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno?page=1&order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno?page=1&order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno?page=1&order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno?page=1&order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499',
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"data": [
{
"iccid": "89444901000000000499",
"imsi": "234470888096327",
"msisdn": "447119878160",
"service_4g": true,
"service_5g": false,
"pin": "04090719",
"pin2": "10169248",
"puk": "37802414",
"puk2": "41847687",
"current_state": "pending",
"subscriber_id": "gqBEmlp37j",
"requested_state": "pending",
"subscriber_id": "gqBEmlp37j"
}
],
"message": "Account SIMs",
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 100,
"total": 1,
"count": 1
}
}

Set MNO Account Callback URL

put
PUT /v3/mno/callback

Configure or update the callback URL for receiving asynchronous notifications for your account (e.g., SIM status events, job completions, etc).
The callback URL must be a valid, reachable HTTPS endpoint.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Request body

Parameter Type Required Description
Parameter: callback_url Type: String Required: Yes Description:

The HTTPS callback URL to be set for the authenticated account.

Send a Sample Request

PUT

Header

Request body

Code Examples

curl --request PUT 'https://api.aql.com//v3/mno/callback' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{"callback_url": "https://webhook.example.com/my-account-events"}'
<?php
$data = [ "callback_url" => "https://webhook.example.com/my-account-events" ];
$ch = curl_init('https://api.aql.com//v3/mno/callback');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/callback"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {"callback_url": "https://webhook.example.com/my-account-events"}
response = requests.put(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/callback");
var request = new RestRequest(Method.PUT);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"callback_url\":\"https://webhook.example.com/my-account-events\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = { callback_url => 'https://webhook.example.com/my-account-events' };
$client->PUT(
'https://api.aql.com//v3/mno/callback',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 204 OK

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"callback_url": [
"The callback URL must be a valid HTTPS URL."
]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Set SIM Monthly Usage Limit

put
PUT /v3/mno/:iccid/usage-limit

Set or update the monthly usage limit for a SIM/ICCID for the authenticated account. The response includes the updated SIM details, including ICCID, IMSI, MSISDN, service flags, PINs/PUKs, and current/requested state. Usage limits and type are shown if set.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

The ICCID (SIM) to update (URL path parameter).

Request body

Parameter Type Required Description
Parameter: monthly_usage_limit Type: Integer Required: Yes Description:

The monthly usage limit for this SIM (required, in bytes).

Parameter: monthly_usage_limit_warning Type: Integer Required: No Description:

Usage warning threshold (optional, in bytes).

Parameter: cap_limit Type: String Required: No Description:

Limit type (optional).

Send a Sample Request

PUT

Header

Parameter

Request body

Code Examples

curl --location --request PUT 'https://api.aql.com//v3/mno/89444901000000000499/usage-limit' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{"monthly_usage_limit": 1000000000, "monthly_usage_limit_warning": 900000000, "cap_limit": "usage"}'
<?php
$data = [
"monthly_usage_limit" => 1000000000,
"monthly_usage_limit_warning" => 900000000,
"cap_limit" => "usage"
];
$ch = curl_init('https://api.aql.com//v3/mno/89444901000000000499/usage-limit');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/89444901000000000499/usage-limit"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {"monthly_usage_limit": 1000000000, "monthly_usage_limit_warning": 900000000, "cap_limit": "usage"}
response = requests.put(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/89444901000000000499/usage-limit");
var request = new RestRequest(Method.PUT);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"monthly_usage_limit\":1000000000,\"monthly_usage_limit_warning\":900000000,\"cap_limit\":\"usage\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
monthly_usage_limit => 1000000000,
monthly_usage_limit_warning => 900000000,
cap_limit => 'usage'
};
$client->PUT(
'https://api.aql.com//v3/mno/89444901000000000499/usage-limit',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "The SIM has been updated",
"data": {
"iccid": "89444901000000000499",
"imsi": "123456789012345",
"msisdn": "447119878160",
"service_4g": true,
"service_5g": false,
"pin": "04090719",
"pin2": "10169248",
"puk": "37802414",
"puk2": "41847687",
"monthly_usage_limit": 1000000000,
"monthly_usage_limit_warning": 900000000,
"cap_limit_type": "usage"
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"monthly_usage_limit": [
"The monthly usage limit field is required and must be an integer."
]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Get SIM/ICCID Details

get
GET /v3/mno/:iccid

Retrieve SIM/ICCID details, services, and state for the authenticated account.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

ICCID (SIM) to query (URL path parameter).

Send a Sample Request

GET

Header

Parameter

Code Examples

curl -X GET 'https://api.aql.com//v3/mno/891234567890123456' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET('https://api.aql.com//v3/mno/891234567890123456', $headers);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID Status",
"data": {
"iccid": "891234567890123456",
"msisdn": "447700900123",
"service_4g": true,
"service_5g": false,
"pin": "1234",
"pin2": "5678",
"puk": "12345678",
"puk2": "87654321",
"current_state": "active"
}
}
HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID Status",
"data": {
"iccid": "891234567890123456",
"imsi": "234470888096327",
"msisdn": "447700900123",
"service_4g": true,
"service_5g": false,
"pin": "1234",
"pin2": "5678",
"puk": "12345678",
"puk2": "87654321",
"current_state": "active",
"requested_state": "terminated",
"subscriber_id": "gqBEmlp37j"
}
}

Error Response Example

ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

MNO Jobs

Check MNO SIM Job Status

get
GET /v3/mno/job/:jobId/status

Retrieve the status of a SIM task previously submitted for an account.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: jobId Type: String Required: Yes Description:

The job's id (URL path parameter).

Response Fields (data)

Field Type Description
Field: status Type: String Description:

Job status.

Send a Sample Request

GET

Header

Parameter

Code Examples

curl -X GET 'https://api.aql.com//v3/mno/job/a4b1c381/status' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/job/aa4b1c381/status');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job/a4b1c381/status"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/job/a4b1c381/status");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/job/a4b1c381/status', $headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "Job Status",
"data": {
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9",
"status": "processing"
}
}

Error Response Example

Invalid Job

HTTP/1.1 404 Not Found
{
"success": false,
"message": "Invalid job"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Get Account Usage Summary Report

get
GET /v3/mno/job/:id/usage

Retrieve a paginated list of Subscribers and their usage within the requested usage report.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: id Type: String Required: Yes Description:

The Job ID (URL path parameter).

Parameter: page Type: Number Required: No Description:

Page number for pagination.

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500).

Send a Sample Request

GET

Header

Parameter

Code Examples

curl --location --globoff --request GET 'https://api.aql.com//v3/mno/job/b2a2cd10-c85a/usage?page=1' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno/job/b2a2cd10-c85a/usage?page=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job/b2a2cd10-c85a/usage?page=1"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/job/b2a2cd10-c85a/usage?page=1");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/job/b2a2cd10-c85a/usage?page=1',
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"data": [
{
"iccid": "89441100110011001100",
"subscriber_id": "qvAd0Qy4Gl",
"subscriber_company_name": "Company Name",
"start_date": "2025-10-01T00:00:00.000000Z",
"end_date": "2025-10-07T00:00:00.000000Z",
"usage": 580807167,
"unit": "bytes"
}
],
"message": "Account SIMs",
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 100,
"total": 1,
"count": 1
}
}

Get Account MNO Job Details

get
GET /v3/mno/job

Retrieve a paginated list of MNO SIM jobs for the current account, with optional status and action filters.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: status Type: String Required: No Description:

Filter by job status.

Parameter: action Type: String Required: No Description:

Filter by job action.

Parameter: page Type: Number Required: No Description:

Page number for pagination.

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500).

Parameter: name Type: String Required: No Description:

Filter jobs by the custom name assigned during creation.

Response Fields (data)

Field Type Description
Field: id Type: String Description:

The job UUID.

Field: action Type: String Description:

The job action.

Field: status Type: String Description:

The job status.

Field: created_at Type: String Description:

Creation timestamp (ISO8601).

Send a Sample Request

GET

Header

Parameter

Code Examples

curl -X GET 'https://api.aql.com//v3/mno/job?status=processing&per_page=5&page=1' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/job?status=completed&per_page=20&page=2');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job?status=failed&action=suspend_sim"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/job?per_page=10");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/job?status=queued', $headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "Account jobs",
"data": [
{
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9",
"action": "activate_sim",
"status": "queued",
"created_at": "2023-07-14T13:45:16.123Z"
},
...
],
"meta": {
"current_page": 1,
"last_page": 3,
"per_page": 5,
"total": 13,
"count": 5
}
}

Error Response Example

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Request CDR Export File

post
POST /v3/mno/job/cdr

Request the export of CDRs (Call/Data Records) for your account within a given date/time range. Max 31 days.
Optionally filter by subscriber. Returns a job ID to track progress and stream the file when ready.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: start_time Type: String Required: Yes Description:

ISO8601 datetime. Start of range (e.g. "2024-05-13T00:00:00Z").

Parameter: end_time Type: String Required: Yes Description:

ISO8601 datetime. End of range (must be after start_time).

Parameter: subscriber_id Type: String Required: No Description:

Optional. Filter by specific subscriber ID.

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/job/cdr' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-H "Content-Type: application/json" \
-d '{"start_time":"2024-06-01T00:00:00Z","end_time":"2024-06-07T23:59:59Z"}'
<?php
$url = 'https://api.aql.com//v3/mno/job/cdr';
$payload = [
'start_time' => '2024-06-01T00:00:00Z',
'end_time' => '2024-06-07T23:59:59Z'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job/cdr"
data = {
"start_time": "2024-06-01T00:00:00Z",
"end_time": "2024-06-07T23:59:59Z"
}
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.post(url, json=data, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/job/cdr");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
request.AddParameter("application/json", "{\"start_time\":\"2024-06-01T00:00:00Z\",\"end_time\":\"2024-06-07T23:59:59Z\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $body = encode_json({
start_time => '2024-06-01T00:00:00Z',
end_time   => '2024-06-07T23:59:59Z'
});
$client->POST('https://api.aql.com//v3/mno/job/cdr', $body, $headers);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"message": "CDR requested",
"data": {
"id": "b2a2cd10-c85a-42fe-9b2f-b91a9d106bf9"
}
}

Error Response Example

No Records Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "No CDR records found for this period."
}

Invalid Subscriber Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid Subscriber"
}

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"message": "The given data was invalid.",
"errors": {
"start_time": ["The start_time field is required."],
"end_time": ["The end_time must be a date after start_time."]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Request an Account Usage Summary Report

post
POST /v3/mno/job/usage

Request the usage summary for your account within a given date/time range. Max 31 days. The data is provided by account subscriber. The report will be available for 30 days

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: start_time Type: String Required: Yes Description:

ISO8601 datetime. Start of range (e.g. "2024-05-13T00:00:00Z").

Parameter: end_time Type: String Required: Yes Description:

ISO8601 datetime. End of range (must be after start_time).

Parameter: name Type: String Required: No Description:

Optional name for the report job.

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/job/usage' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-H "Content-Type: application/json" \
-d '{"start_time":"2024-06-01T00:00:00Z","end_time":"2024-06-07T23:59:59Z","name":"June Usage Report"}'
<?php
$url = 'https://api.aql.com//v3/mno/job/usage';
$payload = [
'start_time' => '2024-06-01T00:00:00Z',
'end_time' => '2024-06-07T23:59:59Z',
'name' => 'June Usage Report'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job/usage"
data = {
"start_time": "2024-06-01T00:00:00Z",
"end_time": "2024-06-07T23:59:59Z",
"name": "June Usage Report"
}
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.post(url, json=data, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/job/usage");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
request.AddParameter("application/json", "{\"start_time\":\"2024-06-01T00:00:00Z\",\"end_time\":\"2024-06-07T23:59:59Z\",\"name\":\"June Usage Report\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $body = encode_json({
start_time => '2024-06-01T00:00:00Z',
end_time   => '2024-06-07T23:59:59Z',
name       => 'June Usage Report'
});
$client->POST('https://api.aql.com//v3/mno/job/usage', $body, $headers);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"message": "Usage requested",
"data": {
"id": "b2a2cd10-c85a-42fe-9b2f-b91a9d106bf9"
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"message": "The given data was invalid.",
"errors": {
"start_time": ["The start_time field is required."],
"end_time": ["The end_time must be a date after start_time."]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Download/Stream CDR Export File

get
GET /v3/mno/job/:id/cdr/stream

Streams (downloads) the Call/Data Record (CDR) export file for the given completed MNO Job.
If the export is not ready, or the job is not found/completed, an error is returned.
The response is the file as the HTTP body with Content-Type and Content-Disposition headers, not JSON.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: id Type: String Required: Yes Description:

The Job ID (as returned from POST /v3/mno/job/cdr) (URL path parameter).

Send a Sample Request

GET

Header

Parameter

Code Examples

curl -X GET 'https://api.aql.com//v3/mno/job/ef4bef87-8314-449b-b4c6-00bfae77f0c9/cdr/stream' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/job/ef4bef87-8314-449b-b4c6-00bfae77f0c9/cdr/stream');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
]);
$result = curl_exec($ch); // This will be the file contents
file_put_contents('exported_cdr.csv', $result); // Save file
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/job/ef4bef87-8314-449b-b4c6-00bfae77f0c9/cdr/stream"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}"}
response = requests.get(url, headers=headers, stream=True)
with open("cdr_export.csv", "wb") as f:
for chunk in response.iter_content(8192):
f.write(chunk)
var client = new RestClient("https://api.aql.com//v3/mno/job/ef4bef87-8314-449b-b4c6-00bfae77f0c9/cdr/stream");
var request = new RestRequest(Method.GET);
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
byte[] data = client.DownloadData(request);
File.WriteAllBytes("cdr_export.csv", data);
use REST::Client;
my $client = REST::Client->new();
my $headers = [ 'X-Auth-Token' => '{{YOUR_API_TOKEN}}' ];
$client->GET('https://api.aql.com//v3/mno/job/ef4bef87-8314-449b-b4c6-00bfae77f0c9/cdr/stream', $headers);
open my $fh, ">", "cdr_export.csv";
print $fh $client->responseContent();
close $fh;

Success Response Example

HTTP/1.1 200 OK
Content-Type: text/csv
Content-Disposition: inline; filename="cdr-export-ef4bef87.csv"
<file content>

Error Response Example

Job Not Completed

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Job not completed"
}

File Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "File not found."
}

General Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

MNO SIM Management

Activate ICCID (SIM)

post
POST /v3/mno/:iccid/activate

Initiate the activation of a SIM/ICCID for the authenticated account.
Activation is a two-step process:

  1. A job is submitted for activation and a job id is returned.
  2. You may check the status of the submitted job by calling /v3/mno/job/:jobId/status using this id.
  3. to ensure it has been activated successfully.
The request accepts a subscriber field, which can be either an existing subscriber ID (string) or an object with full details for registration.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

ICCID (SIM) to activate (URL path parameter).

Parameter: subscriber Type: String Required: No Description:

Existing Subscriber ID (If using existing subscriber).

Parameter: service_4g Type: Boolean Required: No Description:

Enable 4G service.

Parameter: service_5g Type: Boolean Required: No Description:

Enable 5G service.

New Subscriber Object

Parameter Type Required Description
Parameter: subscriber[forename] Type: String Required: No Description:

Forename.

Parameter: subscriber[surname] Type: String Required: No Description:

Surname.

Parameter: subscriber[address] Type: String Required: No Description:

Address line 1.

Parameter: subscriber[post_code] Type: String Required: No Description:

Post code.

Parameter: subscriber[contact_no] Type: String Required: No Description:

Contact number.

Parameter: subscriber[title] Type: String Required: No Description:

Title.

Parameter: subscriber[address2] Type: String Required: No Description:

Address line 2.

Parameter: subscriber[address3] Type: String Required: No Description:

Address line 3.

Parameter: subscriber[city] Type: String Required: No Description:

City.

Parameter: subscriber[company_name] Type: String Required: No Description:

Company Name.

Parameter: subscriber[contact_email] Type: String Required: No Description:

Email Address.

Response Fields (data)

Field Type Description
Field: id Type: String Description:

Job ID . Use this to poll /v3/mno/job/:jobId/status.

Send a Sample Request

POST

Header

Parameter

New Subscriber Object

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/activate' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{"subscriber": "nR9BkElzQm", "service_4g": true}'
curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/activate' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{
"subscriber": {
"forename": "Alice",
"surname": "Johnson",
"address": "123 Baker Street",
"post_code": "ABC 123",
"contact_no": "01234567890",
"title": "Ms",
"address2": "Flat 2",
"address3": "Third floor",
"city": "London",
"company_name": "Acme PLC",
"contact_email": "[email protected]"
},
"service_4g": true,
"service_5g": true
}'
<?php
$data = [
"subscriber" => [
"forename" => "Alice",
"surname" => "Johnson",
"address" => "123 Baker Street",
"post_code" => "ABC 123",
"contact_no" => "01234567890",
"title" => "Ms",
"address2" => "Flat 2",
"address3" => "Third floor",
"city" => "London",
"company_name" => "Acme PLC",
"contact_email" => "[email protected]"
],
"service_4g" => true,
"service_5g" => true
];
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/activate');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/activate"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"subscriber": {
"forename": "Alice",
"surname": "Johnson",
"address": "123 Baker Street",
"post_code": "ABC 123",
"contact_no": "01234567890",
"title": "Ms",
"address2": "Flat 2",
"address3": "Third floor",
"city": "London",
"company_name": "Acme PLC",
"contact_email": "[email protected]"
},
"service_4g": True,
"service_5g": True
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/activate");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"subscriber\":{\"forename\":\"Alice\",\"surname\":\"Johnson\",\"address\":\"123 Baker Street\",\"post_code\":\"ABC 123\",\"contact_no\":\"01234567890\",\"title\":\"Ms\",\"address2\":\"Flat 2\",\"address3\":\"Third floor\",\"city\":\"London\",\"company_name\":\"Acme PLC\",\"contact_email\":\"[email protected]\"},\"service_4g\":true,\"service_5g\":true}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
subscriber => {
forename    => "Alice",
surname     => "Johnson",
address     => "123 Baker Street",
post_code   => "ABC 123",
contact_no  => "01234567890",
title       => "Ms",
address2    => "Flat 2",
address3    => "Third floor",
city        => "London",
company_name=> "Acme PLC",
contact_email=> "[email protected]"
},
service_4g => JSON::true,
service_5g => JSON::true
};
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/activate',
encode_json($data),
$headers
);
print $client->responseContent();
# Use the returned job id for polling job status/result
curl -X POST 'https://api.aql.com//v3/mno/job/aB1kD2zWpG/status' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID has been submitted for activation",
"data": {
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9"
}
}

Error Response Example

Not Eligible For Activation

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "ICCID not eligible for activation"
}

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"subscriber": ["Subscriber is required."],
"subscriber.forename": ["The forename field is required when creating a subscriber."]
}
}

SIM/ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Add Service to ICCID (SIM)

post
POST /v3/mno/:iccid/service/add

Add a new service (4G or 5G) to a SIM/ICCID.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

ICCID (SIM) to add the service to (URL path parameter).

Parameter: service Type: String Required: Yes Description:

The service to add.

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/service/add' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{ "service": "service_5g" }'
<?php
$data = [ "service" => "service_5g" ];
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/service/add');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/service/add"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {"service": "service_5g"}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/service/add");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"service\":\"service_5g\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = { service => "service_5g" };
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/service/add',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID has been submitted to have the service added",
"data": {
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9"
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"service": ["The selected service is invalid."]
}
}

ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Bulk Reassign SIMs

post
POST /v3/mno/sim/bulk-reassign

Bulk reassign multiple SIMs to a new target subscriber. You must provide a target_subscriber AND either a list of specific iccids OR a source_subscriber to migrate all SIMs from that source.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Request body

Parameter Type Required Description
Parameter: target_subscriber Type: String Required: Yes Description:

The ID of the new subscriber receiving the SIMs.

Parameter: iccids Type: Array Required: No Description:

Array of ICCID strings to reassign. Required if source_subscriber is not provided.

Parameter: source_subscriber Type: String Required: No Description:

ID of the source subscriber. Migrates all SIMs from this subscriber. Required if iccids is not provided.

Send a Sample Request

POST

Header

Request body

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/sim/bulk-reassign' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{
"target_subscriber": "aB3dE5gH",
"iccids": ["8944123456789012345", "8944123456789012346"]
}'
<?php
$data = [
"target_subscriber" => "aB3dE5gH",
"source_subscriber" => "xY9zW1vU"
];
$ch = curl_init('https://api.aql.com//v3/mno/sim/bulk-reassign');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/sim/bulk-reassign"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"target_subscriber": "aB3dE5gH",
"iccids": ["8944123456789012345", "8944123456789012346"]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/sim/bulk-reassign");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"target_subscriber\":\"aB3dE5gH\",\"source_subscriber\":\"xY9zW1vU\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
target_subscriber => "aB3dE5gH",
iccids => ["8944123456789012345", "8944123456789012346"]
};
$client->POST(
'https://api.aql.com//v3/mno/sim/bulk-reassign',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "Bulk reassignment processed.",
"data": {
"target_subscriber": "aB3dE5gH",
"successful": [
"8944123456789012345",
"8944123456789012346"
],
"failed": []
}
}
HTTP/1.1 200 OK
{
"success": true,
"message": "Successfully reassigned 15 SIM(s) to the new subscriber.",
"data": {
"target_subscriber": "aB3dE5gH",
"updated_count": 15
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"iccids": ["You must provide either a list of ICCIDs or a source_subscriber."]
}
}

Not Found Error

HTTP/1.1 404 Not Found
{
"success": false,
"message": "Target subscriber not found or does not belong to this account."
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Remove Service from ICCID (SIM)

post
POST /v3/mno/:iccid/service/remove

Remove a service (4G or 5G) from a SIM/ICCID.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

ICCID (SIM) to remove the service from (URL path parameter).

Parameter: service Type: String Required: Yes Description:

The service to remove.

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/service/remove' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{ "service": "service_4g" }'
<?php
$data = [ "service" => "service_4g" ];
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/service/remove');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/service/remove"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {"service": "service_4g"}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/service/remove");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"service\":\"service_4g\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = { service => "service_4g" };
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/service/remove',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID has been submitted to have the service removed",
"data": {
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9"
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"service": ["The selected service is invalid."]
}
}

ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Suspend ICCID (SIM)

post
POST /v3/mno/:iccid/suspend

Initiate the suspension of a SIM/ICCID for the authenticated account.
Suspension is a two-step process:

  1. A job is submitted for suspension and a job id is returned.
  2. You may check the status of the submitted job by calling /v3/mno/job/:jobId/status using this id.
  3. to ensure it has been suspended successfully.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

The ICCID (SIM) to be suspended (URL path parameter).

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/suspend' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/suspend');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/suspend"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.post(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/suspend");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/suspend',
'', # No body
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "Iccid has been submitted for suspension",
"data": {
"id": "aB1kD2zWpG"
}
}

Error Response Example

Not Eligible For Suspension

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Iccid not eligible for suspension"
}

SIM/ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Terminate ICCID (SIM)

post
POST /v3/mno/:iccid/terminate

Initiate the termination of a SIM/ICCID for the authenticated account.
Termination is a two-step process:

  1. A job is submitted for termination and a job id is returned.
  2. You may check the status of the submitted job by calling /v3/mno/job/:jobId/status using this id.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

ICCID (SIM) to be terminated (URL path parameter).

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/terminate' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/terminate');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/terminate"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.post(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/terminate");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/terminate',
'', # No body required
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "ICCID has been submitted to be terminated",
"data": {
"id": "ef4bef87-8314-449b-b4c6-00bfae77f0c9"
}
}

Error Response Example

SIM/ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Un-suspend ICCID (SIM)

post
POST /v3/mno/:iccid/unsuspend

Initiate the un-suspension of a SIM/ICCID for the authenticated account.
Un-suspension is a two-step process:

  1. A job is submitted for un-suspension and a job id is returned.
  2. Check the status of the submitted job by calling /v3/mno/job/:jobId/status with this id to ensure it has been un-suspended successfully.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: iccid Type: String Required: Yes Description:

The ICCID (SIM) to be un-suspended (URL path parameter).

Send a Sample Request

POST

Header

Parameter

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/891234567890123456/unsuspend' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/891234567890123456/unsuspend');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/891234567890123456/unsuspend"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
response = requests.post(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/891234567890123456/unsuspend");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->POST(
'https://api.aql.com//v3/mno/891234567890123456/unsuspend',
'', # No body
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "Iccid has been submitted for unsuspension",
"data": {
"id": "aB1kD2zWpG"
}
}

Error Response Example

Not Eligible For Unsuspension

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Iccid not eligible for unsuspension"
}

SIM/ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

MNO SIM Pool

Add SIM Pool Recipient

post
POST /v3/mno/pool/:poolId/recipient

Add a new recipient to the specified SIM pool for your account. Recipients must be unique for each Pool (no duplicate emails).

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The pool id (URL path parameter).

Request body

Parameter Type Required Description
Parameter: email Type: String Required: Yes Description:

Recipient's email address (validated, required).

Parameter: number Type: String Required: Yes Description:

Recipient's phone number (digits only, required).

Send a Sample Request

POST

Header

Parameter

Request body

Code Examples

curl --location --request POST 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{ "email": "[email protected]", "number": "447112223344" }'
<?php
$data = [
"email" => "[email protected]",
"number" => "447112223344"
];
$ch = curl_init('https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"email": "[email protected]",
"number": "447112223344"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"email\":\"[email protected]\",\"number\":\"447112223344\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
email => "[email protected]",
number => "447112223344"
};
$client->POST(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 201 Created
{
"success": true,
"message": "The SIM Pool recipient has been added",
"data": {
"id": "aB1kD2zWpG",
"name": "Research Pool",
"monthly_usage_limit": 2000000000,
"cap_limit_type": "usage",
"recipients": [
{
"id": "8m4nQwzK1D",
"email": "[email protected]",
"number": "447112223344"
}
]
}
}

Error Response Example

Duplicate Recipient

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "SIM Pool Recipient already exists"
}

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"email": [ "The email field is required." ],
"number": [ "The number field must be digits." ]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Attach SIMs (ICCIDs) to Pool

post
POST /v3/mno/pool/:poolId/iccid

Attach one or more available ICCIDs to a specific SIM pool on your account.
Only ICCIDs owned by your account may be attached. Any ICCID not found or not owned by you will result in an error.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The pool id (HashID, URL path parameter).

Request body

Parameter Type Required Description
Parameter: iccids Type: String[] Required: Yes Description:

Array of ICCIDs to attach, e.g. [ "8901160000000000001", "8901160000000000002" ].

Send a Sample Request

POST

Header

Parameter

Request body

Code Examples

curl --location --request POST 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{ "iccids": ["8901160000000000001","8901160000000000002"] }'
<?php
$data = [
"iccids" => [
"8901160000000000001",
"8901160000000000002"
]
];
$ch = curl_init('https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"iccids": ["8901160000000000001", "8901160000000000002"]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"iccids\":[\"8901160000000000001\",\"8901160000000000002\"]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
iccids => ["8901160000000000001", "8901160000000000002"]
};
$client->POST(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 201 Created
{
"success": true,
"message": "The SIM Pool has been updated"
}

Error Response Example

Invalid ICCID

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid Iccid 8901160000000000002"
}

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"iccids": [ "The iccids field is required." ]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Create SIM Pool

post
POST /v3/mno/pool

Create a new SIM pool for the authenticated account.
The response contains the pool's id, name, and (optionally) usage limits, cap type, and a list of recipient objects.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Request body

Parameter Type Required Description
Parameter: name Type: String Required: Yes Description:

Name of the pool (required).

Parameter: monthly_usage_limit Type: Number Required: No Description:

Monthly usage limit (optional, >0).

Parameter: monthly_usage_limit_warning Type: Number Required: No Description:

Usage warning threshold (optional, >0).

Parameter: cap_limit Type: String Required: No Description:

Limit type (optional).

Parameter: recipients Type: Object[] Required: No Description:

Optional: Array of recipient objects.

Parameter: recipients.email Type: String Required: No Description:

Recipient Email.

Parameter: recipients.number Type: String Required: No Description:

Recipient Phone Number.

Send a Sample Request

POST

Header

Request body

Code Examples

curl --location --request POST 'https://api.aql.com//v3/mno/pool' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{
"name": "Research Pool",
"monthly_usage_limit": 1000000000,
"monthly_usage_limit_warning": 800000000,
"cap_limit": "usage",
"recipients": [
{ "email": "[email protected]", "number": "447112223344" }
]
}'
<?php
$data = [
"name" => "Research Pool",
"monthly_usage_limit" => 1000000000,
"monthly_usage_limit_warning" => 800000000,
"cap_limit" => "usage",
"recipients" => [
["email" => "[email protected]", "number" => "447112223344"],
]
];
$ch = curl_init('https://api.aql.com//v3/mno/pool');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"name": "Research Pool",
"monthly_usage_limit": 1000000000,
"monthly_usage_limit_warning": 800000000,
"cap_limit": "usage",
"recipients": [
{"email": "[email protected]", "number": "447112223344"}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"name\":\"Research Pool\",\"monthly_usage_limit\":1000000000,\"monthly_usage_limit_warning\":800000000,\"cap_limit\":\"usage\",\"recipients\":[{\"email\":\"[email protected]\",\"number\":\"447112223344\"}]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
name => "Research Pool",
monthly_usage_limit => 1000000000,
monthly_usage_limit_warning => 800000000,
cap_limit => "usage",
recipients => [
{ email => "[email protected]", number => "447112223344" }
]
};
$client->POST(
'https://api.aql.com//v3/mno/pool',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 201 Created
{
"success": true,
"message": "The SIM pool has been created",
"data": {
"id": "8m4nQwzK1E",
"name": "Research Pool",
"monthly_usage_limit": 1000000000,
"monthly_usage_limit_warning": 800000000,
"cap_limit_type": "usage",
"recipients": [
{
"id": "8m4nQwzK1D",
"email": "[email protected]",
"number": "447112223344"
}
]
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"name": [
"The name field is required."
]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Detach SIMs (ICCIDs) from Pool

delete
DELETE /v3/mno/pool/:poolId/iccid/detach

Detach one or more ICCIDs from a specific SIM pool on your account.
Only ICCIDs owned by your account and attached to the pool can be detached. Any ICCID not found, not attached, or not owned by you will result in an error.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The pool id (HashID, URL path parameter).

Request body

Parameter Type Required Description
Parameter: iccids Type: String[] Required: Yes Description:

Array of ICCIDs to detach, e.g. [ "8901160000000000001", "8901160000000000002" ].

Send a Sample Request

DELETE

Header

Parameter

Request body

Code Examples

curl --location --request DELETE 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid/detach' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{ "iccids": ["8901160000000000001","8901160000000000002"] }'
<?php
$data = [
"iccids" => [
"8901160000000000001",
"8901160000000000002"
]
];
$ch = curl_init('https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid/detach');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid/detach"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"iccids": ["8901160000000000001", "8901160000000000002"]
}
response = requests.delete(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid/detach");
var request = new RestRequest(Method.DELETE);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"iccids\":[\"8901160000000000001\",\"8901160000000000002\"]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
iccids => ["8901160000000000001", "8901160000000000002"]
};
$client->DELETE(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid/detach',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "The SIM Pool has been updated",
"data": {
"id": "aB1kD2zWpG",
"name": "Test Pool",
"monthly_usage_limit": 2000000000,
"cap_limit_type": "usage"
}
}

Error Response Example

Invalid ICCID

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid Iccid 8901160000000000002"
}

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"iccids": [ "The iccids field is required." ]
}
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Get SIMs in a SIM Pool

get
GET /v3/mno/pool/:poolId/iccid

Retrieve a paginated list of SIMs assigned to a SIM pool for the authenticated account.
Only SIM pools that belong to your account are accessible.
Filtering, sorting, and page navigation are supported—results are always scoped to the specified pool.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The pool id (HashID, URL path parameter).

Parameter: page Type: Number Required: No Description:

Page number for pagination.

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500).

Parameter: order_by Type: String Required: No Description:

Sort column.

Parameter: order_direction Type: String Required: No Description:

Sort direction.

Parameter: filters[iccid] Type: String Required: No Description:

[operator]] Operator for ICCID.

Parameter: filters[imsi] Type: String Required: No Description:

[operator]] Operator for IMSI.

Parameter: filters[msisdn] Type: String Required: No Description:

[operator]] Operator for MSISDN.

Send a Sample Request

GET

Header

Parameter

Code Examples

curl --location --globoff --request GET 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/iccid?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499',
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"data": [
{
"iccid": "89444901000000000499",
"msisdn": "447119878160",
"service_4g": true,
"service_5g": false,
"pin": "04090719",
"pin2": "10169248",
"puk": "37802414",
"puk2": "41847687",
"current_state": "pending",
"requested_state": "pending"
}
],
"message": "Pool SIMs",
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 100,
"total": 1,
"count": 1
}
}

Error Response Example

Invalid SIM Pool

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid SIM Pool"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Remove SIM Pool Recipient

delete
DELETE /v3/mno/pool/:poolId/recipient/:recipientId

Remove a recipient from the specified SIM pool for your account. Only recipients belonging to pools owned by your account may be removed.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The id of the SIM pool ( URL path parameter).

Parameter: recipientId Type: String Required: Yes Description:

The id of the SIM pool recipient to remove ( URL path parameter).

Send a Sample Request

DELETE

Header

Parameter

Code Examples

curl --location --request DELETE 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient/8m4nQwzK1D' \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$ch = curl_init('https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient/8m4nQwzK1D');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient/8m4nQwzK1D"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}"}
response = requests.delete(url, headers=headers)
print(response.status_code)  # Should be 204
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient/8m4nQwzK1D");
var request = new RestRequest(Method.DELETE);
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->DELETE(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG/recipient/8m4nQwzK1D',
'',
$headers
);
print $client->responseCode();  # Should be 204

Success Response Example

HTTP/1.1 204 No Content

Error Response Example

Invalid Recipient

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid SIM Pool Recipient"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

Update SIM Pool

put
PUT /v3/mno/pool/:poolId

Update an existing SIM pool for the authenticated account. Only pools belonging to your account may be updated. You can update the pool name, usage limits, cap type, and optionally the recipients.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: poolId Type: String Required: Yes Description:

The pool id to update (URL path parameter).

Request body

Parameter Type Required Description
Parameter: name Type: String Required: No Description:

Name of the pool.

Parameter: monthly_usage_limit Type: Number Required: No Description:

Monthly usage limit (optional, >0).

Parameter: monthly_usage_limit_warning Type: Number Required: No Description:

Usage warning threshold (optional, >0).

Parameter: cap_limit Type: String Required: No Description:

Limit type (optional).

Parameter: recipients Type: Object[] Required: No Description:

Optional: Array of recipient objects.

Send a Sample Request

PUT

Header

Parameter

Request body

Code Examples

curl --location --request PUT 'https://api.aql.com//v3/mno/pool/aB1kD2zWpG' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{
"name": "Research Pool (Updated)",
"monthly_usage_limit": 2000000000,
"recipients": [
{"email": "[email protected]", "number": "447112223344"}
]
}'
<?php
$data = [
"name" => "Research Pool (Updated)",
"monthly_usage_limit" => 2000000000,
"recipients" => [["email" => "[email protected]", "number" => "447112223344"]]
];
$ch = curl_init('https://api.aql.com//v3/mno/pool/aB1kD2zWpG');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/pool/aB1kD2zWpG"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"name": "Research Pool (Updated)",
"monthly_usage_limit": 2000000000,
"recipients": [{"email": "[email protected]", "number": "447112223344"}]
}
response = requests.put(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/pool/aB1kD2zWpG");
var request = new RestRequest(Method.PUT);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"name\":\"Research Pool (Updated)\",\"monthly_usage_limit\":2000000000,\"recipients\":[{\"email\":\"[email protected]\",\"number\":\"447112223344\"}]}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
name => "Research Pool (Updated)",
monthly_usage_limit => 2000000000,
recipients => [
{ email => "[email protected]", number => "447112223344" }
]
};
$client->PUT(
'https://api.aql.com//v3/mno/pool/aB1kD2zWpG',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"message": "The SIM pool has been updated",
"data": {
"id": "aB1kD2zWpG",
"name": "Research Pool (Updated)",
"monthly_usage_limit": 2000000000,
"cap_limit_type": "usage",
"recipients": [
{
"id": "8m4nQwzK1D",
"email": "[email protected]",
"number": "447112223344"
}
]
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"name": [
"The name field is required."
]
}
}

Invalid Pool

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Invalid Pool"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}

MNO Subscriber Management

Get Account Subscriber SIM/ICCID Details

get
GET /v3/mno/subscriber/:subscriber

Retrieve a paginated list of SIMs assigned to a subscriber for the authenticated account.
Only subscribers that belong to your account are accessible. Filtering, sorting, and page navigation are supported—results are always scoped to the specified subscriber.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: subscriber Type: String Required: Yes Description:

Subscriber ID (URL Path Parameter).

Parameter: page Type: Number Required: No Description:

Page number for pagination.

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500).

Parameter: order_by Type: String Required: No Description:

Sort column.

Parameter: order_direction Type: String Required: No Description:

Sort direction.

Parameter: filters[iccid] Type: String Required: No Description:

[operator]] Operator for ICCID.

Parameter: filters[imsi] Type: String Required: No Description:

[operator]] Operator for IMSI.

Parameter: filters[msisdn] Type: String Required: No Description:

[operator]] Operator for MSISDN.

Send a Sample Request

GET

Header

Parameter

Code Examples

curl --location --globoff --request GET 'https://api.aql.com//v3/mno/subscriber/aB1kD2zWpG?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno/subscriber/aB1kD2zWpG?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/subscriber/aB1kD2zWpG?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/subscriber/aB1kD2zWpG?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/subscriber/aB1kD2zWpG?order_by=iccid&filters[iccid][operator]=%3D&filters[iccid][value]=89444901000000000499',
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"data": [
{
"iccid": "89444901000000000499",
"msisdn": "447119878160",
"service_4g": true,
"service_5g": false,
"pin": "04090719",
"pin2": "10169248",
"puk": "37802414",
"puk2": "41847687",
"current_state": "pending",
"requested_state": "pending"
}
],
"message": "Account SIMs",
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 100,
"total": 1,
"count": 1
}
}

Get Account Subscribers

get
GET /v3/mno/subscriber

Retrieve a paginated list of subscribers for the authenticated account, with flexible filtering and sorting.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Parameter

Parameter Type Required Description
Parameter: page Type: Number Required: No Description:

Page number for pagination.

Parameter: per_page Type: Number Required: No Description:

Number of items per page (Max 500).

Parameter: order_by Type: String Required: No Description:

Sort column.

Parameter: order_direction Type: String Required: No Description:

Sort direction.

Parameter: filters[forename] Type: String Required: No Description:

[operator]] Operator for Forename.

Parameter: filters[surname] Type: String Required: No Description:

[operator]] Operator for Surname.

Send a Sample Request

GET

Header

Parameter

Code Examples

curl --location --globoff --request GET 'https://api.aql.com//v3/mno/subscriber?page=1&order_by=forename&filters[forename][operator]=%3D&filters[forename][value]=Rashawn' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}"
<?php
$url = "https://api.aql.com//v3/mno/subscriber?page=1&order_by=forename&filters[forename][operator]=%3D&filters[forename][value]=Rashawn";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/subscriber?page=1&order_by=forename&filters[forename][operator]=%3D&filters[forename][value]=Rashawn"
headers = {
"X-Auth-Token": "{{YOUR_API_TOKEN}}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/subscriber?page=1&order_by=forename&filters[forename][operator]=%3D&filters[forename][value]=Rashawn");
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
IRestResponse response = client.Execute(request);
use REST::Client;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
$client->GET(
'https://api.aql.com//v3/mno/subscriber?page=1&order_by=forename&filters[forename][operator]=%3D&filters[forename][value]=Rashawn',
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 200 OK
{
"success": true,
"data": [
{
"id": "3a9yBqd6gx",
"forename": "Rashawn",
"surname": "Collier",
"title": "Mr.",
"address": "801 Harber Station Apt. 635",
"address2": "Apt. 692",
"address3": "Id dolores.",
"city": "Rosamondburgh",
"post_code": "63541-4821",
"company_name": "Mohr PLC",
"contact_no": "1-442-450-9630",
"contact_email": "[email protected]"
}
],
"message": "Account subscribers",
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 100,
"total": 1,
"count": 1
}
}

Register New Subscriber

post
POST /v3/mno/subscriber/register

Register a new subscriber on the MNO platform for an Account. Returns a subscriber object.

Header

Header Type Required Description
Header: X-Auth-Token Type: String Required: Yes Description:

Your API Authentication Token

Request body

Parameter Type Required Description
Parameter: forename Type: String Required: Yes Description:

Subscriber forename. (required)

Parameter: surname Type: String Required: Yes Description:

Subscriber surname. (required)

Parameter: address Type: String Required: Yes Description:

First line of address. (required)

Parameter: post_code Type: String Required: Yes Description:

Post code. (required)

Parameter: contact_no Type: String Required: Yes Description:

Contact number. (required)

Parameter: title Type: String Required: No Description:

Optional.

Parameter: address2 Type: String Required: No Description:

Address line 2.

Parameter: address3 Type: String Required: No Description:

Address line 3.

Parameter: city Type: String Required: No Description:

Optional.

Parameter: company_name Type: String Required: No Description:

Optional.

Parameter: contact_email Type: String Required: No Description:

Optional (must be a valid email if provided).

Send a Sample Request

POST

Header

Request body

Code Examples

curl -X POST 'https://api.aql.com//v3/mno/subscriber/register' \
-H "Content-Type: application/json" \
-H "X-Auth-Token: {{YOUR_API_TOKEN}}" \
-d '{
"forename": "Alice",
"surname": "Johnson",
"address": "123 Baker Street",
"post_code": "ABC 123",
"contact_no": "01234567890"
}'
<?php
$data = [
"forename" => "Alice",
"surname" => "Johnson",
"address" => "123 Baker Street",
"post_code" => "ABC 123",
"contact_no" => "01234567890"
];
$ch = curl_init('https://api.aql.com//v3/mno/subscriber/register');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Auth-Token: {{YOUR_API_TOKEN}}",
"Content-Type: application/json"
]);
$result = curl_exec($ch);
curl_close($ch);
?>
import requests
url = "https://api.aql.com//v3/mno/subscriber/register"
headers = {"X-Auth-Token": "{{YOUR_API_TOKEN}}", "Content-Type": "application/json"}
data = {
"forename": "Alice",
"surname": "Johnson",
"address": "123 Baker Street",
"post_code": "ABC 123",
"contact_no": "01234567890"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
var client = new RestClient("https://api.aql.com//v3/mno/subscriber/register");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("X-Auth-Token", "{{YOUR_API_TOKEN}}");
var body = "{\"forename\":\"Alice\",\"surname\":\"Johnson\",\"address\":\"123 Baker Street\",\"post_code\":\"ABC 123\",\"contact_no\":\"01234567890\"}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
use REST::Client;
use JSON;
my $client = REST::Client->new();
my $headers = [
'Content-Type' => 'application/json',
'X-Auth-Token' => '{{YOUR_API_TOKEN}}'
];
my $data = {
forename    => "Alice",
surname     => "Johnson",
address     => "123 Baker Street",
post_code   => "ABC 123",
contact_no  => "01234567890"
};
$client->POST(
'https://api.aql.com//v3/mno/subscriber/register',
encode_json($data),
$headers
);
print $client->responseContent();

Success Response Example

HTTP/1.1 201 Created
{
"success": true,
"message": "Subscriber registered.",
"data": {
"id": "nR9BkElzQm",
"forename": "Alice",
"surname": "Johnson",
"address": "123 Baker Street",
"post_code": "ABC 123",
"contact_no": "01234567890"
}
}

Error Response Example

Validation Error

HTTP/1.1 422 Unprocessable Entity
{
"success": false,
"message": "Validation error.",
"errors": {
"forename": ["The forename field is required."]
}
}

ICCID Not Found

HTTP/1.1 404 Not Found
{
"success": false,
"message": "ICCID or associated SIM not found"
}

Failed Dependency Error

HTTP/1.1 424 Failed Dependency
{
"success": false,
"message": "Unable to Process. Please try again later."
}
AutoJemma®

How can I help you today?

Can't find what you're looking for, ask a question below!

Additional Details

AutoJemma® can make mistakes, please verify any critical information.