console
api.console
api.curl --header 'Authorization: Bearer <connection_api_key>'
https://iproxy.online/api/cn/v1/
GET /api/cn/v1/
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url https:/iproxy.online/api/cn/v1/
{
"id": "{conn_id}",
"basic_info": {
"name": "online connection",
"description": "connection_description (optional)",
"created_at": "2025-07-11T10:36:38.006Z",
"updated_at": "2025-07-11T10:58:51.42Z",
"server_geo": {
"country": "pl",
"city": "waw"
},
"is_onboarding": false,
"user_id": "myOrOwnerUserId",
"server_id": "someServerId"
},
"shared_users": [],
"plan_info": {
"active_plan": {
"id": "nlUs1D8PKL",
"started_at": "2025-07-11T10:55:10.913Z",
"expires_at": "2025-08-10T10:55:10.913Z"
}
},
"settings": {
"prolongation_enabled": false,
"dns": [],
"telegram_change_ip_notification_enabled": false,
"telegram_status_notification_enabled": true,
"reboot_cron_string": "",
"low_battery_reboot_threshold": 0,
"no_network_reboot_timeout_seconds": 0,
"ip_change_airplane_mode_time_seconds": 0,
"no_network_airplane_toggle_timeout_seconds": 0,
"tariff_notify_hours_before_expired": [],
"no_wifi_inet_disable_wifi_timeout_seconds": 0,
"no_wifi_connection_reboot_timeout_seconds": 0,
"tcp_fingerprint": "",
"ip_change_wait_unique": false,
"ip_change_wait_unique_attempts": 0,
"ip_change_wait_unique_lookbehind_minutes": 0,
"ip_change_enabled": false,
"ip_change_interval_minutes": 0,
"macros_url": "",
"app_restart_interval_minutes": 0,
"connection_refresh_interval_minutes": 0
},
"app_data": {
"device_info": {
"is_root": false,
"manufacturer": "Samsung",
"model": "SM-A236B",
"android_version": "14",
"system_fingerprint": "6e1334d2",
"system_device_id": "397ff68",
"voice_assist_configured": true,
"mobile_data_always_on": true,
"owner_mode_enabled": false
},
"app_id": "com.iproxy.android",
"app_version": "574",
"app_version_patch": "1",
"build_number": "57401",
"agent_setup_complete": false,
"ready_to_change_ip": true,
"wifi_split_enabled": false,
"last_activity_at": "2025-07-11T10:58:51.417Z",
"installation_id": "phone-9da94533-e175-42a5-bdcb-f80b4c621117"
}
}
POST /api/cn/v1/update-basic-info
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https:/iproxy.online/api/cn/v1/update-basic-info \
-d '{
"name": "new_name",
"description": "new_description"
}'
{
"id": "connection_id",
"name": "new_name",
"description": "new_description"
}
POST /api/cn/v1/update-settings
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https:/iproxy.online/api/cn/v1/update-settings \
-d '{
"prolongation_enabled": false,
"dns": ["1.1.1.1"],
"telegram_change_ip_notification_enabled": false,
"telegram_status_notification_enabled": true,
"reboot_cron_string": "30 */3 * * *",
"low_battery_reboot_threshold": 0,
"no_network_reboot_timeout_seconds": 0,
"ip_change_airplane_mode_time_seconds": 0,
"no_network_airplane_toggle_timeout_seconds": 0,
"tariff_notify_hours_before_expired": [2, 12, 48],
"no_wifi_inet_disable_wifi_timeout_seconds": 0,
"no_wifi_connection_reboot_timeout_seconds": 0,
"tcp_fingerprint": "Win10",
"ip_change_wait_unique": false,
"ip_change_wait_unique_attempts": 0,
"ip_change_wait_unique_lookbehind_minutes": 0,
"ip_change_enabled": false,
"ip_change_interval_minutes": 0,
"macros_url": "https:/example.com",
"app_restart_interval_minutes": 0,
"connection_refresh_interval_minutes": 0
}'
You only need to send the fields you want to update. The current values of the fields can be retrieved via a GET request.
JSON Key | Type | Validation | Description |
---|---|---|---|
prolongation_enabled | bool | Enables automatic prolongation payments. | |
dns | list of string | Each entry must be a valid IP address (e.g., Cloudflare ["1.1.1.1"], Google ["8.8.8.8"], or custom). Send an empty array to clear the list. | Sets Global DNS. |
telegram_change_ip_notification_enabled | bool | Sends Telegram alerts when the external IP changes. | |
telegram_status_notification_enabled | bool | Sends Telegram alerts for status changes. | |
reboot_cron_string | string | Cron expression. Send an empty string to disable. | Enables scheduled reboots. |
low_battery_reboot_threshold | float | 0 ≤ value ≤ 95 . Send 0 to disable. | Reboots the device if the battery level drops below the specified percentage. |
no_network_reboot_timeout_seconds | int | 0–3600 seconds. Send 0 to disable. | Reboots the device if proxies are disconnected for the specified duration. |
ip_change_airplane_mode_time_seconds | int | 0–3600 seconds. Send 0 to disable. | Sets minimum time in Airplane Mode to change IP. |
no_network_airplane_toggle_timeout_seconds | int | 0–3600 seconds. Send 0 to disable. | Toggles Airplane Mode if the mobile network is idle for more than the specified timeout. |
tariff_notify_hours_before_expired | list of int | Send an empty array to clear all notifications. | Enables payment notifications. |
no_wifi_inet_disable_wifi_timeout_seconds | int | 0–3600 seconds. Send 0 to disable. | Disables Wi-Fi if no internet is detected over Wi-Fi for the specified timeout. |
no_wifi_connection_reboot_timeout_seconds | int | 0–40320 seconds (up to 7 days). Send 0 to disable. | Enables automatic Wi-Fi reconnection after the specified timeout. |
tcp_fingerprint | string | Must be one of: none , WinXP , Win78 , Win10 , WinNT , Nintendo , FreeBSD , FreeBSD9 , MacOS , iOS . Send an empty string to disable. | Sets the device fingerprint. |
ip_change_wait_unique | bool | Enables unique IP assignment based on history. | |
ip_change_wait_unique_attempts | int | 0–10 . Send 0 to disable. | Maximum number of attempts to acquire a unique IP. |
ip_change_wait_unique_lookbehind_minutes | int | 0–64800 minutes (up to 45 days). Send 0 to disable. | IP history time window for uniqueness. |
ip_change_enabled | bool | Master switch for the IP change engine. | |
ip_change_interval_minutes | int | 0–1439 minutes (up to 24 hours). Send 0 to disable. | Minimum time between IP changes. |
macros_url | string | Must be a valid URL. Send an empty string to disable. | Webhook URL for MacroDroid integration. |
app_restart_interval_minutes | int | Sets the interval (in minutes) for automatic app restarts. | |
connection_refresh_interval_minutes | int | Forces a connection refresh after the specified interval (in minutes). |
{
"id": "{conn_id}",
"prolongation_enabled": false,
"dns": ["1.1.1.1"],
"telegram_change_ip_notification_enabled": false,
"telegram_status_notification_enabled": true,
"reboot_cron_string": "30 */3 * * *",
"low_battery_reboot_threshold": 0,
"no_network_reboot_timeout_seconds": 0,
"ip_change_airplane_mode_time_seconds": 0,
"no_network_airplane_toggle_timeout_seconds": 0,
"tariff_notify_hours_before_expired": [
2,
12,
48
],
"no_wifi_inet_disable_wifi_timeout_seconds": 0,
"no_wifi_connection_reboot_timeout_seconds": 0,
"tcp_fingerprint": "Win10",
"ip_change_wait_unique": false,
"ip_change_wait_unique_attempts": 0,
"ip_change_wait_unique_lookbehind_minutes": 0,
"ip_change_enabled": false,
"ip_change_interval_minutes": 0,
"macros_url": "https:/example.com",
"app_restart_interval_minutes": 0,
"connection_refresh_interval_minutes": 0
}
POST /api/cn/v1/team-access/modify
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https:/iproxy.online/api/cn/v1/team-access/modify \
-d '{
"email": "[email protected]",
"permissions": {
"action_link_create": true,
"action_link_remove": true,
"airplane_mode_time_edit": true
}
}'
{
"email": "[email protected]",
"permissions": {
"airplane_mode_time_edit": false,
"authorization_pin_create": false,
"battery_level_threshold": false,
"connection_change_tariff": false,
"connection_payment": false,
"connection_remove": false,
"description_edit": false,
"dns_setting": false,
"enable_unique_ip": false,
"find_device": false,
"fix_lte": false,
"ip_history_view": false,
"logs_download": false,
"macros_url": false,
"name_edit": false,
"open_vpn_create": false,
"open_vpn_view": false,
"open_vpn_edit": false,
"open_vpn_remove": false,
"pof_setting": false,
"no_network_reboot": false,
"proxy_create": false,
"proxy_edit": false,
"proxy_remove": false,
"proxy_view": false,
"reboot_device": false,
"repeating_ip_view": false,
"rotation_setting": false,
"scheduled_reboot": false,
"sms_control": false,
"tariff_statistic_view": false,
"no_network_airplane_toggle_time_edit": false,
"uptime_view": false,
"url_change_ip_create": false,
"url_change_ip_remove": false,
"team_members_edit": false,
"api_key_create": false,
"action_link_create": true,
"action_link_view": false,
"action_link_remove": true,
"basic_info_edit": false,
"settings_edit": false,
"connection_control": false
}
}
POST /api/cn/v1/team-access/remove
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https:/iproxy.online/api/cn/v1/team-access/remove \
-d '{
"email": "[email protected]"
}'
{
"email": "[email protected]"
}
POST /api/cn/v1/change-plan/{new_plan}
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https:/iproxy.online/api/cn/v1/change-plan \
-d '{
"plan_id": "M7Fq2RKexi"
}'
{
"active_plan": {
"id": "M7Fq2RKexi",
"started_at": "2025-07-11T10:55:10.913Z",
"expires_at": "2025-08-10T10:55:10.913Z"
}
}
GET /api/cn/v1/sms-history
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url https:/iproxy.online/api/cn/v1/sms-history
{
"sms_messages": [
{
"id": "sms_id",
"message": "Example message",
"from": "Somebody",
"from_contact": "Mike (may be empty)",
"created_at": "2025-06-01T04:24:48Z"
}
]
}
/api/console/v1/connection/{connection_id}/command-push
curl --request POST \
--url https://iproxy.online/api/console/v1/connection/{connection_id}/command-push
--header 'Authorization: Bearer <conn_api_key>'
-d '{"action":"<command_name>", "<command_name>_params": {}}'
{"message": "{action} command has been sent"}
POST /api/cn/v1/pin-code
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--url https:/iproxy.online/api/cn/v1/pin-code
{
"pincode": "<generated pin>",
"expires_at": "2025-05-05T05:05:05Z"
}
expires_at is an RFC 3339 timestamp
POST /api/cn/v1/proxy-access
{
"listen_service": "http", // http or socks5
"auth_type": "userpass", // userpass or noauth
"auth": { // optional, will be generated
"login": "proxy_login",
"password": "proxy_pass"
},
"description": "new proxy description",
"acl_inbound_policy": "deny_except", // optional, required only if auth_type: noauth
"acl_inbound_ips": ["127.0.0.1"], // optional IP ACL, non-empty; required only if acl_inbound_policy is set
"expires_at": "2026-01-01T01:01:01Z" // optional date of proxy expiry
}
expires_at
is an RFC 3339 timestampcurl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/cn/v1/proxy-access \
-d '{
"listen_service": "socks5",
"auth_type": "userpass",
"description": "new proxy description"
}'
{
"id": "2CiQPfoWcJ",
"connection_id": "2W1IlyssyF",
"description": "new proxy description",
"listen_service": "socks5",
"auth_type": "userpass",
"auth": {
"login": "username",
"password": "superpassword"
},
"ip": "1.2.3.4",
"port": 13874,
"hostname": "x1.fxdx.in",
"password_updated_at": "2025-07-11T18:05:18.622Z"
}
POST /api/cn/v1/proxy-access/{proxy_id}/update
{
"listen_service": "http", // http or socks5
"auth_type": "userpass", // userpass or noauth
"auth": {
"login": "new_login",
"password": "new_pass"
},
"description": "new proxy description",
"acl_inbound_ips": [], // allowed IPs, set '[]' to disable
"expires_at": "2026-01-01T01:01:01Z" // date of proxy expiry, set '0001-01-01T00:00:00Z' to disable
}
expires_at
is an RFC 3339 timestampall fields are optional, only set fields are updated
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/cn/v1/proxy-access/{proxy_id}/update \
-d '{
"listen_service": "http",
"auth_type": "userpass",
"auth": {
"login": "new_login",
"password": "new_pass"
},
"description": "new description",
"acl_inbound_ips": [],
"expires_at": "0001-01-01T00:00:00Z"
}'
expires_at
is an RFC 3339 timestamp{
"id": "k31kcls",
"connection_id": "ksdfmw343",
"description": "new description",
"listen_service": "http",
"auth_type": "userpass",
"auth": {
"login": "new_login",
"password": "new_pass"
},
"ip": "1.2.3.4",
"port": 13872,
"hostname": "x1.fxdx.in",
"password_updated_at": "2025-07-11T16:55:21.37Z"
}
GET /api/cn/v1/proxy-access
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/proxy-access
{
"proxy_accesses": [
{
"id": "2CiQPfoWcJ",
"connection_id": "2W1IlyssyF",
"description": "new proxy description",
"listen_service": "socks5",
"auth_type": "userpass",
"auth": {
"login": "user",
"password": "pass"
},
"ip": "1.2.3.4",
"port": 13874,
"hostname": "x1.fxdx.in",
"password_updated_at": "2025-07-11T18:05:18.622Z"
},
{
"id": "HjttgsJjG3",
"connection_id": "2W1IlyssyF",
"description": "new description",
"listen_service": "http",
"auth_type": "userpass",
"auth": {
"login": "new_login",
"password": "new_pass"
},
"acl_inbound_policy": "deny_except",
"acl_inbound_ips": ["1.2.3.4"],
"ip": "3.2.1.0",
"port": 13875,
"hostname": "x1.fxdx.in",
"password_updated_at": "2025-07-11T18:07:35.919Z"
}
]
}
expires_at
is an RFC 3339 timestampDELETE /api/cn/v1/proxy-access/{proxy_id}
curl --request DELETE \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/proxy-access/{proxy_id}
{
"id": "4cbI8O21Rd"
}
POST /api/cn/v1/ovpn-access
{
"name": "new VPN name",
"description": "new VPN description",
}
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/ovpn-access \
-d '{
"name": "new VPN name",
"description": "new VPN description"
}'
{
"status": "active",
"name": "new VPN name",
"description": "new VPN description",
"expires_at": "2045-07-06T18:23:09.787673959Z",
"dns": [],
"id": "1InLOU8GWR",
"connection_id": "{conn_id}"
}
expires_at
is an RFC 3339 timestampGET /api/cn/v1/ovpn-access
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/ovpn-access
{
"ovpn_accesses": [{
"name": "VPN name",
"description": "VPN description",
"status": "active",
"dns": [],
"id": "ovpn_id",
"connection_id": "{conn_id}",
"expires_at": "2026-01-01T01:01:01Z"
}]
}
expires_at
is an RFC 3339 timestampPOST /api/cn/v1/ovpn-access/{ovpn_id}/update
{
"name": "VPN name",
"description": "VPN description",
"expires_at": "2026-01-01T01:01:01Z"
}
expires_at
is an RFC 3339 timestamp.All fields are optional, only set fields are updated
curl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/cn/v1/ovpn-access/{ovpn_id}/update \
-d '{
"name": "VPN name",
"description": "VPN description",
"expires_at": "2026-01-01T01:01:01Z"
}'
expires_at
is an RFC 3339 timestamp{
"name": "VPN name",
"description": "VPN description",
"status": "active",
"dns": [],
"id": "ovpn_id",
"connection_id": "{conn_id}",
"expires_at": "2026-01-01T01:01:01Z"
}
DELETE /api/cn/v1/ovpn-access/{ovpn_id}
curl --request DELETE \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/ovpn-access/{ovpn_id}
{
"id": "ovpn_id"
}
/api/cn/v1/traffic/by-day
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url 'https://iproxy.online/api/cn/v1/traffic/by-day?from=2025-07-01T00%3A00%3A00Z&to=2025-08-01T03%3A00%3A00%2B03%3A00&timezone=Europe/Lisbon'
from
and to
query parameters should be url-encoded RFC 3339 timestamps
timezone
optional query parameter should be a valid timezone. Invalid and empty values are defaulted to UTC{
"total_in_bytes": 1300000, // Inbound traffic in bytes
"total_out_bytes": 1000000, // Outbound traffic in bytes
"daily_stats": [{
"date": "2025-03-31T00:00:00Z",
"in_bytes": 1000, // Inbound traffic for the day in bytes
"out_bytes": 1000, // Outbound traffic for the day in bytes
}]
}
date
is an RFC 3339 timestamp/api/cn/v1/traffic/by-hour-port
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url 'https://iproxy.online/api/cn/v1/traffic/by-hour-port?from=2025-07-01T00%3A00%3A00Z&to=2025-08-02T03%3A00%3A00%2B03%3A00'
from
and to
query parameters should be url-encoded RFC 3339 timestamps{
"port_stats": [{
"port": "20314",
"total_in_bytes": 1300000, // Inbound traffic in bytes
"total_out_bytes": 1000000, // Outbound traffic in bytes
"hourly_stats": [{
"date": "2025-03-01T14:00:00Z",
"in_bytes": 1000, // Inbound traffic for the hour in bytes
"out_bytes": 1000, // Outbound traffic for the hour in bytes
}]
}
date
is an RFC 3339 timestamp/api/cn/v1/uptime
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url 'https://iproxy.online/api/cn/v1/uptime?from=2025-07-01T00%3A00%3A00Z&to=2025-08-02T03%3A00%3A00%2B03%3A00'
from
and to
query parameters should be url-encoded RFC 3339 timestamps{
"uptime": [{
"date": "2025-03-01T14:00:00Z",
"status": "UP"
]}
}
date
is an RFC 3339 timestamp/api/cn/v1/ip-history
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url 'https://iproxy.online/api/cn/v1/ip-history?from=2025-03-01T00%3A00%3A00Z&to=2025-03-02T03%3A00%3A00%2B03%3A00'
from
and to
query parameters should be url-encoded RFC 3339 timestamps{
"ip_history": [{
"date": "2025-03-01T14:00:00Z",
"ipv4": "127.0.0.1",
"ipv6": "::1"
]}
}
date
is an RFC 3339 timestampPOST /api/cn/v1/actionlinks
{ "action": "reboot", "comment": "link for client AAAA" }
action
string parameter is one of [reboot changeip]
comment
string is optional parametercurl --request POST \
--header "Authorization: Bearer <conn_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/cn/v1/actionlinks \
-d '{"action": "changeip", "comment": "link for client AAAA"}'
{
"id": "xyzXYZ"
}
GET /api/cn/v1/actionlinks
action
parameter is one of [reboot changeip]
curl --request GET \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/actionlinks
{
"action_links": [{
"id": "xyzXYZ",
"link": "https://i.fxdx.in/actionlinks/do/reboot/xyzXYZ",
"action": "changeip",
"connection_id": "abcdABCD",
"comment": "link for client AAAA",
"created_at": "2025-03-19T13:06:30Z"
}]
}
created_at
is an RFC 3339 timestampDELETE /api/cn/v1/actionlinks/{link_id}
curl --request DELETE \
--header "Authorization: Bearer <conn_api_key>" \
--url https://iproxy.online/api/cn/v1/actionlinks/{link_id}
{
"id": "xyzXYZ"
}
GET https://i.fxdx.in/actionlinks/do/{action}/{link_id}
curl --request GET \
--url https://i.fxdx.in/actionlinks/do/{action}/{link_id}
{
"message": "{action} command has been sent"
}