SmartOLT API
Machine-readable version (OpenAPI, for tools and AI assistants): https://www.smartolt.com/openapi.json
๐ด The API changed. Please read this page again.
Updated October 2026. Check your integration against these changes:
- ๐ Real-time events. Get ONU status changes, ONU changes, signal changes and PON outages when they occur. Use an event stream (SSE) or a webhook. You do not need to poll the API. See Real-time events below.
- โก Asynchronous calls for high-volume actions. Send
async=1to enable or disable ONUs, change CATV or change speed profiles. The request does not wait for the OLT. See Asynchronous calls below. - ๐ฆ Bulk actions. One bulk call can contain up to 10,000 ONU IDs with
async=1. Do not send one call for each ONU. See Recommended API usage below. - ๐ ONU status history. Get how long an ONU was Online, LOS, Power fail or Offline, for up to 365 days. See Get ONU status history by ONU unique external ID.
- ๐ MAC addresses. Get the MAC addresses behind an ONU, or find the ONU of a MAC address. See Get ONU MAC addresses by ONU unique external ID and Search ONU by MAC address.
โ ๏ธ If your system polls Get all ONUs statuses or Get all ONUs signals, change it to use real-time events.
How to call the API
- Send each request to
https://<your-subdomain>.smartolt.com/api/.... - Send your API key in the
X-Tokenheader. - Every response has
status. Whenstatusisfalse, readerrorfor the message anderror_codefor the reason, when it is present.
Limits
API access is a privilege. Use it responsibly.
- The default budget is 1,000 API calls per hour. For very large installations, we can review and extend the budget if the operational requirements justify it.
- Asynchronous calls have their own budget, by default 5,000 calls per hour.
- The default limit is 15 calls per second. If you send more, all your calls are blocked for 10 seconds.
- Some endpoints have their own hourly limit. The description of the endpoint gives it.
- When you are over a limit, the API returns HTTP 429 with the error code
rate_limit_exceededand aRetry-Afterheader. Wait that number of seconds before you call again. - Each response has
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Resetheaders.X-RateLimit-Resetis the number of seconds until the budget resets.
If you use the API too much, SmartOLT can limit your calls or revoke your API access.
Do not use the API as a live database. Store the data that you use again in your system, and do not send the same request again and again.
Add a random delay to scheduled requests. For example, do not send a request exactly every 5 minutes at fixed times. Add a small random delay to each call, so that many systems do not call the API at the same time.
Real-time events (new)
Get ONU and PON events when they occur. You do not need to poll the API.
- Event stream (SSE): your system keeps one connection open, and the events arrive on it.
- Webhook: SmartOLT sends each batch of events as an HTTPS POST to your URL. Set it up in General > API key > Edit > Webhook.
Event types: onu.status_changed, onu.authorized, onu.updated, onu.deleted, onu.signal_changed, onu.signal_reading, pon.outage_started, pon.outage_ended,onu.unconfigured_detected. See the Real-time events folder.
Asynchronous calls (recommended for high-volume actions)
For high-volume actions, use asynchronous calls. Use them to enable ONUs, disable ONUs, change CATV or change speed profiles on many ONUs. Send async=1 with the request. SmartOLT checks the request, puts the work in a queue and returns immediately. The request does not wait for the OLT.
These endpoints accept async=1:
- Single ONU:
enable,disable,enable_catv,disable_catv,update_onu_speed_profiles - Multiple ONUs:
bulk_enable,bulk_disable,bulk_enable_catv,bulk_disable_catv,bulk_update_speed_profiles
bulk_apply_configuration_preset and bulk_remove_configuration_preset are always asynchronous. They also use the asynchronous budget.
Why use asynchronous calls:
- The request returns immediately. A normal request waits until the OLT finishes the command.
- A bulk call accepts up to 10,000 ONU IDs with
async=1, and only up to 50 ONU IDs withoutasync=1. - Asynchronous calls use their own hourly budget, not the normal budget.
- SmartOLT runs all actions for one ONU in the order it received them.
How to use asynchronous calls:
- Send the request with
async=1. - Read the
queuedfield in the response. It shows which ONUs SmartOLT queued. - Some minutes later, call
check_bulk_task_statusto see the result for each ONU. Do not call it in a tight loop. Each status check counts in the normal hourly budget.
Important: "queued": true means that SmartOLT accepted the action. It does not mean that the OLT did it. A request without async=1 can also return "queued": true when the ONU already has queued actions. Do not mark the action as done until check_bulk_task_status shows succeeded.
Recommended API usage
- ONU statuses
- Use the
onu.status_changedreal-time event. - If you cannot use events, call Get all ONUs statuses every 5-7 minutes, and store the response between calls.
- Use the
- ONU signal levels
- Use the
onu.signal_readingoronu.signal_changedreal-time events. These events give the 1310 value only. - Call Get all ONUs signals at start-up, after a
resyncevent, or when you need the 1490 value. If you cannot use events, call it every 15-30 minutes, and store the response between calls.
- Use the
- High-volume actions (enable, disable, CATV, speed profiles on many ONUs)
- Use one bulk call with
async=1for up to 10,000 ONU IDs. Withoutasync=1, a bulk call can only contain up to 50 ONU IDs. - Do not send one call for each ONU.
- Use one bulk call with
Important: Do not poll individual ONUs again and again when a bulk endpoint or a real-time event gives the same data. Your integration must store data, use reasonable polling intervals and use bulk calls. If your integration uses the API too much, SmartOLT can limit its calls to protect the platform for all users.
Real-time events
Get ONU and PON events in real time. You do not need to poll the API.
You can get the events in two ways:
- Event stream (SSE): your system keeps one HTTP connection open, and the events arrive on it. See Get event stream URL.
- Webhook: SmartOLT sends each batch of events as an HTTPS POST to your URL. See Webhook delivery.
Both ways send the same event body:
{"type": "onu.status_changed", "timestamp": "2026-10-08T10:00:00Z", "data": {"onus": [ ... ]}}
ONU events put the rows in data.onus. PON events put the rows in data.pons. One batch has one event type and up to 1000 rows.
Event types:
onu.status_changed: the ONU status changed (Online, LOS, Power fail, Offline).onu.authorized: an ONU was authorized.onu.updated: the configuration or details of an ONU changed. You get the full current ONU row.onu.deleted: an ONU was deleted.onu.signal_changed: the ONU signal moved to another band, or changed by 2 dB or more.onu.signal_reading: each new ONU signal reading.pon.outage_started: a PON outage started.pon.outage_ended: a PON outage ended.onu.unconfigured_detected: a new ONU appeared in the Unconfigured list of an OLT. Disabled ONUs are not sent. An ONU that leaves the list and comes back within 15 minutes is not sent again.
Only API keys that you create in SmartOLT can use events.
Get event stream URL
https://{subdomain}.smartolt.com/api/onu/get_event_streamGets a URL for a live event stream (Server-Sent Events). Open the URL with any SSE client, for example EventSource or curl -N.
How to use it
- Call this endpoint. Select the event types with
events. - Open the returned
urlwithinexpires_inseconds (15 minutes). - Read the events. Each event has an
id, anevent(the event type) and adataline with the event body. - The stream closes after about 1 hour. Then call this endpoint again and open the new URL. Send the last
idyou got in theLast-Event-IDheader. You then get the events that you missed.
Control events
resync: you missed events. Load the current data again, for example with Get all ONUs statuses.expired: the stream is closed. Get a new URL.disabled: the stream is closed because the API key was disabled or changed. Get a new URL.- A
: pingcomment comes every 25 seconds to keep the connection open.
Limits
- You can call this endpoint up to 60 times per hour.
- Each account can have up to 15 open streams for API keys.
It returns a 400 error code when events contains an unknown event type.
It returns a 403 error code when the API key is not a client API key.
It returns a 503 error code when the event stream is not available. Use Get all ONUs statuses until it is available again.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
eventsstring | query | No | onu.status_changed,pon.outage_started,pon.outage_ended | (String) The event types to get, separated by commas. Leave it empty to get only |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_event_stream?events=onu.status_changed%2Cpon.outage_started%2Cpon.outage_ended' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"url": "https://example.smartolt.com:8443/onu-status/stream?token=eyJkYiI6...",
"expires_in": 900
},
"response_code": "success"
}200200 - Stream content (open the returned url)โ
retry: 15000
id: 1728381600123-0
event: onu.status_changed
data: {"type":"onu.status_changed","timestamp":"2026-10-08T10:00:01Z","data":{"onus":[{"unique_external_id":"ext-1001","sn":"HWTC00000015","olt_id":"1","board":"0","port":"5","onu":"15","zone_id":"5","name":"John Doe","address":"Main St 1","contact":"+1555","odb_id":null,"status":"LOS","last_status_change":"2026-10-08 10:00:00.123456","status_observed_at":"2026-10-08 10:00:01"}]}}
: ping
id: 1728381720456-0
event: pon.outage_started
data: {"type":"pon.outage_started","timestamp":"2026-10-08T10:02:00Z","data":{"pons":[{"alert_kind":"full_outage","olt_id":"11","olt_name":"OLT 11","board":"2","port":"3","total_onus":"8","los_count":"8","power_count":"0","offline_count":"0","zone_name":"Zone 3","pon_description":"Feeder 3","cause":"los"}]}}
400400 - Unknown event typeโ
{
"status": false,
"error": "Invalid events. Known event types: onu.status_changed, onu.authorized, onu.updated, onu.deleted, pon.outage_started, pon.outage_ended, onu.signal_changed, onu.signal_reading"
}503503 - Not availableโ
{
"status": false,
"error": "ONU status push is not available right now. Poll get_onus_statuses instead."
}Webhooks
Webhook delivery (sent by SmartOLT to your server)
WebhookSmartOLT โ your HTTPS endpointThis item is documentation only. You do not send this request. SmartOLT sends it to your server.
How to set up a webhook
- Go to General > API key. Click Edit on your API key.
- In the Webhook panel, enter your HTTPS URL and select the events.
- Copy the Signing secret.
- Click Send test event. Your server gets a
webhook.testevent.
Your server must
- Use HTTPS on port 443 or 8443, with a valid certificate and a public IP address.
- Return an HTTP 2xx status within 15 seconds. Redirects count as failures.
- Ignore a
webhook-idthat it already processed. A retry sends the samewebhook-idand body.
Retries: after a failure, SmartOLT sends the batch again after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, and then every 10 hours. After 5 days of failures, SmartOLT disables the webhook and sends you an email. You can enable it again on the API key page.
Headers
webhook-id: the ID of the batch, for examplemsg_3f2a....webhook-timestamp: the time of the send, in Unix seconds.webhook-signature:v1,followed by the signature.
How to check the signature
- Remove the
whsec_prefix from your signing secret. Decode the rest from base64. This is the key. - Make the text
{webhook-id}.{webhook-timestamp}.{raw body}. - Calculate HMAC-SHA256 of the text with the key. Encode the result in base64.
- Compare it with the value after
v1,. If they are not equal, reject the request.
This follows the Standard Webhooks format, so you can also use their libraries.
// PHP example
$key = base64_decode(substr($secret, 6));
$signed = $_SERVER['HTTP_WEBHOOK_ID'] . '.' . $_SERVER['HTTP_WEBHOOK_TIMESTAMP'] . '.' . file_get_contents('php://input');
$expected = 'v1,' . base64_encode(hash_hmac('sha256', $signed, $key, true));
$valid = hash_equals($expected, $_SERVER['HTTP_WEBHOOK_SIGNATURE']);
Example bodies for each event type are in the saved examples of this item.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
webhook-idstring | header | No | msg_3f2a9c0e7b1d4a6f8e2c5b9d0a1f3e7c6b8d2a4f9e0c1b3d5a7f9e2c4b6d8a0f | The ID of the batch. A retry sends the same ID. |
webhook-timestampstring | header | No | 1791453600 | The time of the send, in Unix seconds. |
webhook-signaturestring | header | No | v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= |
|
application/jsonapplication/json | body | No | โ | โ |
Event examples
webhook.testโ
{
"type": "webhook.test",
"timestamp": "2026-10-08T10:00:01Z",
"data": {}
}onu.status_changedโ
{
"type": "onu.status_changed",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"sn": "HWTC00000015",
"olt_id": "1",
"board": "0",
"port": "5",
"onu": "15",
"zone_id": "5",
"name": "John Doe",
"address": "Main St 1",
"contact": "+1555",
"odb_id": null,
"status": "LOS",
"last_status_change": "2026-10-08 10:00:00.123456",
"status_observed_at": "2026-10-08 10:01:00"
}
]
}
}onu.unconfigured_detectedโ
{
"type": "onu.unconfigured_detected",
"timestamp": "2026-10-10T08:15:02Z",
"data": {
"onus": [
{
"id": 0,
"pon_type": "gpon",
"board": "2",
"port": "3",
"pon_description": "",
"onu": "1",
"sn": "ZTEGC7E230E4",
"onu_type_name": "ZTE-F660V6.0",
"onu_type_id": "75",
"olt_id": "1",
"is_disabled": 0,
"old_location": null,
"new_location": null,
"external_id": null,
"first_seen_at": "2026-10-10 11:14:40",
"last_seen_at": "2026-10-10 11:14:40",
"actions": [
"authorize"
]
}
]
}
}onu.authorizedโ
{
"type": "onu.authorized",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"pon_type": "gpon",
"sn": "HWTC00000015",
"olt_id": "1",
"olt_name": "OLT-A",
"board": "0",
"port": "5",
"onu": "15",
"onu_type_id": "3",
"onu_type_name": "HG8546M",
"zone_id": "5",
"zone_name": "Zone 5",
"name": "John Doe",
"address": "Main St 1",
"odb_name": "",
"mode": "Routing",
"wan_mode": "DHCP",
"ip_address": null,
"catv": "Disabled",
"administrative_status": "Enabled",
"authorization_date": "2026-10-08 09:00:00",
"contact": "+1555"
}
]
}
}onu.updatedโ
{
"type": "onu.updated",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"pon_type": "gpon",
"sn": "HWTC00000015",
"olt_id": "1",
"olt_name": "OLT-A",
"board": "0",
"port": "5",
"onu": "15",
"onu_type_id": "3",
"onu_type_name": "HG8546M",
"zone_id": "5",
"zone_name": "Zone 7",
"name": "John Doe",
"address": "Main St 1",
"odb_name": "",
"mode": "Routing",
"wan_mode": "DHCP",
"ip_address": null,
"catv": "Disabled",
"administrative_status": "Enabled",
"authorization_date": "2026-10-08 09:00:00",
"contact": "+1555"
}
]
}
}onu.deletedโ
{
"type": "onu.deleted",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"sn": "HWTC00000015",
"olt_id": "1",
"board": "0",
"port": "5",
"onu": "15",
"deleted_at": "2026-10-08 10:05:00"
}
]
}
}onu.signal_changedโ
{
"type": "onu.signal_changed",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"sn": "HWTC00000015",
"olt_id": "1",
"board": "0",
"port": "5",
"onu": "15",
"name": "John Doe",
"rx1310": -25.1,
"prev_rx1310": -22.9,
"band": "Warning",
"prev_band": "Very good",
"delta": -2.2,
"reading_at": "2026-10-08 10:00:00"
}
]
}
}onu.signal_readingโ
{
"type": "onu.signal_reading",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"onus": [
{
"unique_external_id": "ext-1001",
"sn": "HWTC00000015",
"olt_id": "1",
"board": "0",
"port": "5",
"onu": "15",
"name": "John Doe",
"rx1310": -21,
"band": "Very good",
"reading_at": "2026-10-08 10:00:00"
}
]
}
}pon.outage_startedโ
{
"type": "pon.outage_started",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"pons": [
{
"alert_kind": "full_outage",
"partial_started_at": null,
"partial_last_seen_at": null,
"olt_id": "11",
"olt_name": "OLT 11",
"olt_version": "2.0",
"board": "2",
"port": "3",
"total_onus": "8",
"has_gps": "0",
"los_count": "8",
"power_count": "0",
"offline_count": "0",
"location_id": "3",
"zone_name": "Zone 3",
"odb_id": null,
"odb_name": null,
"pon_description": "Feeder 3",
"is_active": "1",
"latest_status_change": "2026-10-08 10:00:00",
"affected_onus": null,
"affected_percent": null,
"odb_names": "",
"odb_count": 0,
"cause": "los"
}
]
}
}pon.outage_endedโ
{
"type": "pon.outage_ended",
"timestamp": "2026-10-08T10:00:01Z",
"data": {
"pons": [
{
"alert_kind": "full_outage",
"partial_started_at": null,
"partial_last_seen_at": null,
"olt_id": "11",
"olt_name": "OLT 11",
"olt_version": "2.0",
"board": "2",
"port": "3",
"total_onus": "8",
"has_gps": "0",
"los_count": "8",
"power_count": "0",
"offline_count": "0",
"location_id": "3",
"zone_name": "Zone 3",
"odb_id": null,
"odb_name": null,
"pon_description": "Feeder 3",
"is_active": "1",
"latest_status_change": "2026-10-08 10:00:00",
"affected_onus": null,
"affected_percent": null,
"odb_names": "",
"odb_count": 0,
"cause": "los",
"started_at": "2026-10-08 10:00:00",
"ended_at": "2026-10-08 10:20:00"
}
]
}
}API endpoints
SmartOLT API requests in collection order.
Get OLTs list
https://{subdomain}.smartolt.com/api/system/get_oltsTo maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.
It has been observed that multiple API integrations are using this endpoint eroneusly as a heartbeat check of the API.
*Do NOT use this endpoint as a heartbeat between API calls.*
Gets a list of all OLTs names, IPs, telnet ports, SNMP ports and unique IDs.
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_olts' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "1",
"name": "Huawei",
"olt_hardware_version": "Huawei-MA5680T",
"ip": "1.2.3.4",
"telnet_port": "2333",
"snmp_port": "2161"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get OLTs uptime and environment temperature
https://{subdomain}.smartolt.com/api/olt/get_olts_uptime_and_env_temperatureGets a list of all OLTs uptimes and environment temperatures.
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/olt/get_olts_uptime_and_env_temperature' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"olt_id": "1",
"olt_name": "Huawei",
"uptime": "576 days, 21:05",
"env_temp": "24ยฐC"
},
{
"olt_id": "2",
"olt_name": "ZTE",
"uptime": "93 days, 10:48",
"env_temp": "38ยฐC"
},
{
"olt_id": "3",
"olt_name": "C600",
"uptime": "431 days, 02:32",
"env_temp": "33ยฐC"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get OLT cards details
https://{subdomain}.smartolt.com/api/system/get_olt_cards_details/{olt_id}Gets a list of OLT cards by OLT ID, as defined in SmartOLT OLT cards section.
Each OLT card consists of:
- slot
- type
- real type
- number of ports
- software version
- status
- role
- date & time when the info was last updated
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_olt_cards_details/{olt_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"slot": "1",
"type": "GTGO",
"real_type": "GTGO",
"ports": "8",
"software_version": "V2.1.0",
"status": "Online",
"role": "Main",
"info_updated": "2020-07-14 14:43:58"
},
{
"slot": "2",
"type": "GTGH",
"real_type": "GTGH",
"ports": "16",
"software_version": "V2.1.0",
"status": "Online",
"role": "Main",
"info_updated": "2020-07-14 14:43:58"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get OLT PON ports details
https://{subdomain}.smartolt.com/api/system/get_olt_pon_ports_details/{olt_id}Gets a list of OLT PON ports by OLT ID, as defined in SmartOLT OLT PON ports section.
Each OLT PON port consists of:
- slot
- port
- type
- admin state
- status
- total ONUs
- online ONUs
- average signal
- description
- min range
- max range
- TX Power
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_olt_pon_ports_details/{olt_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"board": "2",
"pon_port": "1",
"pon_type": "GPON",
"admin_status": "Enabled",
"operational_status": "Up",
"description": "",
"min_range": "0 m",
"max_range": "20000 m",
"tx_power": "6.839 dBm",
"onus_count": 0,
"online_onus_count": 0,
"average_signal": 0
},
{
"board": "2",
"pon_port": "2",
"pon_type": "GPON",
"admin_status": "Enabled",
"operational_status": "Up",
"description": "",
"min_range": "0 m",
"max_range": "30000 m",
"tx_power": "7.041 dBm",
"onus_count": 0,
"online_onus_count": 0,
"average_signal": 0
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get OLT outage PONs details
https://{subdomain}.smartolt.com/api/system/get_outage_pons/{olt_id}Returns active PON outages for an OLT pre-aggregated and grouped for NOC triage.
- Sections - three cause buckets: los (fiber cut, grouped by PON), power (grouped by zone), offline/unknown (grouped by zone). Each group lists the affected pons.
- Each PON includes pon_description, and odb_names/odb_count โ the full set of ODBs/splitters on that PON (a PON spans many ODBs)
- Stale - PONs down > 7 days (likely decommissioned), shown separately, never dropped
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_outage_pons/{olt_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": {
"total_pons": 1,
"sections": [
{
"key": "los",
"group_by": "pon",
"pon_count": 1,
"subscribers": 12,
"groups": [
{
"label": "test 2",
"sublabel": "SMA",
"pon_count": 1,
"subscribers": 12,
"since": "2026-06-21 21:14:22",
"pons": [
{
"olt_id": "12",
"olt_name": "OLT 1",
"olt_version": "1.1.C6xx",
"board": "1",
"port": "1",
"total_onus": "12",
"has_gps": "1",
"los_count": "12",
"power_count": "0",
"offline_count": "0",
"location_id": "10",
"zone_name": "SMA",
"odb_id": "3645",
"odb_name": "F401-055-5",
"pon_description": "test 2",
"odb_names": "F401-055-1, F401-055-2, F401-055-3, F401-055-4, F401-055-5, F401-055-6, F401-055-7, F401-055-8",
"odb_count": 8,
"latest_status_change": "2026-06-21 21:14:22",
"is_active": "1"
}
]
}
]
},
{
"key": "power",
"group_by": "zone",
"pon_count": 0,
"subscribers": 0,
"groups": []
},
{
"key": "offline",
"group_by": "zone",
"pon_count": 0,
"subscribers": 0,
"groups": []
}
],
"stale": {
"pon_count": 0,
"subscribers": 0,
"groups": []
},
"unreachable_olts": []
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get OLT uplink ports details
https://{subdomain}.smartolt.com/api/system/get_olt_uplink_ports_details/{olt_id}Gets a list of OLT uplink ports by OLT ID, as defined in SmartOLT OLT uplink ports section.
Each OLT uplink port consists of:
- name
- description
- type
- admin state
- status
- negotiation
- MTU
- wavelength
- temperature
- PVID untag
- mode
- tagged VLANs
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_olt_uplink_ports_details/{olt_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"name": "gei_1/4/1",
"mode": "Hybrid",
"vlan_tag": "10,99-200,627-628",
"negotiation_auto": "Forced 1G-FullD",
"status": "Down",
"mtu": "1600",
"type": "Fiber",
"wavelength": "0",
"description": "",
"temperature": "N/A",
"pvid": "",
"admin_status": "Enabled"
},
{
"name": "xgei_1/4/2",
"mode": "Hybrid",
"vlan_tag": "10,99-200,627-628",
"negotiation_auto": "Forced 10G-FullD",
"status": "10G-FullD",
"mtu": "1600",
"type": "Fiber",
"wavelength": "1330",
"description": "",
"temperature": 25.2,
"pvid": "",
"admin_status": "Enabled"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU types list
https://{subdomain}.smartolt.com/api/system/get_onu_typesGets a list of all ONU types as defined in SmartOLT ONU Types section.
Each ONU type consists of:
- unique ID
- name
- PON type (it can be "gpon" or "epon")
- capability (it can be "Bridging" or "Bridging/Routing")
- number of ethernet ports
- number of WiFi ports
- number of VoIP ports
- CATV
- if it allows custom ONU profiles (1 - it allows, 0 - it doesn't allow)
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_onu_types' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "29",
"name": "ZTE-F623",
"pon_type": "gpon",
"capability": "Bridging/Routing",
"ethernet_ports": 4,
"wifi_ports": 4,
"voip_ports": 2,
"catv": "0",
"allow_custom_profiles": "0"
},
{
"id": "30",
"name": "ZTE-F660",
"pon_type": "gpon",
"capability": "Bridging/Routing",
"ethernet_ports": 4,
"wifi_ports": 4,
"voip_ports": 2,
"catv": "0",
"allow_custom_profiles": "1"
},
{
"id": "44",
"name": "ZTE-F401",
"pon_type": "epon",
"capability": "Bridging",
"ethernet_ports": 1,
"wifi_ports": 1,
"voip_ports": 0,
"catv": "0",
"allow_custom_profiles": "0"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU types list by PON type
https://{subdomain}.smartolt.com/api/system/get_onu_types_by_pon_type/{pon_type}Gets a list of ONU types by PON type (it can be "gpon" or "epon"), as defined in SmartOLT ONU Types section.
Each ONU type consists of:
- unique ID
- name
- PON type (it can be "gpon" or "epon")
- capability (it can be "Bridging" or "Bridging/Routing")
- number of ethernet ports
- number of WiFi ports
- number of VoIP ports
- CATV
- if it allows custom ONU profiles (1 - it allows, 0 - it doesn't allow)
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
pon_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_onu_types_by_pon_type/{pon_type}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "29",
"name": "ZTE-F623",
"pon_type": "gpon",
"capability": "Bridging/Routing",
"ethernet_ports": 4,
"wifi_ports": 4,
"voip_ports": 2,
"catv": "0",
"allow_custom_profiles": "0"
},
{
"id": "30",
"name": "ZTE-F660",
"pon_type": "gpon",
"capability": "Bridging/Routing",
"ethernet_ports": 4,
"wifi_ports": 4,
"voip_ports": 2,
"catv": "0",
"allow_custom_profiles": "1"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU type image
https://{subdomain}.smartolt.com/api/system/get_onu_type_image/{onu_type_unique_id}Gets the ONU type image for a specified ONU type unique ID.
The response consists of:
- Onu type png image
It returns a 400 error code when:
- no ONU type unique ID was provided
- no ONU type was found for the provided unique ID
You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:
PHP
header("Content-type: image/png");
echo $response_image;
HTML
img src="link_to_your_method_where_you_call_the_api"Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_onu_type_image/{onu_type_unique_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
Onu type image403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Add ONU type
https://{subdomain}.smartolt.com/api/system/add_onu_typeAdds a new ONU type.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
namestring | body | Yes | ZTE-F660V6.0 | (String) ONU type |
pon_string | body | Yes | gpon | (String) ONU type PON type. Allowed values: gpon, epon |
ethernet_integer | body | Yes | 4 | (Int) The number of ethernet ports. Allowed values: 1, 2, 3, 4, 5, 8, 16, 24 |
wifi_integer | body | Yes | 0 | (Int) The number of WiFi SSIDs. Allowed values: 0, 1, 2, 3, 4, 5, 6, 7, 8 |
voip_integer | body | Yes | 0 | (Int) The number of VoIP ports. Allowed values: 0, 1, 2 |
catvinteger | body | Yes | 0 | (Int) 1 if it supports CATV, otherwise 0 |
allow_integer | body | Yes | 1 | (Int) 1 if it allows custom profiles, otherwise 0 |
capabilitystring | body | Yes | Bridging/Routing | (String) ONU type capability. Allowed values: Bridging/Routing, Bridging |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/add_onu_type' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode name=ZTE-F660V6.0 \
--data-urlencode pon_type=gpon \
--data-urlencode ethernet_ports_nr=4 \
--data-urlencode wifi_ssids_nr=0 \
--data-urlencode voip_ports_nr=0 \
--data-urlencode catv=0 \
--data-urlencode allow_custom_profiles=1 \
--data-urlencode capability=Bridging/Routing
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU type ZTE-F660V6.0 added successfully"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get zones list
https://{subdomain}.smartolt.com/api/system/get_zonesGets a list of all zones as defined in SmartOLT Zones section.
Each zone consists of:
- unique ID
- name
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_zones' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "1",
"name": "Zone 1"
},
{
"id": "2",
"name": "Zone 2"
},
{
"id": "3",
"name": "Zone 3"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Add zone
https://{subdomain}.smartolt.com/api/system/add_zoneAdds a new zone.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
zonestring | body | Yes | City center | (String) Zone name |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/add_zone' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode 'zone=City center'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Zone City center added successfully"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get Splitters list
https://{subdomain}.smartolt.com/api/system/get_odbs/{zone_id}Gets a list of all Splitters as defined in SmartOLT Splitters section.
If Zone ID is specified then it gets a list of all Splitters in that Zone.
Each splitter consists of:
- unique ID
- name
- latitude
- longitude
- external ID
- zone ID
- zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
zone_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_odbs/{zone_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "2",
"name": "test odb",
"latitude": "44.4352497825479",
"longitude": "26.100036719531257",
"external_id": "ODB-A19",
"zone_id": "1",
"zone_name": "Zone 1"
},
{
"id": "3",
"name": "test odb2",
"latitude": null,
"longitude": null,
"external_id": "ODB-B",
"zone_id": "18",
"zone_name": "Zone 2"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Add Splitter
https://{subdomain}.smartolt.com/api/system/add_odbAdds a new splitter.
error_code: specify_odb, incorrect_odb, odb_already_exists, specify_zone, incorrect_zone, incorrect_nr_of_ports, incorrect_latitude, incorrect_longitude, incorrect_external_id, odb_add_failed (all 400); 403 when the key has no access to the zone.
external_id must not already be used by another splitter โ external_id_not_unique (400).
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
zonestring | body | Yes | City center | (String) Zone name |
namestring | body | Yes | ODB 1 | (String) Splitter name |
nr_integer | body | No | 3 | (Int) The number of ports of the splitter |
latitudestring | body | No | 52.5113340328893 | (String) Latitude |
longitudestring | body | No | 13.401282438647513 | (String) Longitude |
external_string | body | No | ODB-A19 | (String) Max 191 chars. Must not already be used by another splitter - enforced, |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/add_odb' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode 'zone=City center' \
--data-urlencode 'name=ODB 1' \
--data-urlencode nr_of_ports=3 \
--data-urlencode latitude=52.5113340328893 \
--data-urlencode longitude=13.401282438647513 \
--data-urlencode external_id=ODB-A19
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"id": 12,
"message": "ODB Block A added successfully"
},
"response_code": "success"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Edit Splitter by unique external ID
https://{subdomain}.smartolt.com/api/system/edit_odb/{odb_external_id}Update an existing splitter by its unique external ID. At least one field must be sent, otherwise the call fails with nothing_to_update.
Selecting the Splitter. The URL segment is the splitter's unique external_id. Alternatively post odb_id with the internal numeric ID - if both are provided, then the internal ID is used to select the splitter.
error_code: specify_odb_id (400, neither selector sent), odb_does_not_exist (400), 403 with no error_code when the key has no access to the splitter's zone or the splitter itself, nr_of_ports_below_used (400), nothing_to_update (400), plus the same field-validation codes as Add Splitter.
Setting external_id to a value already used by another splitter fails with external_id_not_unique (400).
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
odb_string | path | Yes | โ | โ |
namestring | body | No | ODB Block A renamed | (String) Send only the fields you want to change โ omitted fields are left untouched. |
zonestring | body | No | Center | (String) Zone NAME. Moves the splitter to another zone. |
nr_string | body | No | 24 | (String) Cannot be lowered below the highest splitter port an ONU is currently connected to. |
latitudestring | body | No | 44.4325 | โ |
longitudestring | body | No | 26.1039 | โ |
external_string | body | No | ODB-A19-NEW | (String) Sets a NEW external ID on the row - a value to write, NOT how the row is selected (selection is the URL segment or |
odb_integer | body | No | {{odb_id}} | (Int) Internal numeric ID. When sent, it takes precedence over the external ID in the URL segment. Use it when the external ID is ambiguous or contains characters a URL segment cannot carry. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/edit_odb/{odb_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode 'name=ODB Block A renamed' \
--data-urlencode zone=Center \
--data-urlencode nr_of_ports=24 \
--data-urlencode latitude=44.4325 \
--data-urlencode longitude=26.1039 \
--data-urlencode external_id=ODB-A19-NEW \
--data-urlencode 'odb_id={{odb_id}}'
Saved responses
200200 - OKโ
{
"status": true,
"response": "ODB updated successfully",
"response_code": "success"
}Delete Splitter by unique external ID
https://{subdomain}.smartolt.com/api/system/delete_odb/{odb_external_id}Deletes a splitter.
Refused while ONUs are still assigned to the splitter.
error_code: specify_odb_id (400), odb_does_not_exist (400), odb_in_use (403, ONUs still assigned), 403 with no error_code for an out-of-scope splitter.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
odb_string | path | Yes | โ | โ |
odb_integer | body | No | {{odb_id}} | (Int) Internal numeric ID; takes precedence over the URL segment. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/delete_odb/{odb_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode 'odb_id={{odb_id}}'
Saved responses
200200 - OKโ
{
"status": true,
"response": "ODB ODB Block A deleted successfully",
"response_code": "success"
}403403 - ODB in useโ
{
"status": false,
"error": "This ODB is assigned to 4 ONU(s) and cannot be deleted",
"error_code": "odb_in_use"
}Get speed profiles list
https://{subdomain}.smartolt.com/api/system/get_speed_profilesGets a list of all speed profiles as defined in SmartOLT Speed profiles section.
Each speed profile consists of:
- unique ID
- name
- speed
- direction: upload or download
- type: iptv or internet
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_speed_profiles' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": 1,
"name": "100M",
"speed": "104960",
"direction": "download",
"type": "iptv"
},
{
"id": 2,
"name": "INTERNET_100_Mb",
"speed": "104960",
"direction": "upload",
"type": "internet"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get VLANs list
https://{subdomain}.smartolt.com/api/olt/get_vlans/{olt_id}Gets a list of OLT VLANs by OLT ID, as defined in SmartOLT OLT VLANs section.
Each VLAN consists of:
- unique ID
- VLAN
- description
- OLT ID
- scope: iptv, mgmt/voip, lan_to_lan or internet
- default_for_pon_ports: board_1_port_3, board_2_port_1
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/olt/get_vlans/{olt_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": "1830",
"vlan": "10",
"description": null,
"olt_id": "1",
"scope": "internet"
},
{
"id": "1832",
"vlan": "900",
"description": "IPTV",
"olt_id": "1",
"scope": "iptv"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Add VLAN
https://{subdomain}.smartolt.com/api/olt/add_vlan/{olt_id}Adds a VLAN to the OLT specified by the OLT ID.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
vlaninteger | body | Yes | 30 | (Int) VLAN-ID |
descriptionstring | body | No | test vlan | (String) VLAN description |
for_integer | body | No | 0 | (Int) 1 if the VLAN is a Multicast VLAN, used for IPTV, otherwise 0 |
for_integer | body | No | 1 | (Int) 1 if the VLAN is a Management/VoIP VLAN, otherwise 0 |
dhcp_integer | body | No | 0 | (Int) 1 to enable DHCP Snooping on VLAN, otherwise 0 |
lan_integer | body | No | 0 | (Int) 1 to enable direct communication between ONUs on this VLAN (aka. LAN-to-LAN), otherwise 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/olt/add_vlan/{olt_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode vlan=30 \
--data-urlencode 'description=test vlan' \
--data-urlencode for_iptv=0 \
--data-urlencode for_mgmt_voip=1 \
--data-urlencode dhcp_snooping=0 \
--data-urlencode lan_to_lan=0
Saved responses
200200 - OKโ
{
"status": true,
"response": "VLAN 30 added successfully to OLT Test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get billing details
https://{subdomain}.smartolt.com/api/system/get_billing_detailsGets a list of all OLTs subscription details.
For each OLT the subscription details are:
- OLT unique ID
- OLT name
- subscription status
- subscription end date (inclusive)
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/system/get_billing_details' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"olts": [
{
"olt_id": "1",
"olt_name": "Huawei",
"olt_subscription_status": "active",
"olt_subscription_end_date": "18-Apr-2022"
},
{
"olt_id": "2",
"olt_name": "ZTE",
"olt_subscription_status": "expired",
"olt_subscription_end_date": "31-Dec-2020"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all unconfigured ONUs
https://{subdomain}.smartolt.com/api/onu/unconfigured_onusGets a list of all unconfigured ONUs on all OLTs.
Each unconfigured ONU consists of:
- PON type (it can be "gpon" or "epon")
- board
- port
- onu
- sn (in case of gpon ONU is the SN, in case of epon ONU is the MAC)
- ONU type name
- ONU type unique ID
- OLT unique ID
- if ONU is disabled (1 - is disabled, 0 - is enabled)
- A list of possible actions for this ONU: view, resync_config, authorize, move_here
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
snstring | query | No | AD0 | (Optional) Search for a specific SN. Performed search is of type CONTAINS. |
onu_string | query | No | F6 | (Optional) Search for a specific ONU type. Performed search is of type CONTAINS. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/unconfigured_onus?sn=AD0&onu_type=F6' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": 0,
"pon_type": "gpon",
"board": "2",
"port": "3",
"pon_description": "",
"onu": "1",
"sn": "ZTEGC7E230E4",
"onu_type_name": "ZTE-F660V6.0",
"onu_type_id": "75",
"olt_id": "1",
"is_disabled": 0,
"old_location": null,
"new_location": null,
"external_id": null,
"actions": [
"authorize"
]
},
{
"id": 0,
"pon_type": "epon",
"board": "1",
"port": "3",
"onu": "1",
"sn": "98F4.28FF.0005",
"onu_type_name": "ZTE-F460",
"onu_type_id": "45",
"olt_id": "1",
"is_disabled": 0,
"old_location": null,
"new_location": null,
"external_id": null,
"actions": [
"authorize"
]
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get unconfigured ONUs by OLT unique ID
https://{subdomain}.smartolt.com/api/onu/unconfigured_onus_for_olt/{olt_id}Gets a list of all unconfigured ONUs for a specified OLT unique ID.
Each unconfigured ONU consists of:
- PON type (it can be "gpon" or "epon")
- board
- port
- onu
- sn (in case of gpon ONU is the SN, in case of epon ONU is the MAC)
- ONU type name
- ONU type unique ID
- OLT unique ID
- if ONU is disabled (1 - is disabled, 0 - is enabled)
- A list of possible actions for this ONU: view, resync_config, authorize, move_here
It returns a 400 error code when:
- no OLT ID was provided
- no OLT was found for the provided OLT ID
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | path | Yes | โ | โ |
snstring | query | No | AD0 | (Optional) Search for a specific SN. Performed search is of type CONTAINS. |
onu_string | query | No | F6 | (Optional) Search for a specific ONU type. Performed search is of type CONTAINS. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/unconfigured_onus_for_olt/{olt_id}?sn=AD0&onu_type=F6' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"id": 0,
"pon_type": "gpon",
"board": "2",
"port": "3",
"onu": "1",
"sn": "ZTEGC7E230E4",
"onu_type_name": "ZTE-F660V6.0",
"onu_type_id": "75",
"olt_id": "1",
"is_disabled": 0,
"old_location": null,
"new_location": null,
"external_id": null,
"actions": [
"authorize"
]
},
{
"id": 0,
"pon_type": "epon",
"board": "1",
"port": "3",
"onu": "1",
"sn": "98F4.28FF.0005",
"onu_type_name": "ZTE-F460",
"onu_type_id": "45",
"olt_id": "1",
"is_disabled": 0,
"old_location": null,
"new_location": null,
"external_id": null,
"actions": [
"authorize"
]
}
]
}400400 - No OLT for IDโ
{
"status": false,
"error": "Invalid parameters: No OLT was found with ID 100"
}400400 - Specify OLT IDโ
{
"status": false,
"error": "Invalid parameters: Please specify the OLT ID"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs statuses
https://{subdomain}.smartolt.com/api/onu/get_onus_statusesGets all the ONUs statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.
ONU statuses returned can be:
- Online
- Power fail
- LOS
- Offline
It returns a 400 error code when:
- no OLT was found for the provided OLT ID
- no OLT ID was provided with board or PON port
- no OLT ID or no board was provided with PON port
- no Zone was found for the provided zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID |
portinteger | query | No | 3 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones |
status_string | query | No | โ | (String) Returns only the ONUs whose status changed at or after this date. Use ISO 8601 with a time zone, for example 2026-09-29T10:00:00+00:00. A date without a time zone is read in the time zone of your SmartOLT account. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onus_statuses?olt_id=1&board=2&port=3&zone=City%20Centre&status_changed_after=None' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"unique_external_id": "test1",
"sn": "ZTEGC1D48C98",
"olt_id": "53",
"board": "0",
"port": "3",
"onu": "20",
"zone_id": "1",
"name": "test 1",
"address": "",
"contact": "",
"odb_id": null,
"status": "Online",
"last_status_change": "2025-12-30 12:00:00"
},
{
"unique_external_id": "test2",
"sn": "ZTEGC171A71A",
"olt_id": "53",
"board": "1",
"port": "4",
"onu": "4",
"zone_id": "1",
"name": "test 2",
"address": "",
"contact": "",
"odb_id": null,
"status": "Offline",
"last_status_change": "2025-12-30 12:00:00"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs administrative statuses
https://{subdomain}.smartolt.com/api/onu/get_onus_administrative_statusesGets all the ONUs administrative statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.
ONU administrative statuses returned can be:
- Enabled
- Disabled
It returns a 400 error code when:
- no OLT was found for the provided OLT ID
- no OLT ID was provided with board or PON port
- no OLT ID or no board was provided with PON port
- no Zone was found for the provided zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID |
portinteger | query | No | 3 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onus_administrative_statuses?olt_id=1&board=2&port=3&zone=City%20Centre' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"unique_external_id": "test1",
"sn": "ZTEGC1D48C98",
"pon_type": "gpon",
"olt_id": "53",
"board": "0",
"port": "3",
"onu": "20",
"zone_id": "1",
"name": "test 1",
"address": "",
"contact": "",
"admin_status": "Enabled"
},
{
"unique_external_id": "test2",
"sn": "ZTEGC171A71A",
"pon_type": "gpon",
"olt_id": "53",
"board": "1",
"port": "4",
"onu": "4",
"zone_id": "1",
"name": "test 2",
"address": "",
"contact": "",
"admin_status": "Disabled"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs CATV statuses
https://{subdomain}.smartolt.com/api/onu/get_onus_catv_statusesGets all the ONUs CATV statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.
ONU CATV statuses returned can be:
- Enabled
- Disabled
- CATV not supported by ONU-Type
It returns a 400 error code when:
- no OLT was found for the provided OLT ID
- no OLT ID was provided with board or PON port
- no OLT ID or no board was provided with PON port
- no Zone was found for the provided zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID |
portinteger | query | No | 3 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onus_catv_statuses?olt_id=1&board=2&port=3&zone=City%20Centre' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"unique_external_id": "test1",
"sn": "ZTEGC1D48C98",
"olt_id": "53",
"board": "0",
"port": "3",
"onu": "20",
"zone_id": "1",
"name": "test 1",
"address": "",
"contact": "",
"catv_status": "Enabled"
},
{
"unique_external_id": "test2",
"sn": "ZTEGC171A71A",
"olt_id": "53",
"board": "1",
"port": "4",
"onu": "4",
"zone_id": "1",
"name": "test 2",
"address": "",
"contact": "",
"catv_status": "Disabled"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs signals
https://{subdomain}.smartolt.com/api/onu/get_onus_signalsGets all the ONUs signals for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs signals on all OLTs will be returned.
The response consists of:
- ONU signal: 'Critical', 'Warning', 'Very good'
- ONU signal 1310 value
It returns a 400 error code when:
- no OLT was found for the provided OLT ID
- no OLT ID was provided with board or PON port
- no OLT ID or no board was provided with PON port
- no Zone was found for the provided zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want signals from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want signals from all boards on the provided OLT ID |
portinteger | query | No | 3 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want signals from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs signals from all the zones |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onus_signals?olt_id=1&board=2&port=3&zone=City%20Centre' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": [
{
"unique_external_id": "test1",
"sn": "ZTEGC1D48C98",
"olt_id": "53",
"board": "0",
"port": "3",
"onu": "20",
"zone_id": "1",
"name": "test 1",
"address": "",
"contact": "",
"odb_id": null,
"signal_1310": "-20.05 dBm",
"signal": "Very good",
"signal_1490": "-"
},
{
"unique_external_id": "test2",
"sn": "ZTEGC171A71A",
"olt_id": "53",
"board": "1",
"port": "4",
"onu": "4",
"zone_id": "1",
"name": "test 2",
"address": "",
"contact": "",
"odb_id": null,
"signal_1310": "-11.89 dBm",
"signal": "Very good",
"signal_1490": "-"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs details
https://{subdomain}.smartolt.com/api/onu/get_all_onus_detailsGets all the ONUs details for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs details on all OLTs will be returned.
The "Get all ONUs details" method is equivalent to an export of the entire database of ONU details and therefore it is not recommended to be used repeatedly, as the contained information does not change so often.
Maximum recommended calls for "Get all ONUs details": 15 per hour (calls are blocked after the limit is reached).
Pagination (recommended)
Pass page to receive results in pages. page_size accepts 1-100 (default 100). Paginated calls do not consume the 15/hours budget of the full export - they count toward the general API budget.
The paginated response is:
{ "status": true, "page": 1, "page_size": 100, "total_items": 4111, "total_pages": 42, "onus": [...] }
total_items/total_pages are included on page 1.
Keeping in sync (recommended pattern)
Page through the full inventory once, store it, then poll with updated_since= (e.g. 2026-07-08 12:00:00) to receive only ONUs whose configuration changed since. A typical incremental sync is 1โ2 calls instead of re-paging everything. Status/signal changes do not touch updated_since โ use the dedicated statuses/signals endpoints for those.
Filters
All optional and combinable โ see the query parameters table. Text filters (sn, external_id, name, address) match partially; enum filters return 400 on invalid values.
Full export
Calling without page returns every ONU in one response ({ "status": true, "onus": [...] }). This is equivalent to an export of the entire database: maximum 15 calls per hour, blocked at the limit. Prefer pagination + updated_since.
Errors
- 400 โ unknown OLT ID / zone / splitter, board/port without the required OLT ID, or an invalid filter value (unparseable date, unknown status token)
- Unsupported query parameters are deprecated: they currently return a
Deprecationwarning header and will be rejected with 410 Gone - 429 โ rate limit exceeded; the response carries
Retry-After(seconds until the counting window resets). Back off and retry after that interval
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
pageinteger | query | No | 1 | (Int) Page number. Enables pagination (recommended). |
page_integer | query | No | 100 | (Int) Items per page, 1โ100. Default 100. |
updated_string | query | No | 2026-07-08 12:00:00 | (String) Only ONUs whose configuration changed since this date. Use for incremental sync after one full pull. |
fieldsstring | query | No | sn,name,status | (String) Comma-separated list of response fields to return. Include service_ports/ethernet_ports/wifi_ports/voip_ports only when needed โ skipping them is faster. |
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs details. Leave empty if you want ONUs details from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want ONUs details from all boards on the provided OLT ID |
portinteger | query | No | 3 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want ONUs details from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs details from all the zones |
odbstring | query | No | Splitter325 | (String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character |
snstring | query | No | โ | (String) ONU SN |
external_string | query | No | โ | (String) ONU unique external ID |
namestring | query | No | โ | (String) ONU name |
addressstring | query | No | โ | (String) ONU address |
onu_string | query | No | โ | (String) ONU type ID (comma-separable) |
vlanstring | query | No | โ | (String) ONU VLAN |
modestring | query | No | Routing | (String) ONU mode. Allowed values: Bridging or Routing. |
wan_string | query | No | PPPoE | (String) ONU router mode. Allowed values: Setup via ONU webpage, DHCP, Static or PPPoE. |
administrative_string | query | No | enabled | (String) ONU admin status: Allowed values: enabled, disabled. |
tr069string | query | No | enabled | (String) ONU TR069 status: Allowed values: enabled, disabled. |
catvstring | query | No | enabled | (String) ONU CATV status: Allowed values: enabled, disabled. |
statusstring | query | No | online | (String) ONU status: Allowed values: online, pwrfail, los, offline. A comma separated list of these values is also allowed. |
signalstring | query | No | critical | (String) ONU signal: Allowed values: very_good, warning, critical. |
authorized_string | query | No | โ | (String)ONU authorized on/after this date. |
authorized_string | query | No | โ | (String) ONU authorized on/before this date. |
status_string | query | No | โ | (String) Returns only the ONUs whose status changed at or after this date. Use ISO 8601 with a time zone, for example 2026-09-29T10:00:00+00:00. A date without a time zone is read in the time zone of your SmartOLT account. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_all_onus_details?page=1&page_size=100&updated_since=2026-07-08%2012%3A00%3A00&fields=sn%2Cname%2Cstatus&olt_id=1&board=2&port=3&zone=City%20Centre&odb=Splitter325&mode=Routing&wan_mode=PPPoE&administrative_status=enabled&tr069=enabled&catv=enabled&status=online&signal=critical' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onus": [
{
"unique_external_id": "HWTC12341234",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "HWTC12341234",
"olt_id": "53",
"olt_name": "Huawei",
"board": "1",
"port": "1",
"onu": "0",
"onu_type_id": "308",
"onu_type_name": "ONU-type-eth-4-pots-2-catv-0",
"zone_id": "182",
"zone_name": "Zone",
"name": "test",
"address": "",
"odb_name": "",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": null,
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "Disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Not supported by ONU-Type",
"administrative_status": "Enabled",
"authorization_date": "2023-06-04 00:00:00",
"is_synced_after_import": "0",
"is_failed_resync_config": "0",
"status": null,
"last_status_change": null,
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "348",
"vlan": "20",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "translate",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "Access",
"dhcp": "No control",
"vlan": "20",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": {
"preset_id": 5,
"preset_name": "test preset",
"is_reversible": true,
"applied_at": "2026-07-23 06:51:54",
"status": "active"
}
},
{
"unique_external_id": "test2",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "ZTEGC171A71A",
"name": "Test name2",
"olt_id": "53",
"olt_name": "OLT 1",
"board": "1",
"port": "4",
"onu": "4",
"onu_type_id": "2",
"onu_type_name": "ZTE-F600",
"zone_id": "1",
"zone_name": "City Center",
"address": null,
"odb_name": "ODB 2",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": "DHCP",
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "OLT IPTV module disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Enabled",
"administrative_status": "Enabled",
"authorization_date": "2021-08-30 00:00:00",
"is_synced_after_import": 1,
"is_failed_resync_config": 0,
"status": null,
"last_status_change": "2025-12-30 12:00:00",
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "100",
"vlan": "150",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": null
}
]
}200200 - OK (paginated)โ
{
"status": true,
"page": 1,
"page_size": 100,
"total_items": 4111,
"total_pages": 42,
"onus": [
{
"unique_external_id": "HWTC12341234",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "HWTC12341234",
"olt_id": "53",
"olt_name": "Huawei",
"board": "1",
"port": "1",
"onu": "0",
"onu_type_id": "308",
"onu_type_name": "ONU-type-eth-4-pots-2-catv-0",
"zone_id": "182",
"zone_name": "Zone",
"name": "test",
"address": "",
"odb_name": "",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": null,
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "Disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Not supported by ONU-Type",
"administrative_status": "Enabled",
"authorization_date": "2023-06-04 00:00:00",
"is_synced_after_import": "0",
"is_failed_resync_config": "0",
"status": null,
"last_status_change": null,
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "348",
"vlan": "20",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "translate",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "Access",
"dhcp": "No control",
"vlan": "20",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": {
"preset_id": 5,
"preset_name": "test preset",
"is_reversible": true,
"applied_at": "2026-07-23 06:51:54",
"status": "active"
}
},
{
"unique_external_id": "test2",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "ZTEGC171A71A",
"name": "Test name2",
"olt_id": "53",
"olt_name": "OLT 1",
"board": "1",
"port": "4",
"onu": "4",
"onu_type_id": "2",
"onu_type_name": "ZTE-F600",
"zone_id": "1",
"zone_name": "City Center",
"address": null,
"odb_name": "ODB 2",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": "DHCP",
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "OLT IPTV module disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Enabled",
"administrative_status": "Enabled",
"authorization_date": "2021-08-30 00:00:00",
"is_synced_after_import": 1,
"is_failed_resync_config": 0,
"status": null,
"last_status_change": "2025-12-30 12:00:00",
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "100",
"vlan": "150",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": null
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONUs GPS coordinates
https://{subdomain}.smartolt.com/api/onu/get_all_onus_gps_coordinatesGets all the ONUs GPS coordinates for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs GPS coordinates on all OLTs will be returned.
Maximum recommended calls for "Get all ONUs GPS coordinates": 3 per hour (calls are blocked after the limit is reached).
The response consists of:
- ONU latitude
- ONU longitude
It returns a 400 error code when:
- no OLT was found for the provided OLT ID
- no OLT ID was provided with board or PON port
- no OLT ID or no board was provided with PON port
- no Zone was found for the provided zone name
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | query | No | 1 | (Int) The ID of the OLT for which to get the ONUs GPS coordinates. Leave empty if you want ONUs GPS coordinates from all OLTs |
boardinteger | query | No | 2 | (Int) OLT board where the ONUs are placed. Leave it empty if you want ONUs GPS coordinates from all boards on the provided OLT ID |
portinteger | query | No | 4 | (Int) OLT PON port where ONUs are placed. Leave it empty if you want ONUs GPS coordinates from all PON ports on the provided board |
zonestring | query | No | City Centre | (String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs GPS coordinates from all the zones |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_all_onus_gps_coordinates?olt_id=1&board=2&port=4&zone=City%20Centre' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onus": [
{
"unique_external_id": "test1",
"latitude": "41.22",
"longitude": "33.5"
},
{
"unique_external_id": "test2",
"latitude": "41.20",
"longitude": "32.88"
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU status by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_status/{onu_external_id}๐ก Performs real-time data collection directly from the OLT
๐ง Designed for LIVE debugging and troubleshooting only
โ Restrictions๐ซ DO NOT use this endpoint in:
- automated polling scripts
- monitoring loops
- bulk data collection jobs
๐ซ DO NOT call this endpoint repeatedly for multiple ONUs
Use get_onu_status only when:
- actively debugging a specific ONU
- investigating a real-time issue reported by a user
For regular monitoring or integrations, use endpoints such as Get all onus statuses and cache the response in your system for 5 minutes.
Gets the ONU status for a specified ONU unique external ID.
ONU status returned can be:
- Online
- Power fail
- LOS
- Offline
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT wasn't able to process the command
- ONU is saved for later authorization and doesn't have a status yet
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_status/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onu_status": "Online",
"last_status_change": "2025-12-30 12:00:00"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU status history by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_status_history/{onu_external_id}Gets the status history of an ONU for a time period: how long the ONU was Online, LOS, Power fail, Offline or Log in, and how many times it went down.
The data comes from the SmartOLT database. This endpoint does not send commands to the OLT.
Time period
- Leave
fromandtoempty to get the last 24 hours. - Or send
fromandtotogether, asYYYY-MM-DD. Both days are included.fromcan be up to 365 days ago. - All times are in the time zone of your SmartOLT account. The response shows it in
timezone.
Detail
- If the period starts in the last 7 days,
detailistransitions. You get each status period inperiods. - If the period starts earlier,
detailisdaily. You get the seconds in each status per day indays.
Fields
summary.online_percent: the percentage of time Online. Time with no data (unknown) is not counted. It isnullwhen there is no data.summary.secondsanddays[].seconds: seconds in each status: online, los, power_fail, offline, login, unknown.interruptions: how many times the ONU went from Online to another status.periods[].cause:olt_rebootwhen the status changed because the OLT rebooted, otherwisenull.
It returns a 400 error code when:
- no ONU was found for the provided ONU external ID
- the dates are not valid (error code
invalid_date_range)
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
fromstring | query | No | 2026-09-01 | (String) The first day, as YYYY-MM-DD. Send it together with |
tostring | query | No | 2026-09-30 | (String) The last day, as YYYY-MM-DD. This day is included. It cannot be in the future. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_status_history/{onu_external_id}?from=2026-09-01&to=2026-09-30' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OK (last 24 hours)โ
{
"onu_external_id": "ext-1001",
"from": "2026-10-08 10:00:00",
"to": "2026-10-09 10:00:00",
"timezone": "Europe/Berlin",
"detail": "transitions",
"summary": {
"online_percent": 98.26,
"known_seconds": 86400,
"seconds": {
"online": 84900,
"los": 1200,
"power_fail": 300,
"offline": 0,
"login": 0,
"unknown": 0
},
"interruptions": 2
},
"periods": [
{
"status": "online",
"from": "2026-10-08 10:00:00",
"to": "2026-10-08 22:10:00",
"seconds": 43800,
"cause": null
},
{
"status": "los",
"from": "2026-10-08 22:10:00",
"to": "2026-10-08 22:30:00",
"seconds": 1200,
"cause": null
},
{
"status": "online",
"from": "2026-10-08 22:30:00",
"to": "2026-10-09 03:00:00",
"seconds": 16200,
"cause": null
},
{
"status": "power_fail",
"from": "2026-10-09 03:00:00",
"to": "2026-10-09 03:05:00",
"seconds": 300,
"cause": null
},
{
"status": "online",
"from": "2026-10-09 03:05:00",
"to": "2026-10-09 10:00:00",
"seconds": 24900,
"cause": null
}
],
"status": true,
"response_code": "success"
}200200 - OK (daily, older period)โ
{
"onu_external_id": "ext-1001",
"from": "2026-09-01 00:00:00",
"to": "2026-09-03 00:00:00",
"timezone": "Europe/Berlin",
"detail": "daily",
"summary": {
"online_percent": 99.65,
"known_seconds": 172800,
"seconds": {
"online": 172200,
"los": 600,
"power_fail": 0,
"offline": 0,
"login": 0,
"unknown": 0
},
"interruptions": 1
},
"days": [
{
"date": "2026-09-01",
"seconds": {
"online": 85800,
"los": 600,
"power_fail": 0,
"offline": 0,
"login": 0,
"unknown": 0
},
"interruptions": 1
},
{
"date": "2026-09-02",
"seconds": {
"online": 86400,
"los": 0,
"power_fail": 0,
"offline": 0,
"login": 0,
"unknown": 0
},
"interruptions": 0
}
],
"status": true,
"response_code": "success"
}400400 - Invalid datesโ
{
"status": false,
"error": "Use from and to together as YYYY-MM-DD, from not after to, within the last 365 days.",
"error_code": "invalid_date_range"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU signal by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_signal/{onu_external_id}Gets the ONU signal for a specified ONU unique external ID.
This endpoint is should be used only for getting fresh data for a limited number of ONUs between regular polling intervals.
To maintain system performance for all users, heavy usage may be subject to rate limiting.
โ Restrictions****๐ซ DO NOT use this endpoint in:
- automated polling scripts
- monitoring loops
- bulk data collection jobs
๐ซ DO NOT call this endpoint repeatedly for multiple ONUs
Use get_onu_signal only when:
- actively debugging a specific ONT
- investigating a real-time issue reported by a user
The response consists of:
- ONU signal: 'Critical', 'Warning', 'Very good'
- ONU signal value: 1490 signal / 1310 signal
- ONU signal 1310 value
- ONU signal 1490 value
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT wasn't able to process the command
- ONU is saved for later authorization and doesn't have signal yet
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_signal/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onu_signal": "Very good",
"onu_signal_value": "-10.39 dBm / -10.74 dBm ",
"onu_signal_1310": "-10.74 dBm",
"onu_signal_1490": "-10.39 dBm"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU details by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_details/{onu_external_id}Get ONU details for a specified ONU unique external ID.
The response consists of:
- ONU name
- ONU SN
- ONU board, port, onu etc
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
Important: Direct ONU link by External ID
Use this URL in your CRM/ERP to directly point to the ONU in SmartOLT:https://{subdomain}.smartolt.com/onu/details/{onu_external_id}
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_details/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onu_details": {
"unique_external_id": "test2",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "ZTEGC171A71A",
"name": "Test name2",
"olt_id": "53",
"olt_name": "OLT 1",
"board": "1",
"port": "4",
"onu": "4",
"onu_type_id": "2",
"onu_type_name": "ZTE-F600",
"zone_id": "1",
"zone_name": "City Center",
"address": null,
"odb_name": "ODB 2",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": "DHCP",
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "OLT IPTV module disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Enabled",
"administrative_status": "Enabled",
"authorization_date": "2021-08-30 00:00:00",
"is_synced_after_import": 1,
"is_failed_resync_config": 0,
"status": null,
"last_status_change": "2025-12-30 12:00:00",
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "100",
"vlan": "150",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": {
"preset_id": 5,
"preset_name": "test preset",
"is_reversible": true,
"applied_at": "2026-07-23 06:51:54",
"status": "active"
}
}
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONUs details by SN
https://{subdomain}.smartolt.com/api/onu/get_onus_details_by_sn/{onu_sn}Get ONU details for a specified SN.
This endpoint is should be used only for getting fresh data for a limited number of ONTs between regular polling intervals.
To maintain system performance for all users, heavy usage may be subject to rate limiting.
โ Restrictions****๐ซ DO NOT use this endpoint in:
- automated polling scripts
- monitoring loops
- bulk data collection jobs
๐ซ DO NOT call this endpoint repeatedly for multiple ONUs
Use get_onus_details_by_sn only when:
- actively debugging a specific ONT
- investigating a real-time issue reported by a user
The response consists of:
- ONU name
- ONU SN
- ONU board, port, onu etc
It returns a 400 error code when:
- no SN was provided
Important: Direct ONU link by External ID
Use this URL in your CRM/ERP to directly point to the ONU in SmartOLT:https://{subdomain}.smartolt.com/onu/details/{onu_external_id}
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onus_details_by_sn/{onu_sn}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"onus": [
{
"unique_external_id": "test2",
"pon_type": "gpon",
"gpon_channel": "gpon",
"sn": "ZTEGC171A71A",
"name": "Test name2",
"olt_id": "53",
"olt_name": "OLT 1",
"board": "1",
"port": "4",
"onu": "4",
"onu_type_id": "2",
"onu_type_name": "ZTE-F600",
"zone_id": "1",
"zone_name": "City Center",
"address": null,
"odb_name": "ODB 2",
"odb_port": "",
"mode": "Routing",
"wan_mode": "Setup via ONU webpage",
"ip_address": null,
"subnet_mask": null,
"default_gateway": null,
"dns1": null,
"dns2": null,
"username": null,
"password": null,
"mgmt_ip_mode": "Inactive",
"mgmt_ip_address": null,
"mgmt_ip_subnet_mask": null,
"mgmt_ip_default_gateway": null,
"mgmt_ip_dns1": null,
"mgmt_ip_dns2": null,
"mgmt_ip_service_port": null,
"mgmt_ip_vlan": null,
"mgmt_ip_cvlan": null,
"mgmt_ip_svlan": null,
"mgmt_ip_tag_transform_mode": null,
"voip_service": "Disabled",
"voip_ip_mode": "DHCP",
"voip_ip_address": null,
"voip_ip_subnet_mask": null,
"voip_ip_default_gateway": null,
"voip_ip_dns1": null,
"voip_ip_dns2": null,
"voip_ip_service_port": null,
"voip_ip_vlan": null,
"voip_ip_cvlan": null,
"voip_ip_svlan": null,
"voip_ip_tag_transform_mode": null,
"iptv": "OLT IPTV module disabled",
"iptv_service_port": null,
"iptv_vlan": null,
"iptv_cvlan": null,
"iptv_svlan": null,
"iptv_tag_transform_mode": null,
"iptv_upload_speed": null,
"iptv_download_speed": null,
"iptv_allowed_macs": null,
"iptv_filtered_macs": null,
"custom_template_name": null,
"tr069": "Disabled",
"tr069_profile": null,
"tr069_device_id": null,
"catv": "Enabled",
"administrative_status": "Enabled",
"authorization_date": "2021-08-30 00:00:00",
"is_synced_after_import": 1,
"is_failed_resync_config": 0,
"status": null,
"last_status_change": "2025-12-30 12:00:00",
"signal": null,
"signal_1310": null,
"signal_1490": null,
"latitude": null,
"longitude": null,
"contact": "",
"service_ports": [
{
"service_port": "100",
"vlan": "150",
"cvlan": "",
"svlan": "",
"tag_transform_mode": "",
"upload_speed": "1G",
"download_speed": "1G"
}
],
"ethernet_ports": [
{
"port": "eth_0/1",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/2",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/3",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
},
{
"port": "eth_0/4",
"admin_state": "Enabled",
"mode": "LAN",
"dhcp": "No control",
"vlan": "",
"allowed_vlans": ""
}
],
"wifi_ports": [],
"voip_ports": [],
"applied_configuration_preset": {
"preset_id": 5,
"preset_name": "test preset",
"is_reversible": true,
"applied_at": "2026-07-23 06:51:54",
"status": "active"
}
}
]
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU full status info by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_full_status_info/{onu_external_id}Gets the ONU full status info for a specified ONU unique external ID.
This endpoint is resource-intensive and should be used with caution.
To maintain system performance for all users, heavy usage may be subject to rate limiting.
โฑ๏ธ Average response time: ~5 seconds per request
๐ก Performs real-time data collection directly from the OLT
๐ง Designed for LIVE debugging and troubleshooting only
โ Restrictions
๐ซ DO NOT use this endpoint in:
- automated polling scripts
- monitoring loops
- bulk data collection jobs
๐ซ DO NOT call this endpoint repeatedly for multiple ONUs
Use get_onu_full_status_info only when:
- actively debugging a specific ONT
- investigating a real-time issue reported by a user
For regular monitoring or integrations, use endpoints such as Get all onus statuses and cache the response in your system for 5 minutes:
ONU full status info contains info about:
- Current status
- Status history
- Optical Tx, Rx signals
- Ethernet interfaces
- WAN status
- MAC table
- Other ONU info
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT wasn't able to process the command
- ONU is saved for later authorization and doesn't have status info yet
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_full_status_info/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"full_status_info": "Copyright(C) Huawei Technologies Co., Ltd. 2002-2016. All rights reserved.\nLogin Time : 2019-02-19 08:44:21+08:00\nLogout Time : 2019-02-19 08:44:23+08:00\nOptical status:\nModule type : GPON\nModule sub-type : CLASS B+\nRx optical power(dBm) : -23.37\nTx optical power(dBm) : 1.91\nTemperature(C) : 48\nOLT Rx ONT optical power(dBm) : -28.54\nCATV Rx optical power(dBm) : -\nONT-ID : 0\nControl flag : active\nRun state : online\nMatch state : mismatch\nONT distance(m) : 1945\nCPU occupation : 1%\nManagement mode : OMCI\nDescription : ONU_Customer_name_zone_Zone_1_descr\nLast down cause : dying-gasp\nLast up time : 2019-02-15 07:50:06+08:00\nLast down time : 2019-02-15 07:49:01+08:00\nLast dying gasp time : 2019-02-15 07:49:01+08:00\nONT online duration : 4 day(s), 0 hour(s), 54 minute(s), 24 second(s) \nInteroperability-mode : ITU-T\nLine profile ID : 1\nLine profile name : SMARTOLT_FLEXIBLE_GPON\nMapping mode :802.1p PRI\nService profile ID : 34\nService profile name : HS8545M\nRing check switch : Enable\nRing port auto-shutdown : Enable\nHistory:\nIndex : 10\nUpTime : 2019-02-15 07:50:02+08:00\nIndex : 9\nUpTime : 2019-02-15 07:46:20+08:00\nDownTime : 2019-02-15 07:49:01+08:00\nDownCause : PowerFail\nIndex : 8\nUpTime : 2019-02-14 17:55:00+08:00\nDownTime : 2019-02-15 06:49:58+08:00\nDownCause : PowerFail\nIndex : 7\nUpTime : 2019-02-14 01:24:53+08:00\nDownTime : 2019-02-14 17:54:46+08:00\nDownCause : ONT LOSi/LOBi alarm\nIndex : 6\nUpTime : 2019-02-10 22:20:26+08:00\nDownTime : 2019-02-14 01:24:00+08:00\nDownCause : PowerFail\nIndex : 5\nUpTime : 2019-02-07 09:44:07+08:00\nDownTime : 2019-02-10 19:38:31+08:00\nDownCause : PowerFail\nIndex : 4\nUpTime : 2019-02-02 02:36:32+08:00\nDownTime : 2019-02-07 09:42:48+08:00\nDownCause : PowerFail\nIndex : 3\nUpTime : 2019-02-01 21:50:01+08:00\nDownTime : 2019-02-02 02:35:33+08:00\nDownCause : PowerFail\nIndex : 2\nUpTime : 2019-01-27 16:48:24+08:00\nDownTime : 2019-02-01 21:48:58+08:00\nDownCause : PowerFail\nIndex : 1\nUpTime : 2019-01-26 22:16:42+08:00\nDownTime : 2019-01-27 16:28:00+08:00\nDownCause : PowerFail\nIndex : 1\nName : 1_INTERNET_R_VID_20\nService type : Internet\nConnection type : IP routed\nIPv4 Connection status : Connected\nIPv4 access type : PPPoE\nIPv4 address : 10.13.1.178\nSubnet mask : 255.255.255.255\nDefault gateway : 192.168.38.1\nManage VLAN : 20\nManage priority : 0\nMAC address : 0087-C6AA-082A\nIPv4 switch : Enable\nIPv6 Connection status : Invalid\nInterfaces status:\nONT-ID ONT Port type Speed(Mbps) Duplex LinkState RingStatus\n0 1 GE - - down noloop \n0 2 FE - - down noloop \n0 3 FE - - down noloop \n0 4 FE - - down noloop \nVoIP status:\nOnline MACs on this ONU:\nSRVPort TYPE MAC MAC TYPE F /S /P ONTID VCI VLAN ID\n4 - gpon 0007-c49a-083a dynamic 0 /1 /2 0 1 20\n"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU running config by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_running_config/{onu_external_id}Gets the ONU running config from the OLT for a specified ONU unique external ID.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT wasn't able to process the command
- ONU is saved for later authorization and doesn't have status info yet
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_running_config/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"running_config": "\n[MA5800V100R017: 5800]\n[gpon]\n <gpon-0/1>\n interface gpon 0/1\n ont add 2 0 sn-auth \"485754439999999B\" omci ont-lineprofile-id 1 ont-srvprofile-id 34 desc \"ONU_Customer_Name_zone_Zone_1_descr__authd_20181219\" \n[bbs-config]\n <bbs-config>\n service-port 4 vlan 20 gpon 0/1/2 ont 0 gemport 1 multi-service user-vlan 20 tag-transform translate inbound traffic-table index 12 outbound traffic-table index 34\n\nService-ports on this ONU:\n\n service-port 4 vlan 20 gpon 0/1/2 ont 0 gemport 1 multi-service user-vlan 20 tag-transform translate inbound traffic-table index 12 outbound traffic-table index 34\n\n"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU signal graph by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_signal_graph/{onu_external_id}/{graph_type}Gets the ONU signal graph for a specified ONU unique external ID.
The graph_type can be:
- hourly
- daily
- weekly
- monthly
- yearly
The response consists of:
- Graph png image
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- ONU doesn't have signal graph yet
You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:
PHP
header("Content-type: image/png");
echo $response_graph;
HTML
img src="link_to_your_method_where_you_call_the_api" alt="hourly signal not yet generated"Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
graph_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_signal_graph/{onu_external_id}/{graph_type}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
Graph image403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU traffic graph by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_traffic_graph/{onu_external_id}/{graph_type}Gets the ONU traffic graph for a specified ONU unique external ID.
The graph_type can be:
- hourly
- daily
- weekly
- monthly
- yearly
The response consists of:
- Graph png image
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- ONU doesn't have traffic graph yet
You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:
PHP
header("Content-type: image/png");
echo $response_graph;
HTML
img src="link_to_your_method_where_you_call_the_api" alt="hourly traffic not yet generated"Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
graph_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_traffic_graph/{onu_external_id}/{graph_type}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
Graph image403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU speed profiles by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_speed_profiles/{onu_external_id}Get ONU speed profiles for a specified ONU unique external ID.
The response consists of:
- ONU upload speed profile name
- ONU download speed profile name
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_speed_profiles/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"upload_speed_profile_name": "10M",
"download_speed_profile_name": "50M"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}Get ONU router hosts by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_router_hosts/{onu_external_id}Returns the list of LAN hosts (connected devices) currently seen by the ONU's router, read live from the CPE over TR-069.
๐ก Performs real-time data collection directly from the OLT
๐ง Designed for LIVE debugging and troubleshooting only
๐ซ DO NOT call this endpoint every time your CRM loads a page
โ Restrictions๐ซ DO NOT use this endpoint in:
- automated polling scripts
- monitoring loops
- bulk data collection jobs
๐ซ DO NOT call this endpoint repeatedly for multiple ONUs
Use get_onu_router_hosts only when:
- actively debugging a specific ONU
- investigating a real-time issue reported by a user
Only one call at a time: This endpoint allows a single in-flight request at once. If another call to it is already being processed, further calls return HTTP 429 with error_code: already_a_request_in_progress โ wait for the running call to finish before retrying.
The ONU must be online and TR-069 must be enabled and integrated on it; otherwise the device is treated as offline and the call fails.
Success response (status: true) contains response.hostlist, an object keyed by host index. Each host is the raw TR-069 Hosts.Host entry (fields such as HostName, IPAddress, MACAddress, Active, AddressSource, Layer2Interface, ...); available fields depend on the CPE.
Error codes (error_code in the {status:false, error, error_code} body):
specify_field(400) โ noonu_external_idsupplied.specify_valid_field(400) โ no ONU matches the supplied id.already_a_request_in_progress(429) โ another call to this endpoint is already running; retry after it completes.tr069_unable_to_process_command(400) โ TR-069 not enabled/integrated on the ONU, or the device is offline / did not respond.forbidden(403) โ id is outside your restriction group, or the OLT subscription is not valid.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_router_hosts/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": {
"hostlist": {
"1": {
"HostName": "android-a1b2c3d4",
"IPAddress": "192.168.1.20",
"MACAddress": "AA:BB:CC:DD:EE:01",
"Active": "true",
"AddressSource": "DHCP",
"Layer2Interface": "WiFi.SSID.1"
},
"2": {
"HostName": "desktop-pc",
"IPAddress": "192.168.1.21",
"MACAddress": "AA:BB:CC:DD:EE:02",
"Active": "true",
"AddressSource": "DHCP",
"Layer2Interface": "Ethernet.1"
}
}
},
"response_code": "success",
"status": true
}400400 - Device offline / TR-069 not availableโ
{
"status": false,
"error": "The device is offline or could not process the command.",
"error_code": "tr069_unable_to_process_command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Please specify a valid ONU external ID",
"error_code": "specify_valid_field"
}429429 - Another request already in progressโ
{
"status": false,
"error": "There's already a request in progress, please try again later",
"error_code": "already_a_request_in_progress"
}Get ONU MAC addresses by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/get_onu_macs/{onu_external_id}Gets the MAC addresses that the OLT learned behind one ONU, for a specified ONU unique external ID.
๐ก This endpoint reads the data directly from the OLT. A call can take up to about 35 seconds. Use it for one ONU at a time.
Each MAC address has 12 lowercase hexadecimal characters with no separators, for example a4b1c2d3e4f5.
The response has verified: true only when the OLT answered. An empty mac_addresses list then means that the ONU has no MAC addresses. If the OLT did not answer, you get an error, not an empty list.
It returns a 400 error code when:
- no ONU was found for the provided ONU external ID
- the OLT is unreachable (error code
olt_unreachable) - the OLT model does not support this read (error code
olt_script_not_available) - the OLT did not accept the command (error code
olt_unable_to_process_command)
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_onu_macs/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"onu_external_id": "ext-1001",
"onu_id": 1001,
"olt_id": 1,
"verified": true,
"mac_addresses": [
"a4b1c2d3e4f5",
"001122aabbcc"
],
"total": 2,
"status": true,
"response_code": "success"
}400400 - OLT unreachableโ
{
"status": false,
"error": "OLT unreachable",
"error_code": "olt_unreachable"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Search ONU by MAC address
https://{subdomain}.smartolt.com/api/onu/search_by_macFinds the ONU behind which the OLT learned a MAC address. This endpoint reads the data directly from the OLTs.
Limits (for your SmartOLT account, not for each API key):
- With
olt_id: one search every 10 seconds, and up to 100 searches per hour. - Without
olt_id(all OLTs): one search every 60 seconds, and up to 10 searches per hour. The search can take up to about 4 minutes. - Only one search of each type can run at a time.
- When you are over a limit, you get HTTP 429 with a
Retry-Afterheader.
How to read the result
verifiedistrueonly when all searched OLTs answered. If it isfalseandmatchesis empty, the MAC address can still be on an OLT that did not answer.oltsshows the result for each OLT:answered,skipped_unreachable,deadline,vendor_not_supported,subscription_expiredor another failure.matched_in_smartoltisfalsewhen the OLT has the MAC address on an ONU that is not in SmartOLT.restrictedistruewhen your API key cannot see that ONU. The ONU position is thennull.
Only Huawei, ZTE and FiberHome OLTs are supported.
It returns a 400 error code when:
- no MAC address was provided (error code
specify_mac_address) - the MAC address is not valid (error code
specify_valid_mac_address) - the OLT vendor is not supported (error code
olt_vendor_not_supported) - the OLT with the provided
olt_iddid not answer (error codeolt_unreachable)
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
mac_string | query | Yes | a4:b1:c2:d3:e4:f5 | (String) The MAC address to find. You can use |
olt_integer | query | No | 1 | (Int) The ID of the OLT to search. Leave it empty to search all OLTs. A search of all OLTs is slower and has a lower limit. |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/search_by_mac?mac_address=a4%3Ab1%3Ac2%3Ad3%3Ae4%3Af5&olt_id=1' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OK (one OLT)โ
{
"mac_address": "a4b1c2d3e4f5",
"verified": true,
"olts_queried": 1,
"olts_answered": 1,
"olts": [
{
"olt_id": 1,
"olt_name": "OLT-A",
"status": "answered"
}
],
"matches": [
{
"olt_id": 1,
"olt_name": "OLT-A",
"mac_address": "a4b1c2d3e4f5",
"pon_type": "gpon",
"frame": 0,
"board": 0,
"port": 5,
"onu": 15,
"vlan": 100,
"restricted": false,
"matched_in_smartolt": true,
"onu_id": 1001,
"onu_external_id": "ext-1001",
"sn": "HWTC00000015"
}
],
"total": 1,
"status": true,
"response_code": "success"
}200200 - OK (all OLTs, one did not answer)โ
{
"mac_address": "a4b1c2d3e4f5",
"verified": false,
"olts_queried": 2,
"olts_answered": 1,
"olts": [
{
"olt_id": 1,
"olt_name": "OLT-A",
"status": "answered"
},
{
"olt_id": 2,
"olt_name": "OLT-B",
"status": "skipped_unreachable"
}
],
"matches": [],
"total": 0,
"status": true,
"response_code": "success"
}400400 - Invalid MAC addressโ
{
"status": false,
"error": "Please specify a valid MAC",
"error_code": "specify_valid_mac_address"
}429429 - Too many searchesโ
{
"status": false,
"error": "MAC search can run at most once every 60s. Retry in 42s.",
"error_code": "mac_search_fanout_min_interval"
}Save OLTs config
https://{subdomain}.smartolt.com/api/system/save_configThe request returns succesfully if the OLTs config was saved successfully.
It returns a 400 error code when:
- OLT was unable to process the command
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/system/save_config' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "OLTs config saved"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get all ONU authorization presets by OLT unique ID
https://{subdomain}.smartolt.com/api/onu/get_authorization_presetsReturns all ONU authorization presets for a specified OLT unique ID.
What the response tells you
criteria is what the preset matches on. applies is what it will configure:
- Names, not ids, for zone / splitter / ONU type / speed profiles / template.
odb_port_modeโnullif the preset sets no splitter,"none"if it attaches the ONU to the splitter without a port,"auto"if a free port is picked at authorization time. A preset inautomode rejects a caller-suppliedodb_port; one innonemode accepts it.sets_tr069,sets_wifi,sets_wan,sets_web_credentials,sets_mgmt_ipโ booleans only. The underlying credentials, WiFi config and PPPoE password are never selected by this query, so they cannot leak through this endpoint. Each flag mirrors the condition the matching apply step actually uses, so atruemeans the step will really run.
Presets are filtered by the API key's zone and VLAN restrictions: one pointing at a zone or
VLAN outside your scope is dropped rather than disclosing its name or id.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | query | Yes | {{olt_id}} | OLT ID |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_authorization_presets?olt_id={{olt_id}}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": {
"authorization_presets": [
{
"id": 31,
"name": "Residential FTTH",
"description": "Standard residential profile",
"olt_id": 90,
"is_default": false,
"criteria": {
"sn_pattern": "HWTC",
"board": "1",
"port": "0",
"pon_type": "gpon",
"channel_type": "gpon",
"onu_type_name": null
},
"applies": {
"vlan": 10,
"zone_name": "Downtown",
"odb_name": "ODB-Central-01",
"odb_port_mode": "auto",
"onu_type_name": null,
"fallback_onu_type_name": "110",
"upload_speed_name": "1G",
"download_speed_name": "100M",
"custom_template_name": null,
"mode": "Routing",
"name_pattern": "FTTH {sn}",
"comment_pattern": "{olt} b{board}/p{port}",
"sets_tr069": true,
"sets_wifi": true,
"sets_wan": true,
"sets_web_credentials": true,
"sets_mgmt_ip": true
}
},
{
"id": 32,
"name": "Bridged business",
"description": "",
"olt_id": 90,
"is_default": true,
"criteria": {
"sn_pattern": null,
"board": null,
"port": null,
"pon_type": "gpon",
"channel_type": "gpon",
"onu_type_name": null
},
"applies": {
"vlan": 25,
"zone_name": "Downtown",
"odb_name": null,
"odb_port_mode": null,
"onu_type_name": null,
"fallback_onu_type_name": "F670LV9.0",
"upload_speed_name": null,
"download_speed_name": null,
"custom_template_name": null,
"mode": "Bridging",
"name_pattern": null,
"comment_pattern": null,
"sets_tr069": false,
"sets_wifi": false,
"sets_wan": false,
"sets_web_credentials": false,
"sets_mgmt_ip": false
}
}
]
},
"response_code": "success",
"status": true
}400400 - Feature flag offโ
{
"status": false,
"error": "Invalid parameters: ONU authorization presets are not enabled for this instance.",
"error_code": "authorization_presets_not_enabled"
}Get all ONU authorization presets applicable to a specific ONU SN
https://{subdomain}.smartolt.com/api/onu/get_authorization_presetsReturns all ONU authorization presets for a specified OLT unique ID applicable to a specified ONU SN.
Applicability
Send any of sn, board, port and the response also scores each preset against that
ONU. Each preset then gains:
matchesโ the same accept/reject verdictauthorize_onuwill applymatch_scoreโ how specific the match is (nullwhenmatchesis false)
and the response gains best_match_preset_id โ the preset that would win.
Omit all three and those three fields are absent entirely, rather than guessed. Test for
their presence rather than for a falsy value.
Scoring: SN pattern +200; board and port +100; board or port alone +50; neither +1;
pon_type +10; ONU type +5. Ties break on the default preset, then the lowest id.
board and port must be non-negative integers; anything else is rejected withincorrect_field_value rather than silently scoring against a different subject.
What the response tells you
criteria is what the preset matches on. applies is what it will configure:
- Names, not ids, for zone / splitter / ONU type / speed profiles / template.
odb_port_modeโnullif the preset sets no splitter,"none"if it attaches the ONU to the splitter without a port,"auto"if a free port is picked at authorization time. A preset inautomode rejects a caller-suppliedodb_port; one innonemode accepts it.sets_tr069,sets_wifi,sets_wan,sets_web_credentials,sets_mgmt_ipโ booleans only. The underlying credentials, WiFi config and PPPoE password are never selected by this query, so they cannot leak through this endpoint. Each flag mirrors the condition the matching apply step actually uses, so atruemeans the step will really run.
Presets are filtered by the API key's zone and VLAN restrictions: one pointing at a zone or
VLAN outside your scope is dropped rather than disclosing its name or id.
Typical flow
Call this with the SN, board and port from the unconfigured list, takebest_match_preset_id, and pass it to authorize_onu.
Check applies on the chosen preset before building the authorize request โ every field
listed there must be omitted from your call, or it comes back asauthorization_preset_conflicting_parameter.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_string | query | Yes | {{olt_id}} | OLT ID |
snstring | query | No | {{sn}} | (String) SN of the ONU you intend to authorize. |
boardinteger | query | No | {{board}} | (Int) OLT board where the ONU is placed. |
portinteger | query | No | {{port}} | (Int) OLT PON port where ONU is placed. |
pon_string | query | No | gpon | (Optional, String) gpon | epon |
onu_string | query | No | 110 | (Optional, String) ONU type name |
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_authorization_presets?olt_id={{olt_id}}&sn={{sn}}&board={{board}}&port={{port}}&pon_type=gpon&onu_type=110' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": {
"authorization_presets": [
{
"id": 31,
"name": "Residential FTTH",
"description": "Standard residential profile",
"olt_id": 90,
"is_default": false,
"criteria": {
"sn_pattern": "HWTC",
"board": "1",
"port": "0",
"pon_type": "gpon",
"channel_type": "gpon",
"onu_type_name": null
},
"applies": {
"vlan": 10,
"zone_name": "Downtown",
"odb_name": "ODB-Central-01",
"odb_port_mode": "auto",
"onu_type_name": null,
"fallback_onu_type_name": "110",
"upload_speed_name": "1G",
"download_speed_name": "100M",
"custom_template_name": null,
"mode": "Routing",
"name_pattern": "FTTH {sn}",
"comment_pattern": "{olt} b{board}/p{port}",
"sets_tr069": true,
"sets_wifi": true,
"sets_wan": true,
"sets_web_credentials": true,
"sets_mgmt_ip": true
},
"matches": true,
"match_score": 310
},
{
"id": 32,
"name": "Bridged business",
"description": "",
"olt_id": 90,
"is_default": true,
"criteria": {
"sn_pattern": null,
"board": null,
"port": null,
"pon_type": "gpon",
"channel_type": "gpon",
"onu_type_name": null
},
"applies": {
"vlan": 25,
"zone_name": "Downtown",
"odb_name": null,
"odb_port_mode": null,
"onu_type_name": null,
"fallback_onu_type_name": "F670LV9.0",
"upload_speed_name": null,
"download_speed_name": null,
"custom_template_name": null,
"mode": "Bridging",
"name_pattern": null,
"comment_pattern": null,
"sets_tr069": false,
"sets_wifi": false,
"sets_wan": false,
"sets_web_credentials": false,
"sets_mgmt_ip": false
},
"matches": true,
"match_score": 11
}
],
"best_match_preset_id": 31
},
"response_code": "success",
"status": true
}400400 - Board is not an integerโ
{
"status": false,
"error": "Invalid parameters: Invalid value for board",
"error_code": "incorrect_field_value"
}Authorize ONU using an authorization preset
https://{subdomain}.smartolt.com/api/onu/authorize_onuAuthorizes an ONU using an authorization preset.
Identify the preset by authorization_preset_id (preferred) or authorization_preset_name.
Send both and they must agree โ names are compared case-insensitively, and a duplicated name
returns ambiguous_authorization_preset_name.
olt_id, pon_type and sn are always required. pon_type is validated before the
preset is resolved, so an invalid one reports incorrect_pon_type even if the preset id is
also wrong.
Online vs offline
Send board and port and the ONU is configured on the OLT immediately (online) โ expect
this call to take tens of seconds. Omit them and the ONU is recorded for configuration when it
appears (offline).
A preset carrying TR-069, management-IP or web-credential settings only applies those fully
on the online path โ they need a provisioned ONU. An offline call still returns success
while applying just the parts that do not require one. WiFi and WAN settings are stored
either way.
Fields the preset leaves open
Anything the preset does not set may be supplied and is validated normally โ typicallyname, address_or_comment, contact, onu_external_id, latitude, longitude, and any ofvlan / cvlan / svlan / zone / odb / odb_port / speed profiles / custom_profile /onu_type the preset happens to leave open.
If the preset auto-detects the ONU type, supply onu_type โ your value wins over the preset's
fallback type. With neither, the call fails with specify_onu_type.
Preset zones are access-checked
A preset that would place the ONU into a zone (or onto an splitter in a zone) outside a restricted
key's scope is refused with 403 / forbidden, exactly as a caller-supplied zone would be.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | body | Yes | 90 | (Int) The ID of the OLT on which the ONU should be authorized |
pon_string | body | Yes | gpon | (String) ONU PON type. Allowed values: gpon, epon |
snstring | body | Yes | HWTC12345678 | (String) ONU SN |
authorization_integer | body | Yes | 31 | (Int) The ID of the authorization preset to apply |
authorization_string | body | No | Residential FTTH | Optional alongside the preset ID - if sent, the two must refer to the same authorization preset |
boardinteger | body | No | 1 | (Int) OLT board where the ONU is placed. Leave it empty if you don't know yet |
portinteger | body | No | 0 | (Int) OLT PON port where ONU is placed. Leave it empty if you don't know yet |
onu_string | body | No | SUB-00042 | (String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/authorize_onu' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode olt_id=90 \
--data-urlencode pon_type=gpon \
--data-urlencode sn=HWTC12345678 \
--data-urlencode authorization_preset_id=31 \
--data-urlencode 'authorization_preset_name=Residential FTTH' \
--data-urlencode board=1 \
--data-urlencode port=0 \
--data-urlencode onu_external_id=SUB-00042
Saved responses
200200 - OKโ
{
"response": "ONU configuration saved",
"response_code": "success",
"status": true
}400400 - A parameter was sent that this preset already setsโ
{
"status": false,
"error": "Invalid parameters: The authorization preset already sets vlan. Remove it from the request or use a preset that does not set it.",
"error_code": "authorization_preset_conflicting_parameter"
}400400 - ONU doesn't match the preset's criteriaโ
{
"status": false,
"error": "Invalid parameters: This ONU does not match the authorization preset criteria.",
"error_code": "onu_does_not_match_authorization_preset"
}Authorize ONU
https://{subdomain}.smartolt.com/api/onu/authorize_onuAuthorizes an ONU on the provided OLT. If board or port are left empty then the ONU is saved for later authorization. The ONU type name must be one defined in SmartOLT ONU Types section.
The request returns succesfully if the ONU was authorized successfully.
It returns a 400 error code when:
- no OLT ID was provided
- no OLT was found for the provided OLT ID
- no ONU PON type or a wrong ONU PON type was provided
- no ONU SN/MAC was provided
- the SN/MAC is in the wrong format
- no VLAN-ID was provided
- no ONU type was provided
- no ONU type was found for the provided ONU type name
- no Zone was provided
- the Zone is in the wrong format
- the ODB (Splitter) is in the wrong format
- no Name was provided
- the Name is in the wrong format
- the Address or Comment is in the wrong format
- no ONU mode or a wrong ONU mode was provided
- the Custom profile is in the wrong format
- the ONU external ID is in the wrong format
- the ONU external ID is already existing
- OLT was unable to process the command
The following messages are 400 error code messages examples and may vary in future versions:
- ONU authorization in progress by other user
- The selected VLAN was removed or you have a restriction on using it
- PON port is full or the board/port is incorrect. Please delete unused ONUs from this PON port in order to add new ones or enter the correct board/port.
- PON port is full or the board/port or GPON channel (G/XG/XGS) is incorrect. Please delete unused ONUs from this PON port in order to add new ones or enter the correct board/port.
- The OLT is not responding to SNMP queries
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | body | Yes | 1 | (Int) The ID of the OLT on which the ONU should be authorized |
pon_string | body | Yes | gpon | (String) ONU PON type. Allowed values: gpon, epon |
gpon_string | body | No | gpon | (String) GPON channel. Allowed values: gpon, xgpon, xgspon |
epon_string | body | No | epon | (String) EPON channel. Allowed values: epon, 10gepon |
boardinteger | body | No | 2 | (Int) OLT board where the ONU is placed. Leave it empty if you don't know yet |
portinteger | body | No | 3 | (Int) OLT PON port where ONU is placed. Leave it empty if you don't know yet |
snstring | body | Yes | ZTEGC7E230E4 | (String) ONU SN |
onu_string | body | Yes | ZTE-F660V6.0 | (String) ONU type |
custom_string | body | No | โ | (String) Custom profile - THIS IS NOT THE SPEED PROFILE (the default speed profiles will be used, if you wish to change them you will need to make a separate API call after authorization). The custom profile name should not contain whitespaces |
onu_string | body | Yes | Routing | (String) ONU mode. Allowed values: Routing, Bridging |
cvlaninteger | body | No | 101 | (Int) ONU CVLAN-ID |
svlaninteger | body | No | 102 | (Int) ONU SVLAN-ID |
tag_string | body | No | translate | (String) Tag-transform mode. Allowed values: default, translate, translate-and-add |
use_integer | body | No | 1 | (Int) Use "other-all" TLS VLAN. Allowed values: 0, 1 |
vlaninteger | body | No | 100 | (Int) ONU VLAN-ID. If not specified, the default VLAN-ID for this PON port is used. If there is no default VLAN-ID defined, this parameter is required |
zonestring | body | Yes | City Centre | (String) The zone where the ONU is located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character |
odbstring | body | No | Splitter325 | (String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character |
namestring | body | Yes | John Doe | (String) Name. The Name can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_ |
address_string | body | No | Avenue 9 | (String) Address or comment. The Address or Comment can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_ |
onu_string | body | No | test | (String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters |
upload_string | body | No | 50M | (String) Upload speed profile name |
download_string | body | No | 100M | (String) Download speed profile name |
sectorstring | body | No | North Branch | (String) Sector name, optional. Create sectors in the SmartOLT interface first, under Settings โ Sectors. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/authorize_onu' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode olt_id=1 \
--data-urlencode pon_type=gpon \
--data-urlencode gpon_channel=gpon \
--data-urlencode epon_channel=epon \
--data-urlencode board=2 \
--data-urlencode port=3 \
--data-urlencode sn=ZTEGC7E230E4 \
--data-urlencode onu_type=ZTE-F660V6.0 \
--data-urlencode onu_mode=Routing \
--data-urlencode cvlan=101 \
--data-urlencode svlan=102 \
--data-urlencode tag_transform_mode=translate \
--data-urlencode use_other_all_tls_vlan=1 \
--data-urlencode vlan=100 \
--data-urlencode 'zone=City Centre' \
--data-urlencode odb=Splitter325 \
--data-urlencode 'name=John Doe' \
--data-urlencode 'address_or_comment=Avenue 9' \
--data-urlencode onu_external_id=test \
--data-urlencode upload_speed_profile_name=50M \
--data-urlencode download_speed_profile_name=100M \
--data-urlencode 'sector=North Branch'
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU configuration saved"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU SN"
}Move ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/move/{onu_external_id}Move ONU for a specified ONU unique external ID
The request returns succesfully if the ONU was moved successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no OLT ID was provided
- no OLT was found for the provided OLT ID
- no board was provided
- the provided board does not exist on the provided OLT
- no port was provided
- the provided port does not exist on the provided OLT board
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
olt_integer | body | Yes | 1 | (Int) The OLT ID to which the ONU will be moved |
boardinteger | body | Yes | 1 | (Int) The board to which the ONU will be moved. It must be an existing board from the provided OLT |
portinteger | body | Yes | 2 | (Int) The port to which the ONU will be moved. It must be an existing port from the provided OLT board |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/move/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode olt_id=1 \
--data-urlencode board=1 \
--data-urlencode port=2
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU was moved"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - Specify the OLT IDโ
{
"status": false,
"error": "Invalid parameters: Please specify the OLT ID"
}400400 - The provided board does not exist on the provided OLTโ
{
"status": false,
"error": "Invalid parameters: Please specify a valid board from the OLT"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Update ONU PON channel by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_pon_channel/{onu_external_id}Update ONU PON channel for a specified ONU unique external ID
The request returns succesfully if the new ONU PON channel was saved successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
pon_string | body | Yes | xgpon | (String) PON channel. Allowed values: gpon, xgpon, xgspon, epon, 10gepon |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_pon_channel/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode pon_channel=xgpon
Saved responses
200200 - OKโ
{
"response": "GPON channel changed to XG-PON for ONU with ONU external ID test",
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU SN/MAC by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_sn/{onu_external_id}Update ONU SN/MAC for a specified ONU unique external ID
The request returns succesfully if the new ONU SN/MAC was saved successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no new SN/MAC was provided
- the SN/MAC is in the wrong format
- the SN/MAC is already assigned to another ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
new_string | body | Yes | ZTEGC7E230E7 | (String) New SN or MAC |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_sn/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode new_sn=ZTEGC7E230E7
Saved responses
200200 - OKโ
{
"status": true,
"response": "MAC/SN updated for ONU with ONU external ID test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Incorrect format for SN/MACโ
{
"status": false,
"error": "Invalid parameters: The SN field must contain 12 uppercase alphanumeric characters"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - Specify the new SN or MACโ
{
"status": false,
"error": "Invalid parameters: Please specify the new SN/MAC"
}Update ONU type by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/change_onu_type/{onu_external_id}Update ONU type for a specified ONU unique external ID
The request returns succesfully if the ONU type was changed successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no new ONU type was provided
- no ONU type was found with the given ONU type name
- the ONU type PON type is not compatible with the ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
onu_string | body | Yes | ZTE-F660V6.0 | (String) ONU type |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/change_onu_type/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onu_type=ZTE-F660V6.0
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU type changed for ONU with ONU external ID test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Specify the new ONU typeโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU type"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - No ONU type was found with the given nameโ
{
"status": false,
"error": "Invalid parameters: No ONU type was found with the name ZTE-G"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}Update ONU custom profile by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/change_custom_profile/{onu_external_id}Update ONU custom profile for a specified ONU unique external ID
The request returns succesfully if the ONU custom profile was changed successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no new ONU custom profile was provided
- no ONU custom profile was found with the given custom profile name
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
custom_string | body | Yes | Generic_1 | (String) Custom profile name |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/change_custom_profile/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode custom_profile=Generic_1
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU custom profile changed for ONU with ONU external ID test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Get ONU configuration presets
https://{subdomain}.smartolt.com/api/onu/get_configuration_presetsList every configuration preset the API key can see.
Presets are returned in OLT-then-name order. Only presets belonging to OLTs the key has access to are included. Deleted presets, and presets whose OLT has been deleted, are never returned.
A configuration preset is a reusable set of ONU settings defined per OLT (optionally narrowed to a board/port). Applying a preset writes those settings to the ONU and pushes them to the OLT. A preset marked as reversible records what it changed, so it can later be removed and the previous values restored. A non-reversible (one-time) preset is applied once and previous values cannot be restored.
Optional query parameter
olt_idโ return only the presets belonging to that OLT.
Fields
board/portโnullwhen the preset applies to the whole OLT, otherwise the board/port it is narrowed to.is_reversibleโ reversible presets can be removed later (remove_configuration_preset) and are reported inapplied_configuration_preset. One-time presets apply their settings and keep no record.enforced_settingsโ the setting groups this preset governs, each as{key, rows}in a canonical order (e.g.main_vlan,catv,tr069).rowsare RESOLVED display lines โ{label, value}with IDs turned into names (VLAN, speed profile, TR-069 profile). A group can expand to several rows (e.g.tr069โ mode, profile, interface). Secrets (WiFi/PPPoE/web passwords) are never read or returned.
Example request
curl --request GET \
--url 'https://{subdomain}.smartolt.com/api/onu/get_configuration_presets' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": {
"configuration_presets": [
{
"id": 2,
"name": "Residential",
"description": "",
"olt_id": 10,
"olt_name": "Huawei",
"board": null,
"port": null,
"is_reversible": false,
"enforced_settings": [
{
"key": "catv",
"rows": [
{
"label": "CATV",
"value": "Disabled"
}
]
},
{
"key": "tr069",
"rows": [
{
"label": "TR-069 mode and profile",
"value": "Enabled"
},
{
"label": "TR069 Profile",
"value": "SmartOLT"
},
{
"label": "Interface",
"value": "Mgmt IP interface"
}
]
}
]
},
{
"id": 3,
"name": "test",
"description": "",
"olt_id": 10,
"olt_name": "Huawei",
"board": null,
"port": null,
"is_reversible": false,
"enforced_settings": [
{
"key": "main_vlan",
"rows": [
{
"label": "Main VLAN",
"value": "VLAN 10"
}
]
}
]
},
{
"id": 4,
"name": "test 2",
"description": "",
"olt_id": 10,
"olt_name": "Huawei",
"board": null,
"port": null,
"is_reversible": true,
"enforced_settings": [
{
"key": "onu_mode",
"rows": [
{
"label": "ONU mode",
"value": "Routing"
}
]
}
]
},
{
"id": 7,
"name": "test one time",
"description": "",
"olt_id": 90,
"olt_name": "ZTE",
"board": null,
"port": null,
"is_reversible": false,
"enforced_settings": [
{
"key": "main_vlan",
"rows": [
{
"label": "Main VLAN",
"value": "VLAN 25"
}
]
}
]
},
{
"id": 5,
"name": "test preset",
"description": "",
"olt_id": 90,
"olt_name": "ZTE",
"board": null,
"port": null,
"is_reversible": true,
"enforced_settings": [
{
"key": "main_vlan",
"rows": [
{
"label": "Main VLAN",
"value": "VLAN 20"
}
]
},
{
"key": "catv",
"rows": [
{
"label": "CATV",
"value": "Disabled"
}
]
}
]
}
]
},
"status": true,
"response_code": "success"
}Apply configuration preset to an ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/apply_configuration_preset/{onu_external_id}Applies a configuration preset to the ONU and pushes the resulting configuration to the OLT.
Runs synchronously and returns the final outcome. If the OLT push fails, the preset application is rolled back automatically and the error is returned.
Identify the preset by configuration_preset_id or configuration_preset_name (at least one required). If you send both and they point at different presets the request is rejected with configuration_preset_id_name_mismatch.
The preset is always resolved against the presets applicable to this ONU, so a preset belonging to a different OLT/board/port is rejected with configuration_preset_not_applicable.
Path parameters
| Parameter | Required | Description |
|---|---|---|
onu_external_id | yes | The ONU external ID |
Body parameters (application/x-www-form-urlencoded)
| Parameter | Required | Description |
|---|---|---|
configuration_preset_id | one of the two | ID of an applicable preset |
configuration_preset_name | one of the two | Name of an applicable preset |
Errors
configuration_preset_id_or_name_required, configuration_preset_not_applicable, configuration_preset_id_name_mismatch, onu_busy (409), plus any OLT error returned while pushing the configuration.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
configuration_string | body | No | Residential | Required if configuration_preset_id is not sent. Name of an applicable preset. |
configuration_string | body | No | 5 | Required if configuration_preset_name is not sent. ID of an applicable preset. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/apply_configuration_preset/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode configuration_preset_name=Residential \
--data-urlencode configuration_preset_id=5
Saved responses
200200 - OKโ
{
"response": "ONU configuration preset applied",
"response_code": "success",
"status": true
}400400 - Preset not applicable to this ONUโ
{
"status": false,
"error": "Invalid parameters: The specified configuration preset does not exist or is not applicable to this ONU.",
"error_code": "configuration_preset_not_applicable"
}409409 - ONU busyโ
{
"status": false,
"error": "This ONU has another operation in progress; please try again shortly.",
"error_code": "onu_busy"
}Remove configuration preset from an ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/remove_configuration_preset/{onu_external_id}Removes the configuration preset currently applied to the ONU, restoring the settings that were in place before it was applied, and pushes the result to the OLT.
Runs synchronously and returns the final outcome.
There is no preset parameter: the endpoint operates on whichever preset is currently applied on the ONU. If the ONU has no applied preset โ or the applied preset was a one-time (non-reversible) preset, which by definition cannot be undone โ the call returns preset_application_not_found.
Path parameters
| Parameter | Required | Description |
|---|---|---|
onu_external_id | yes | The ONU external ID |
Errors
preset_application_not_found, onu_busy (409), plus any OLT error returned while pushing the configuration.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/remove_configuration_preset/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"response": "ONU configuration preset reversed",
"response_code": "success",
"status": true
}400400- Nothing to removeโ
{
"status": false,
"error": "Invalid parameters: This ONU has no configuration preset applied that can be removed.",
"error_code": "preset_application_not_found"
}Apply configuration preset on multiple ONUs by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_apply_configuration_presetApplies a configuration preset to several ONUs in one call.
This endpoint is asynchronous. It validates each ONU, queues the work as a batch action and returns immediately โ the response tells you what was accepted, not what the OLT did.
The response is a list keyed by ONU external id. Accepted ONUs report that the action is being processed; every other ONU carries the reason it was skipped. Duplicate ids in one call are collapsed, and an ONU that already has this action queued is not queued twice.
Per-ONU skip reasons include: preset not applicable to that ONU, the ONU already has a preset applied, and an action already queued for it.
Body parameters (application/x-www-form-urlencoded)
| Parameter | Required | Description |
|---|---|---|
onus_external_ids | yes | Comma separated ONU external IDs, maximum 10 000 |
configuration_preset_id | one of the two | ID of the preset to apply |
configuration_preset_name | one of the two | Name of the preset to apply โ resolved per ONU |
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | ONU001,ONU002,ONU003 | (String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed |
configuration_string | body | No | Residential | Required if configuration_preset_id is not sent. Only matches ONUs on the preset's own OLT/board/port. |
configuration_string | body | No | 5 | Required if configuration_preset_name is not sent. Only matches ONUs on the preset's own OLT/board/port. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_apply_configuration_preset' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=ONU001,ONU002,ONU003 \
--data-urlencode configuration_preset_name=Residential \
--data-urlencode configuration_preset_id=5
Saved responses
200200 - OKโ
{
"response": {
"ONU001": "The configuration preset action was queued and is being processed.",
"ONU002": "A configuration preset action is already queued for this ONU.",
"ONU003": "The specified configuration preset does not exist or is not applicable to this ONU.",
"ONU004": "This ONU already has an active configuration preset. Remove it before applying another."
},
"response_code": "success",
"status": true
}Remove configuration preset from multiple ONUs by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_remove_configuration_presetRemoves the currently applied configuration preset from several ONUs in one call, restoring each ONU's previous settings.
This endpoint is asynchronous. It validates each ONU, queues the work as a batch action and returns immediately โ the response tells you what was accepted, not what the OLT did.
The response is a list keyed by ONU external id. Accepted ONUs report that the action is being processed; every other ONU carries the reason it was skipped. Duplicate ids in one call are collapsed, and an ONU that already has this action queued is not queued twice.
Per-ONU skip reasons include: no preset applied to reverse, an action already queued, and an application still mid-apply/mid-reverse.
Body parameters (application/x-www-form-urlencoded)
| Parameter | Required | Description |
|---|---|---|
onus_external_ids | yes | Comma separated ONU external IDs, maximum 10 000 |
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | ONU001,ONU002 | (String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_remove_configuration_preset' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=ONU001,ONU002
Saved responses
200200 - OKโ
{
"response": {
"ONU001": "The configuration preset action was queued and is being processed.",
"ONU002": "This ONU has no configuration preset applied that can be removed."
},
"response_code": "success",
"status": true
}Check configuration preset task status
https://{subdomain}.smartolt.com/api/onu/check_configuration_preset_task_statusCheck how the queued configuration-preset work is going, detailed per ONU.
Reports the most recent preset task row for each ONU โ apply or remove, whichever happened last โ so it answers both "is my bulk request still running" and "what happened to it".
status values
| value | meaning |
|---|---|
queued | accepted, not picked up by a worker yet |
in_progress | a worker is running it now |
retrying | an attempt failed; more attempts remain (up to 4) |
failed | out of attempts, or the batch action was stopped, or its task is no longer running |
succeeded | completed successfully |
no_task | the ONU exists but has no preset task on record |
onu_not_found | no ONU with that external id is visible to this API key |
Other fields (absent for no_task / onu_not_found)
actionโapplyorremove.attemptsโ attempts made so far.date_start/date_endโnulluntil the worker starts / finishes an attempt.error_messageโ the error from the last failed attempt, passed through from the OLT where there was one. Alwaysnullforsucceeded.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | ONU001,ONU002 | (String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/check_configuration_preset_task_status' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=ONU001,ONU002
Saved responses
200200 - OKโ
{
"response": {
"NOSUCHONU": {
"status": "onu_not_found"
},
"ONU001": {
"status": "succeeded",
"action": "apply",
"attempts": 1,
"date_start": "2026-07-22 16:59:41",
"date_end": "2026-07-22 17:00:12",
"error_message": null
},
"ONU002": {
"status": "failed",
"action": "apply",
"attempts": 4,
"date_start": "2026-07-19 09:19:46",
"date_end": "2026-07-19 09:19:53",
"error_message": "OLT unreachable. Please check that the Telnet port TCP on OLT IP is open for connections."
}
},
"response_code": "success",
"status": true
}Update ONU location details by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_location_details/{onu_external_id}Update ONU location details for a specified ONU unique external ID
At least one parameter must be provided. Send only the parameters that you want to be updated. The zone names must be the ones defined in SmartOLT Zones section. The Splitter names must be the ones defined in SmartOLT Splitters section.
The request returns succesfully if the ONU location details were updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no parameters were provided
- the Zone is in the wrong format
- the Splitter is in the wrong format
- the Name is in the wrong format
- the Address or Comment is in the wrong format
- the Contact is in the wrong format
- the Latitude is in the wrong format
- the Longitude is in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
zonestring | body | No | City Centre | (String) The zone where the ONU is located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character |
odbstring | body | No | Splitter325 | (String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character |
odb_integer | body | No | 5 | (Int) Splitter port |
namestring | body | No | John Doe | (String) Name. The Name can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_ |
address_string | body | No | Avenue 9 | (String) Address or comment. The Address or Comment can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_ |
contactstring | body | No | John Doe | (String) Contact. The Contact can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_ |
latitudestring | body | No | 52.5113340328893 | (String) Latitude |
longitudestring | body | No | 13.401282438647513 | (String) Longitude |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_location_details/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode 'zone=City Centre' \
--data-urlencode odb=Splitter325 \
--data-urlencode odb_port=5 \
--data-urlencode 'name=John Doe' \
--data-urlencode 'address_or_comment=Avenue 9' \
--data-urlencode 'contact=John Doe' \
--data-urlencode latitude=52.5113340328893 \
--data-urlencode longitude=13.401282438647513
Saved responses
200200 - OKโ
{
"status": true,
"response": "Location details updated for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please provide at least one parameter to update the ONU location details"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_unique_external_id/{onu_external_id}The request returns succesfully if the ONU unique external ID was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no new external ID was provided
- the new external ID is in the wrong format
- the new external ID is already assigned to another ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
onu_string | body | Yes | test | (String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onu_external_id=test
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU unique external id updated"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the new ONU external ID"
}Update ONU unique external ID by board, port, ONU number
https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_board_port_onuThe request returns succesfully if the ONU unique external ID was updated successfully.
It returns a 400 error code when:
- no OLT ID, board, port or ONU number was provided
- no ONU was found for the provided OLT ID, board, port or ONU number
- no new external ID was provided
- the new external ID is in the wrong format
- the new external ID is already assigned to another ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | body | Yes | 1 | (Int) The ID of the OLT where the ONU is placed |
boardinteger | body | Yes | 3 | (Int) OLT board where the ONU is placed |
portinteger | body | Yes | 3 | (Int) OLT PON port where ONU is placed |
onu_integer | body | Yes | 2 | (Int) OLT ONU number where ONU is placed |
onu_string | body | Yes | test | (String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_board_port_onu' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode olt_id=1 \
--data-urlencode board=3 \
--data-urlencode port=3 \
--data-urlencode onu_number=2 \
--data-urlencode onu_external_id=test
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU unique external id updated"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the new ONU external ID"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU unique external ID by SN
https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_snThe request returns succesfully if the ONU unique external ID was updated successfully.
It returns a 400 error code when:
- no SN was provided
- no ONU was found for the provided SN
- no new external ID was provided
- the new external ID is in the wrong format
- the new external ID is already assigned to another ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
olt_integer | body | Yes | 1 | (Int) The ID of the OLT where the ONU is placed |
snstring | body | Yes | ZTEGC7E230E4 | (String) ONU SN |
onu_string | body | Yes | test | (String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_sn' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode olt_id=1 \
--data-urlencode sn=ZTEGC7E230E4 \
--data-urlencode onu_external_id=test
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU unique external id updated"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the new ONU external ID"
}Update ONU attached VLANs by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_attached_vlans/{onu_external_id}Update ONU attached VLANs for a specified ONU unique external ID
At least one VLAN must be provided. The request returns succesfully if the ONU attached VLANs were updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VLAN was provided
- the VLAN lists are in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
add_string | body | No | 10,20 | (String) VLANs to be added, comma separated. The VLANs list can contain only digits and the comma (,) character |
remove_string | body | No | 33 | (String) VLANs to be removed, comma separated. The VLANs list can contain only digits and the comma (,) character |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_attached_vlans/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode add_vlans=10,20 \
--data-urlencode remove_vlans=33
Saved responses
200200 - OKโ
{
"status": true,
"response": "Attached VLANs updated for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please provide at least one VLAN to add/remove"
}Update ONU main VLAN-ID by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_main_vlan/{onu_external_id}Update ONU main VLAN-ID for a specified ONU unique external ID
The request returns succesfully if the ONU main VLAN-ID was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VLAN-ID was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
vlaninteger | body | Yes | 10 | (Int) ONU new main VLAN-ID |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_main_vlan/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode vlan=10
Saved responses
200200 - OKโ
{
"status": true,
"response": "Main VLAN-ID updated for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify ONU VLAN-ID"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU mode by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_onu_mode/{onu_external_id}Update ONU mode for a specified ONU unique external ID
The request returns succesfully if the ONU mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ONU mode was provided
- wrong ONU mode was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
onu_string | body | Yes | Routing | (String) ONU mode. Allowed values: Routing, Bridging |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_onu_mode/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onu_mode=Routing
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU mode updated for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Allowed values for ONU mode are 'Routing' or 'Bridging'"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU Mgmt IP mode to Inactive by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_inactive/{onu_external_id}Set ONU Mgmt IP mode to Inactive for a specified ONU unique external ID
The request returns succesfully if the ONU Mgmt IP mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_inactive/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Changed Mgmt IP mode to Inactive for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU Mgmt IP mode to Static IP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_static_ip/{onu_external_id}Set ONU Mgmt IP mode to Static IP for a specified ONU unique external ID
The request returns succesfully if the ONU Mgmt IP mode was updated successfully.
Possible combinations for setting Mgmt IP mode to Static IP through API:
- VLAN only (the system will autoassign an available IP address from the existing IP pools)
- VLAN + IP subnet (ex: 10.100.0.0/24)
- VLAN + IP address + subnet mask + gateway + dns1 + dns2
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VLAN-ID, IPv4 address, subnet mask, gateway, DNS1 was provided
- wrong VLAN-ID, IPv4 address, subnet mask, gateway, DNS1, DNS2 was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
vlaninteger | body | Yes | 100 | (Int) ONU Mgmt VLAN-ID |
cvlaninteger | body | No | 101 | (Int) ONU Mgmt CVLAN-ID |
svlaninteger | body | No | 102 | (Int) ONU Mgmt SVLAN-ID |
tag_string | body | No | translate | (String) Tag-transform mode. Allowed values: default, translate, translate-and-add |
ipv4_string | body | No | 10.100.0.11 or 10.100.0.0/24 | (String) IPv4 address or IP subnet (IP pool). The IPv4 address must be a valid IP address or a valid IP subnet (IP pool). The system will autoassign an available IP address from the existing IP pools, if this field is not specified. |
subnet_string | body | No | 255.255.255.0 | (String) Subnet mask. The Subnet mask must be a valid IP address |
gatewaystring | body | No | 10.100.0.1 | (String) Gateway. The Gateway must be a valid IP address |
dns1string | body | No | 8.8.8.8 | (String) DNS1. The DNS1 must be a valid IP address |
dns2string | body | No | 8.8.4.4 | (String) DNS2. The DNS2 must be a valid IP address |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_static_ip/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode vlan=100 \
--data-urlencode cvlan=101 \
--data-urlencode svlan=102 \
--data-urlencode tag_transform_mode=translate \
--data-urlencode 'ipv4_address=10.100.0.11 or 10.100.0.0/24' \
--data-urlencode subnet_mask=255.255.255.0 \
--data-urlencode gateway=10.100.0.1 \
--data-urlencode dns1=8.8.8.8 \
--data-urlencode dns2=8.8.4.4
Saved responses
200200 - OKโ
{
"status": true,
"response": "Changed Mgmt IP mode to Static IP for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU Mgmt IP mode to DHCP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_dhcp/{onu_external_id}Set ONU Mgmt IP mode to DHCP for a specified ONU unique external ID
The request returns succesfully if the ONU Mgmt IP mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VLAN-ID was provided
- wrong VLAN-ID was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
vlaninteger | body | Yes | 100 | (Int) ONU Mgmt VLAN-ID |
cvlaninteger | body | No | 101 | (Int) ONU Mgmt CVLAN-ID |
svlaninteger | body | No | 102 | (Int) ONU Mgmt SVLAN-ID |
tag_string | body | No | translate | (String) Tag-transform mode. Allowed values: default, translate, translate-and-add |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_dhcp/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode vlan=100 \
--data-urlencode cvlan=101 \
--data-urlencode svlan=102 \
--data-urlencode tag_transform_mode=translate
Saved responses
200200 - OKโ
{
"status": true,
"response": "Changed Mgmt IP mode to DHCP for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU TR069 by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_tr069/{onu_external_id}Enable ONU TR069 for a specified ONU unique external ID
The request returns succesfully if the ONU TR069 was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- TR069 feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
tr069_string | body | Yes | tr069_profile_name | (String) TR069 profile name |
tr069_string | body | No | mgmt | (String) The interface that carries the TR-069 session. Allowed values are 'wan', 'mgmt'. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_tr069/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode tr069_profile=tr069_profile_name \
--data-urlencode tr069_interface=mgmt
Saved responses
200200 - OKโ
{
"status": true,
"response": "TR069 profile enabled"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU TR069 by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_tr069/{onu_external_id}Disable ONU TR069 for a specified ONU unique external ID
The request returns succesfully if the ONU TR069 was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- TR069 feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
application/x-www-form-urlencodedapplication/x-www-form-urlencoded | body | No | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_tr069/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "TR069 profile disabled"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU VoIP mode to Disabled by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_voip_disabled/{onu_external_id}Set ONU VoIP mode to Disabled for a specified ONU unique external ID
The request returns succesfully if the ONU VoIP mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_voip_disabled/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Disabled VoIP connection for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU VoIP mode to Enabled by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_voip_enabled/{onu_external_id}Set ONU VoIP mode to Enabled for a specified ONU unique external ID
The request returns succesfully if the ONU VoIP mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
voip_string | body | No | WAN | (String) Attach VoIP to WAN or Mgmt |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_voip_enabled/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode voip_attach_to=WAN
Saved responses
200200 - OKโ
{
"status": true,
"response": "Enabled VoIP connection for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU VoIP port by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_onu_voip_port/{onu_external_id}Enable ONU VoIP port for a specified ONU unique external ID
The request returns succesfully if the ONU VoIP port was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VoIP port, phone number, password was provided
- wrong VoIP port, phone number, password was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
voip_string | body | Yes | pots_0/1 | (String) VoIP port |
voip_string | body | No | sip_profile | (String) VoIP profile name |
phone_string | body | Yes | 123654789 | (String) Phone number. The phone number can contain only digits and the + character. A maximum of 25 characters is allowed |
sip_string | body | No | 123654789 | (String) SIP userid. The SIP userid can contain only digits and the + character. A maximum of 25 characters is allowed |
passwordstring | body | Yes | pass | (String) Password. The password can contain only alphanumeric characters. A maximum of 25 characters is allowed |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_onu_voip_port/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode voip_port=pots_0/1 \
--data-urlencode voip_profile_name=sip_profile \
--data-urlencode phone_number=123654789 \
--data-urlencode sip_userid=123654789 \
--data-urlencode password=pass
Saved responses
200200 - OKโ
{
"status": true,
"response": "VoIP port pots_0/1 enabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU VoIP port by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_onu_voip_port/{onu_external_id}Disable ONU VoIP port for a specified ONU unique external ID
The request returns succesfully if the ONU VoIP port was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no VoIP port was provided
- wrong VoIP port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
voip_string | body | Yes | pots_0/1 | (String) VoIP port |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_onu_voip_port/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode voip_port=pots_0/1
Saved responses
200200 - OKโ
{
"status": true,
"response": "VoIP port pots_0/1 disabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN mode to Setup via ONU webpage by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_setup_via_onu_webpage/{onu_external_id}Set ONU WAN mode to Setup via ONU webpage for a specified ONU unique external ID
The request returns succesfully if the ONU WAN mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_setup_via_onu_webpage/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN mode updated to Setup via ONU webpage for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN mode to DHCP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_dhcp/{onu_external_id}Set ONU WAN mode to DHCP for a specified ONU unique external ID
The request returns succesfully if the ONU WAN mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
configuration_string | body | No | OMCI | (String) Configuration method. Allowed values are "OMCI", "TR069". |
ip_string | body | No | ipv4ipv6 | (String) IP protocol. Allowed values are "ipv4", ipv4ipv6". |
ipv6_string | body | No | None | (String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 address |
ipv6_string | body | No | โ | (String) IPv6 gateway |
ipv6_string | body | No | DHCPv6-PD | (String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 prefix address |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_dhcp/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode configuration_method=OMCI \
--data-urlencode ip_protocol=ipv4ipv6 \
--data-urlencode ipv6_address_mode=None \
--data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN mode updated to DHCP for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN mode to Static IP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_static_ip/{onu_external_id}Set ONU WAN mode to Static IP for a specified ONU unique external ID
The request returns succesfully if the ONU WAN mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no IPv4 address, subnet mask, gateway, DNS1 was provided
- wrong IPv4 address, subnet mask, gateway, DNS1, DNS2 was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ipv4_string | body | Yes | 10.100.0.11 | (String) IPv4 address. The IPv4 address must be a valid IP address |
subnet_string | body | Yes | 255.255.255.0 | (String) Subnet mask. The Subnet mask must be a valid IP address |
gatewaystring | body | Yes | 10.100.0.1 | (String) Gateway. The Gateway must be a valid IP address |
dns1string | body | Yes | 8.8.8.8 | (String) DNS1. The DNS1 must be a valid IP address |
dns2string | body | No | 8.8.4.4 | (String) DNS2. The DNS2 must be a valid IP address |
configuration_string | body | No | OMCI | (String) WAN configuration method. Allowed values are "OMCI", "TR069". |
ip_string | body | No | ipv4ipv6 | (String) IP protocol. Allowed values are "ipv4", ipv4ipv6". |
ipv6_string | body | No | None | (String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 address |
ipv6_string | body | No | โ | (String) IPv6 gateway |
ipv6_string | body | No | DHCPv6-PD | (String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 prefix address |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_static_ip/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ipv4_address=10.100.0.11 \
--data-urlencode subnet_mask=255.255.255.0 \
--data-urlencode gateway=10.100.0.1 \
--data-urlencode dns1=8.8.8.8 \
--data-urlencode dns2=8.8.4.4 \
--data-urlencode configuration_method=OMCI \
--data-urlencode ip_protocol=ipv4ipv6 \
--data-urlencode ipv6_address_mode=None \
--data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN mode updated to Static IP for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN mode to PPPoE by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_pppoe/{onu_external_id}Set ONU WAN mode to PPPoE for a specified ONU unique external ID
The request returns succesfully if the ONU WAN mode was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no username, password was provided
- wrong username, password was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
usernamestring | body | Yes | user | (String) PPPoE username. The username can contain only alphanumeric characters. A maximum of 64 characters is allowed |
passwordstring | body | Yes | pass | (String) PPPoE password. The password can contain only alphanumeric characters. A maximum of 64 characters is allowed |
configuration_string | body | No | OMCI | (String) WAN configuration method. Allowed values are "OMCI", "TR069". |
ip_string | body | No | ipv4ipv6 | (String) IP protocol. Allowed values are "ipv4", ipv4ipv6". |
ipv6_string | body | No | None | (String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 address |
ipv6_string | body | No | โ | (String) IPv6 gateway |
ipv6_string | body | No | DHCPv6-PD | (String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 prefix address |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_pppoe/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode username=user \
--data-urlencode password=pass \
--data-urlencode configuration_method=OMCI \
--data-urlencode ip_protocol=ipv4ipv6 \
--data-urlencode ipv6_address_mode=None \
--data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN mode updated to PPPoE for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN configuration method by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_configuration_method/{onu_external_id}Set ONU WAN configuration method for a specified ONU unique external ID
The request returns succesfully if the ONU WAN configuration method was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
- TR069 and Management IP are not enabled on the ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
configuration_string | body | No | OMCI | (String) Configuration method. Allowed values are "OMCI", "TR069". |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_configuration_method/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode configuration_method=OMCI
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN configuration method set to OMCI for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WAN IP version by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_onu_wan_ip_version/{onu_external_id}Set ONU WAN IP version for a specified ONU unique external ID
This method can be used to toggle between IPv4 and dual-stack IPv4/IPv6.
The request returns succesfully if the ONU WAN IP version was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
- TR069 and Management IP are not enabled on the ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
configuration_string | body | No | TR069 | (String) Configuration method. Allowed values are "OMCI", "TR069". |
ip_string | body | No | ipv4ipv6 | (String) IP protocol. Allowed values are "ipv4", ipv4ipv6". |
ipv6_string | body | No | None | (String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 address |
ipv6_string | body | No | โ | (String) IPv6 gateway |
ipv6_string | body | No | DHCPv6-PD | (String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None" |
ipv6_string | body | No | โ | (String) IPv6 prefix address |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_ip_version/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode configuration_method=TR069 \
--data-urlencode ip_protocol=ipv4ipv6 \
--data-urlencode ipv6_address_mode=None \
--data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU WAN IP version updated for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU max-mac-learn by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_max_mac_learn/{onu_external_id}Update ONU max-mac-learn for a specified ONU unique external ID
The request returns succesfully if the ONU max-mac-learn was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- Max-mac-learn feature was not enabled for this OLT
- no ONU max-mac-learn was provided
- wrong ONU max-mac-learn was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
enable_integer | body | Yes | 1 | (Int) Enable max-mac-learn. Allowed values: 1 for enabling max-mac-learn, 0 for disabling max-mac-learn |
max_integer | body | No | 5 | (Int) Max MACs allowed |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_max_mac_learn/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode enable_max_mac_learn=1 \
--data-urlencode max_mac_learn=5
Saved responses
200200 - OKโ
{
"status": true,
"response": "Max-mac-learn updated for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Max MACs allowed must be a number"
}Enable ONU IP DHCP-Snooping by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_ip_dhcp_snooping/{onu_external_id}Enable ONU IP DHCP-Snooping for a specified ONU unique external ID
The request returns succesfully if the ONU IP DHCP-Snooping was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IP DHCP-Snooping feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_ip_dhcp_snooping/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "IP DHCP-Snooping enabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU IP DHCP-Snooping by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_ip_dhcp_snooping/{onu_external_id}Disable ONU IP DHCP-Snooping for a specified ONU unique external ID
The request returns succesfully if the ONU IP DHCP-Snooping was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IP DHCP-Snooping feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_ip_dhcp_snooping/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "IP DHCP-Snooping disabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU DHCP Option82 by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_dhcp_option82/{onu_external_id}Enable ONU DHCP Option82 for a specified ONU unique external ID
The request returns succesfully if the ONU DHCP Option82 was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- DHCP Option82 feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_dhcp_option82/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "DHCP Option82 enabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU DHCP Option82 by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_dhcp_option82/{onu_external_id}Disable ONU DHCP Option82 for a specified ONU unique external ID
The request returns succesfully if the ONU DHCP Option82 was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- DHCP Option82 feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_dhcp_option82/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "DHCP option82 disabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU IP source-guard by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_ip_source_guard/{onu_external_id}Enable ONU IP source-guard for a specified ONU unique external ID
The request returns succesfully if the ONU IP source-guard was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IP source-guard feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_ip_source_guard/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "IP source-guard enabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU IP source-guard by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_ip_source_guard/{onu_external_id}Disable ONU IP source-guard for a specified ONU unique external ID
The request returns succesfully if the ONU IP source-guard was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IP source-guard feature was not enabled for this OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_ip_source_guard/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "IP source-guard disabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU allow remote access to WAN IP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_allow_remote_access_to_wan_ip/{onu_external_id}Enable ONU allow remote access to WAN IP for a specified ONU unique external ID
The request returns succesfully if the ONU allow remote access to WAN IP was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- Allow remote access to WAN IP feature is not supported for this ONU/OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
allow_string | body | No | everywhere | (String) Allowed values are 'everywhere' and 'acl'. Default value is 'everywhere'. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_allow_remote_access_to_wan_ip/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode allow_access_from=everywhere
Saved responses
200200 - OKโ
{
"status": true,
"response": "Allow remote access to WAN IP enabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU allow remote access to WAN IP by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_allow_remote_access_to_wan_ip/{onu_external_id}Disable ONU allow remote access to WAN IP for a specified ONU unique external ID
The request returns succesfully if the ONU allow remote access to WAN IP was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- Allow remote access to WAN IP feature is not supported for this ONU/OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_allow_remote_access_to_wan_ip/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Allow remote access to WAN IP disabled for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Update ONU speed profiles by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_onu_speed_profiles/{onu_external_id}Update ONU upload and download speed profiles for a specified ONU unique external ID
At least one speed profile name must be provided. The profile names must be the ones defined in SmartOLT Speed Profiles section.
The request returns succesfully if the profile names on the ONU were updated or the profiles names provided are the same as the ones already saved on the ONU.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no speed profile names were provided
- no upload speed profile was found with the name provided
- no download speed profile was found with the name provided
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- the response tells you that the action was accepted, not what the OLT did
- the response contains
"queued": true - if the newest queued action for this ONU is the same action, the ONU is not queued again
- the action is queued also when the speed profiles are the same as the ones saved on the ONU
- SmartOLT runs all actions for one ONU in the order it received them
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result
- the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget
ONU with queued actions
If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.
If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
upload_string | body | No | 50M | (String) Upload speed profile name |
download_string | body | No | 100M | (String) Download speed profile name |
asyncinteger | body | No | 1 | (Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_onu_speed_profiles/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode upload_speed_profile_name=50M \
--data-urlencode download_speed_profile_name=100M \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": "Speed profiles updated for ONU with ONU external ID test"
}200200 - OK (async=1)โ
{
"response": "The action was queued and is being processed.",
"response_code": "success",
"status": true,
"queued": true
}200200 - Speed profiles are the same as saved on ONUโ
{
"status": true,
"response": "Provided speed profiles are the same with existing ones for ONU with ONU external ID test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - Specify at least one speed profileโ
{
"status": false,
"error": "Invalid parameters: Please specify at least one speed profile name"
}400400 - No download speed profile foundโ
{
"status": false,
"error": "Invalid parameters: No download speed profile with the name 100G was found"
}400400 - No upload speed profile foundโ
{
"status": false,
"error": "Invalid parameters: No upload speed profile with the name 50G was found"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Update multiple ONUs speed profiles by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_update_speed_profilesUpdate multiple ONUs upload and download speed profiles for a specified list of ONU unique external IDs
At least one speed profile name must be provided. The profile names must be the ones defined in SmartOLT Speed Profiles section.
The request returns succesfully if the profile names on the ONUs were updated or the profiles names provided are the same as the ones already saved on the ONUs.
It returns a 400 error code when:
- another API call to the same method is already in progress
- no ONU external IDs were provided
- more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when
asyncis1) - no speed profile names were provided
- no upload speed profile was found with the name provided
- no download speed profile was found with the name provided
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- a maximum of 10 000 ONU unique external IDs are allowed
- accepted ONUs report that the action was queued and is being processed
- an ONU that already has the same action queued is not queued twice
- duplicate IDs in one call are collapsed
- every other ONU carries the reason it was skipped: ONU not found, or subscription expired
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | test,test1 | (String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1 |
upload_string | body | No | 50M | (String) Upload speed profile name |
download_string | body | No | 100M | (String) Download speed profile name |
asyncstring | body | No | 1 | (Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_update_speed_profiles' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=test,test1 \
--data-urlencode upload_speed_profile_name=50M \
--data-urlencode download_speed_profile_name=100M \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"test": "Speed profiles updated for ONU with ONU external ID test",
"test1": "Speed profiles updated for ONU with ONU external ID test1"
}
}200200 - OK (async=1)โ
{
"response": {
"ONU001": "The action was queued and is being processed.",
"ONU002": "The same action is already queued for this ONU.",
"NOSUCHONU": "ONU not found"
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Specify at least one speed profileโ
{
"status": false,
"error": "Invalid parameters: Please specify at least one speed profile name"
}400400 - No download speed profile foundโ
{
"status": false,
"error": "Invalid parameters: No download speed profile with the name 100G was found"
}400400 - No upload speed profile foundโ
{
"status": false,
"error": "Invalid parameters: No upload speed profile with the name 50G was found"
}Update ONU service port by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/update_service_port/{onu_external_id}Update ONU service port for a specified ONU unique external ID
The request returns succesfully if the ONU service port was updated successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no service port was provided
- wrong service port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
service_string | body | Yes | 3 | (String) ONU service port |
cvlaninteger | body | No | 101 | (Int) ONU CVLAN-ID |
svlaninteger | body | No | 102 | (Int) ONU SVLAN-ID |
tag_string | body | No | translate | (String) Tag-transform mode. Allowed values: default, translate, translate-and-add |
use_integer | body | No | 1 | (Int) Use "other-all" TLS VLAN. Allowed values: 0, 1 |
vlaninteger | body | No | 100 | (Int) ONU VLAN-ID |
upload_string | body | No | 50M | (String) Upload speed profile name |
download_string | body | No | 100M | (String) Download speed profile name |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/update_service_port/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode service_port=3 \
--data-urlencode cvlan=101 \
--data-urlencode svlan=102 \
--data-urlencode tag_transform_mode=translate \
--data-urlencode use_other_all_tls_vlan=1 \
--data-urlencode vlan=100 \
--data-urlencode upload_speed_profile_name=50M \
--data-urlencode download_speed_profile_name=100M
Saved responses
200200 - OKโ
{
"status": true,
"response": "Service-port ID 3 updated for ONU with ONU external ID test"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU Service-port ID"
}Set ONU ethernet port mode to LAN by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_lan/{onu_external_id}Set ONU ethernet port mode to LAN for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to LAN successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_lan/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to LAN for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}Set ONU ethernet port mode to IPTV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_iptv/{onu_external_id}Set ONU ethernet port mode to IPTV for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to IPTV successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- IPTV is not enabled on the ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_iptv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to IPTV for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}Set ONU ethernet port mode to Access by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_access/{onu_external_id}Set ONU ethernet port mode to Access for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to Access successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- no VLAN-ID was provided
- the VLAN-ID is not in the ONU attached VLANs list
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
vlaninteger | body | Yes | 10 | (Int) Ethernet port VLAN-ID |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_access/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode vlan=10 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to Access for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU ethernet port mode to Hybrid by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_hybrid/{onu_external_id}Set ONU ethernet port mode to Hybrid for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to Hybrid successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- no VLAN-ID was provided
- the VLAN-ID is not in the ONU attached VLANs list
- no Allowed VLANs were provided
- the Allowed VLANs list is in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
vlaninteger | body | Yes | 10 | (Int) Ethernet port VLAN-ID |
allowed_string | body | Yes | 20,33 | (String) Ethernet port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_hybrid/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode vlan=10 \
--data-urlencode allowed_vlans=20,33 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to Hybrid for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU ethernet port mode to Trunk by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_trunk/{onu_external_id}Set ONU ethernet port mode to Trunk for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to Trunk successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- no Allowed VLANs were provided
- the Allowed VLANs list is in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
allowed_string | body | Yes | 20,33 | (String) Ethernet port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_trunk/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode allowed_vlans=20,33 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to Trunk for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU ethernet port mode to Transparent by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_transparent/{onu_external_id}Set ONU ethernet port mode to Transparent for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port mode was set to Transparent successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
dhcpstring | body | No | No control | (String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_transparent/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1 \
--data-urlencode 'dhcp=No control'
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 mode set to Transparent for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Shutdown ONU ethernet port by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/shutdown_ethernet_port/{onu_external_id}Shutdown ONU ethernet port for a specified ONU unique external ID
The request returns succesfully if the ONU ethernet port was shutdown successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no ethernet port was provided
- wrong ethernet port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
ethernet_string | body | Yes | eth_0/1 | (String) ONU ethernet port |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/shutdown_ethernet_port/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode ethernet_port=eth_0/1
Saved responses
200200 - OKโ
{
"status": true,
"response": "eth_0/1 port shutdown for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU ethernet port"
}Set ONU WiFi port mode to LAN by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_lan/{onu_external_id}Set ONU WiFi port mode to LAN for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to LAN successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_lan/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to LAN for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WiFi port mode to IPTV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_iptv/{onu_external_id}Set ONU WiFi port mode to IPTV for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to IPTV successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- IPTV is not enabled on the ONU
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_iptv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to IPTV for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WiFi port mode to Access by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_access/{onu_external_id}Set ONU WiFi port mode to Access for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to Access successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- no VLAN-ID was provided
- the VLAN-ID is not in the ONU attached VLANs list
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
vlaninteger | body | Yes | 10 | (Int) WiFi port VLAN-ID |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_access/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode vlan=10 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to Access for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Set ONU WiFi port mode to Hybrid by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_hybrid/{onu_external_id}Set ONU WiFi port mode to Hybrid for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to Hybrid successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- no VLAN-ID was provided
- the VLAN-ID is not in the ONU attached VLANs list
- no Allowed VLANs were provided
- the Allowed VLANs list is in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
vlaninteger | body | Yes | 10 | (Int) WiFi port VLAN-ID |
allowed_string | body | Yes | 20,33 | (String) WiFi port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_hybrid/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode vlan=10 \
--data-urlencode allowed_vlans=20,33 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to Hybrid for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}Set ONU WiFi port mode to Trunk by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_trunk/{onu_external_id}Set ONU WiFi port mode to Trunk for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to Trunk successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- no Allowed VLANs were provided
- the Allowed VLANs list is in the wrong format
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
allowed_string | body | Yes | 20,33 | (String) WiFi port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_trunk/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode allowed_vlans=20,33 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to Trunk for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}Set ONU WiFi port mode to Transparent by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/set_wifi_port_transparent/{onu_external_id}Set ONU WiFi port mode to Transparent for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port mode was set to Transparent successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
dhcpstring | body | No | No control | (String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden |
ssidstring | body | No | test | (String) WiFi port SSID |
passwordstring | body | No | testpass | (String) WiFi port password |
authentication_string | body | No | WPA2 | (String) WiFi port authentication mode. Allowed values: WPA2, Open-system |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_transparent/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1 \
--data-urlencode 'dhcp=No control' \
--data-urlencode ssid=test \
--data-urlencode password=testpass \
--data-urlencode authentication_mode=WPA2
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 mode set to Transparent for ONU with ONU external ID onu_unique_external_id"
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Shutdown ONU WiFi port by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/shutdown_wifi_port/{onu_external_id}Shutdown ONU WiFi port for a specified ONU unique external ID
The request returns succesfully if the ONU WiFi port was shutdown successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- no WiFi port was provided
- wrong WiFi port was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
wifi_string | body | Yes | wifi_0/1 | (String) ONU WiFi port |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/shutdown_wifi_port/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode wifi_port=wifi_0/1
Saved responses
200200 - OKโ
{
"status": true,
"response": "wifi_0/1 WiFi port shutdown for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU WiFi port"
}Change ONU web user and password by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/change_web_user_pass/{onu_external_id}Change ONU web user and password for a specified ONU unique external ID
The request returns succesfully if the ONU web user and password were changed successfully.
Important: The SmartOLT TR069 profile must be enabled for the ONU
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- TR069 feature is not enabled
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
web_string | body | No | test | (String) Web user. Can contain only alphanumeric characters. A minimum of 5 is required, a maximum of 16 characters is allowed. |
web_string | body | No | testPass | (String) Web password. Can contain only alphanumeric characters. A minimum of 8 is required, a maximum of 16 characters is allowed. |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/change_web_user_pass/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode web_user=test \
--data-urlencode web_pass=testPass
Saved responses
200200 - OKโ
{
"status": true,
"response": "Web user pass changed for ONU with ONU external ID onu_unique_external_id"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU IPTV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_iptv/{onu_external_id}Enable ONU IPTV for a specified ONU unique external ID
The request returns succesfully if ONU IPTV was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IPTV module not enabled on OLT
- no IPTV VLAN-ID was provided
- no IPTV upload speed profile was provided
- no IPTV download speed profile was provided
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
vlaninteger | body | Yes | 100 | (Int) IPTV VLAN-ID |
cvlaninteger | body | No | 101 | (Int) IPTV CVLAN-ID |
svlaninteger | body | No | 102 | (Int) IPTV SVLAN-ID |
tag_string | body | No | translate | (String) Tag-transform mode. Allowed values: default, translate, translate-and-add |
upload_string | body | No | 50M | (String) IPTV upload speed profile name |
download_string | body | No | 100M | (String) IPTV upload speed profile name |
allowed_string | body | No | โ | (String) Allowed MACs, separated by comma |
filtered_string | body | No | โ | (String) Filtered MACs, separated by comma |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_iptv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode vlan=100 \
--data-urlencode cvlan=101 \
--data-urlencode svlan=102 \
--data-urlencode tag_transform_mode=translate \
--data-urlencode upload_speed_profile_name=50M \
--data-urlencode download_speed_profile_name=100M
Saved responses
200200 - OKโ
{
"status": true,
"response": "IPTV enabled"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - Invalid parametersโ
{
"status": false,
"error": "Invalid parameters: Please specify the ONU IPTV VLAN-ID"
}Disable ONU IPTV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_iptv/{onu_external_id}Disable ONU IPTV for a specified ONU unique external ID
The request returns succesfully if ONU IPTV was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- IPTV module not enabled on OLT
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_iptv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "IPTV disabled"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}Enable ONU CATV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable_catv/{onu_external_id}Enable ONU CATV for a specified ONU unique external ID
The request returns succesfully if ONU CATV was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- CATV not supported by ONU-Type
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- the response tells you that the action was accepted, not what the OLT did
- the response contains
"queued": true - if the newest queued action for this ONU is the same action, the ONU is not queued again
- SmartOLT runs all actions for one ONU in the order it received them
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result
- the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget
ONU with queued actions
If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.
If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
asyncinteger | body | No | 1 | (Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable_catv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": "CATV enabled"
}200200 - OK (async=1)โ
{
"response": "The action was queued and is being processed.",
"response_code": "success",
"status": true,
"queued": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Enable multiple ONUs CATV by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_enable_catvThe request returns succesfully if ONUs CATV were enabled successfully.
It returns a 400 error code when:
- another API call to the same method is already in progress
- no ONU external IDs were provided
- more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when
asyncis1) - OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- a maximum of 10 000 ONU unique external IDs are allowed
- accepted ONUs report that the action was queued and is being processed
- an ONU that already has the same action queued is not queued twice
- duplicate IDs in one call are collapsed
- every other ONU carries the reason it was skipped: ONU not found, or subscription expired, the ONU type does not support CATV, or the ONU has no ONU type. An ONU that already has CATV enabled is not queued and reports
ONU CATV enabled - OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | test,test1 | (String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1 |
asyncstring | body | No | 1 | (Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_enable_catv' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=test,test1 \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"test": "ONU test CATV enabled",
"test1": "ONU test1 CATV enabled"
}
}200200 - OK (async=1)โ
{
"response": {
"ONU001": "The action was queued and is being processed.",
"ONU002": "The same action is already queued for this ONU.",
"ONU003": "ONU ONU003: CATV not supported by ONU-Type",
"ONU004": "ONU ONU004 CATV enabled"
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Disable ONU CATV by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable_catv/{onu_external_id}Disable ONU CATV for a specified ONU unique external ID
To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.
โ Restrictions****๐ซ DO NOT use this endpoint for:
- repeteadly disabling the same ONTs multiple times per week.
The request returns succesfully if ONU CATV was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- CATV not supported by ONU-Type
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- the response tells you that the action was accepted, not what the OLT did
- the response contains
"queued": true - if the newest queued action for this ONU is the same action, the ONU is not queued again
- SmartOLT runs all actions for one ONU in the order it received them
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result
- the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget
ONU with queued actions
If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_status to see the result.
If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
asyncinteger | body | No | 1 | (Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable_catv/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": "CATV disabled"
}200200 - OK (async=1)โ
{
"response": "The action was queued and is being processed.",
"response_code": "success",
"status": true,
"queued": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}Disable multiple ONUs CATV by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_disable_catvTo maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.
โ Restrictions****๐ซ DO NOT use this endpoint for:
repeteadly disabling the same ONTs multiple times per week.
The request returns succesfully if ONUs CATV were disabled successfully.
It returns a 400 error code when:
- another API call to the same method is already in progress
- no ONU external IDs were provided
- more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when
asyncis1) - OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- a maximum of 10 000 ONU unique external IDs are allowed
- accepted ONUs report that the action was queued and is being processed
- an ONU that already has the same action queued is not queued twice
- duplicate IDs in one call are collapsed
- every other ONU carries the reason it was skipped: ONU not found, or subscription expired, the ONU type does not support CATV, or the ONU has no ONU type
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | test,test1 | (String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1 |
asyncstring | body | No | 1 | (Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_disable_catv' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=test,test1 \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"test": "ONU test CATV disabled",
"test1": "ONU test1 CATV disabled"
}
}200200 - OK (async=1)โ
{
"response": {
"ONU001": "The action was queued and is being processed.",
"ONU002": "The same action is already queued for this ONU.",
"ONU003": "ONU ONU003: CATV not supported by ONU-Type"
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Reboot ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/reboot/{onu_external_id}Reboot ONU for a specified ONU unique external ID
The request returns succesfully if the ONU reboot command was sent successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/reboot/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Device reboot command sent"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Resync ONU config by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/resync_config/{onu_external_id}Resync ONU config for a specified ONU unique external ID
The request returns succesfully if the ONU config was resynced successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/resync_config/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Resync config successfully"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Restore ONU factory defaults by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/restore_factory_defaults/{onu_external_id}Restore ONU factory defaults for a specified ONU unique external ID
The request returns succesfully if the restore ONU factory defaults command was sent successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/restore_factory_defaults/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "Device restore defaults command sent"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}Disable ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/disable/{onu_external_id}Disable ONU for a specified ONU unique external ID
To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.
The request returns succesfully if ONU was disabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- the response tells you that the action was accepted, not what the OLT did
- the response contains
"queued": true - if the newest queued action for this ONU is the same action, the ONU is not queued again
- SmartOLT runs all actions for one ONU in the order it received them
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result
- the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget
ONU with queued actions
If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.
If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
asyncinteger | body | No | 1 | (Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/disable/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU disabled"
}200200 - OK (async=1)โ
{
"response": "The action was queued and is being processed.",
"response_code": "success",
"status": true,
"queued": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Disable multiple ONUs by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_disableTo maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.
The request returns succesfully if ONUs were disabled successfully.
It returns a 400 error code when:
- another API call to the same method is already in progress
- no ONU external IDs were provided
- more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when
asyncis1) - OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- a maximum of 10 000 ONU unique external IDs are allowed
- accepted ONUs report that the action was queued and is being processed
- an ONU that already has the same action queued is not queued twice
- duplicate IDs in one call are collapsed
- every other ONU carries the reason it was skipped: ONU not found, or subscription expired
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | test,test1 | (String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1 |
asyncstring | body | No | 1 | (Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_disable' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=test,test1 \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"test": "ONU test disabled",
"test1": "ONU test1 disabled"
}
}200200 - OK (async=1)โ
{
"response": {
"ONU001": "The action was queued and is being processed.",
"ONU002": "The same action is already queued for this ONU.",
"NOSUCHONU": "ONU not found"
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Enable ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/enable/{onu_external_id}Enable ONU for a specified ONU unique external ID
The request returns succesfully if ONU was enabled successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- the response tells you that the action was accepted, not what the OLT did
- the response contains
"queued": true - if the newest queued action for this ONU is the same action, the ONU is not queued again
- SmartOLT runs all actions for one ONU in the order it received them
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result
- the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget
ONU with queued actions
If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.
If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
asyncinteger | body | No | 1 | (Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/enable/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU enabled"
}200200 - OK (async=1)โ
{
"response": "The action was queued and is being processed.",
"response_code": "success",
"status": true,
"queued": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}Enable multiple ONUs by ONU unique external IDs
https://{subdomain}.smartolt.com/api/onu/bulk_enableThe request returns succesfully if ONUs were enabled successfully.
It returns a 400 error code when:
- another API call to the same method is already in progress
- no ONU external IDs were provided
- more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when
asyncis1) - OLT was unable to process the command
Asynchronous mode (async=1)
Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.
If you do not send async, or you send 0, the request works as described above.
In asynchronous mode:
- a maximum of 10 000 ONU unique external IDs are allowed
- accepted ONUs report that the action was queued and is being processed
- an ONU that already has the same action queued is not queued twice
- duplicate IDs in one call are collapsed
- every other ONU carries the reason it was skipped: ONU not found, or subscription expired
- OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | test,test1 | (String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1 |
asyncstring | body | No | 1 | (Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0 |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/bulk_enable' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=test,test1 \
--data-urlencode async=1
Saved responses
200200 - OKโ
{
"status": true,
"response": {
"test": "ONU test enabled",
"test1": "ONU test1 enabled"
}
}200200 - OK (async=1)โ
{
"response": {
"ONU001": "The action was queued and is being processed.",
"ONU002": "The same action is already queued for this ONU.",
"NOSUCHONU": "ONU not found"
},
"response_code": "success",
"status": true
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}Delete ONU by ONU unique external ID
https://{subdomain}.smartolt.com/api/onu/delete/{onu_external_id}Delete ONU for a specified ONU unique external ID
The request returns succesfully if ONU was deleted successfully.
It returns a 400 error code when:
- no ONU external ID was provided
- no ONU was found for the provided ONU external ID
- OLT was unable to process the command
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onu_string | path | Yes | โ | โ |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/delete/{onu_external_id}' \
--header 'X-Token: YOUR_API_KEY'
Saved responses
200200 - OKโ
{
"status": true,
"response": "ONU was deleted"
}403403 - Forbiddenโ
{
"status": false,
"error": "Invalid API Key."
}400400 - OLT wasn't able to process commandโ
{
"status": false,
"error": "Invalid parameters: OLT wasn't able to process the command"
}400400 - No ONU for external IDโ
{
"status": false,
"error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}Check bulk task status
https://{subdomain}.smartolt.com/api/onu/check_bulk_task_statusCheck how the work queued by the bulk endpoints with async=1 is going, detailed per ONU.
Reports the most recent enable, disable, speed profile or CATV task row for each ONU, whichever happened last, so it answers both "is my bulk request still running" and "what happened to it".
status values
| value | meaning |
|---|---|
queued | accepted, not picked up by a worker yet |
in_progress | a worker is running it now |
retrying | an attempt failed; more attempts remain (up to 4) |
failed | out of attempts, or the batch action was stopped, or its task is no longer running |
succeeded | completed successfully |
no_task | the ONU exists but has no enable, disable, speed profile or CATV task on record |
onu_not_found | no ONU with that external id is visible to this API key |
Other fields (absent for no_task / onu_not_found)
actionโenable,disable,update_speed_profiles,enable_catvordisable_catv.catv_syncmeans a CATV sync started from the SmartOLT web interface.attemptsโ attempts made so far.date_start/date_endโnulluntil the worker starts / finishes an attempt.error_messageโ the error from the last failed attempt, passed through from the OLT where there was one. Alwaysnullforsucceeded.
The row can also come from an action that was not started by the API, for example a batch action in the SmartOLT web interface or the automatic sync.
Configuration preset tasks are not included. Use check_configuration_preset_task_status for them.
Parameters
| Name | In | Required | Example | Description |
|---|---|---|---|---|
onus_string | body | Yes | ONU001,ONU002 | (String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed |
Example request
curl --request POST \
--url 'https://{subdomain}.smartolt.com/api/onu/check_bulk_task_status' \
--header 'X-Token: YOUR_API_KEY' \
--data-urlencode onus_external_ids=ONU001,ONU002
Saved responses
200200 - OKโ
{
"response": {
"NOSUCHONU": {
"status": "onu_not_found"
},
"ONU001": {
"status": "succeeded",
"action": "enable",
"attempts": 1,
"date_start": "2026-09-24 16:59:41",
"date_end": "2026-09-24 17:00:12",
"error_message": null
},
"ONU002": {
"status": "failed",
"action": "disable_catv",
"attempts": 4,
"date_start": "2026-09-24 09:19:46",
"date_end": "2026-09-24 09:19:53",
"error_message": "OLT unreachable. Please check that the Telnet port TCP on OLT IP is open for connections."
},
"ONU003": {
"status": "queued",
"action": "update_speed_profiles",
"attempts": 0,
"date_start": null,
"date_end": null,
"error_message": null
}
},
"response_code": "success",
"status": true
}