This is an API available using global user's API KEY.
Every request to the iProxy API must include the user's API KEY in Authorization header as Bearer token:
curl --header 'Authorization: Bearer <api key>'
The API endpoint is: https://iproxy.online/api/console/v1/
Endpoint: GET /api/console/v1/me
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/me
Response: 200: Current user info
{
"id": "user_id",
"username": "user_name",
"email": "[email protected]",
"balance": "15.89",
"display_name": "John Doe",
"telegram": "@username",
"proxy_prefix": "prefix"
}
Endpoint: POST /api/console/v1/me/update-basic-info
All request fields are optional, min 1 and max 256 chars if specified.
Example:
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/me/update-basic-info
-d '{
"display_name": "John Doe",
"telegram": "@username",
"proxy_prefix": "prefix"
}'
Response: 200: User's basic info after update.
{
"id": "<user ID>"
"display_name": "John Doe",
"telegram": "@username",
"proxy_prefix": "prefix"
}
Endpoint: POST /api/console/v1/me/api-key
Example:
curl --request POST \
--url https://iproxy.online/api/console/v1/me/api-key \
--header 'Authorization: Bearer <user_api_key>'
Request:
No request body is required.
Response:
200: New API Key
{
"api_key": "<new_api_key_hash>"
}
Endpoint: POST /api/console/v1/connections
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections \
-d '{
"name": "connection_name",
"description": "connection_description (optional)",
"prolongation_enabled": true,
"country": "server’s 2-letter country code", //for example: us
"city": "server’s city code"
"server_id": "server_id" //only for vip servers, mutually exclusive with city+country
}'
Response: 201: Created
{
"id": "created_connection_id",
"country": "server’s country code",
"city": "server’s city",
"server_id": "server_id"
}
Endpoint: GET /api/console/v1/connections/{conn_id}
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}
Response: 200: OK
{
"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"
}
}
Endpoint: GET /api/console/v1/connections
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections
Response: 200: OK
{
"connections": [
{
"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"
}
},
{
"id": "5ChcNy5QuK",
"basic_info": {
"name": "just created connection",
"description": "connection_description (optional)",
"created_at": "2025-07-11T10:55:15.22Z",
"updated_at": "2025-07-11T10:55:36.967Z",
"server_geo": {
"country": "pl",
"city": "waw"
},
"is_onboarding": false,
"server_id": "soMeId"
},
"shared_users": [],
"settings": {
"prolongation_enabled": true,
"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
}
}
]
}
Endpoint: POST /api/console/v1/connections/{conn_id}/update-basic-info
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/update-basic-info \
-d '{
"name": "new_name",
"description": "new_description"
}'
Response: 200: OK
{
"id": "connection_id",
"name": "new_name",
"description": "new_description"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/update-settings
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/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). |
Response: 200: OK
{
"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
}
Endpoint: POST /api/console/v1/connections/{conn_id}/team-access/modify
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/team-access/modify \
-d '{
"email": "[email protected]",
"permissions": {
"action_link_create": true,
"action_link_remove": true,
"airplane_mode_time_edit": true
}
}'
Response: 200: OK
{
"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
}
}
Endpoint: POST /api/console/v1/connections/{conn_id}/team-access/remove
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/team-access/remove \
-d '{
"email": "[email protected]"
}'
Response: 200: OK
{
"email": "[email protected]"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/change-plan
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/change-plan \
-d '{
"active_plan": {
"id": "currentPlanID",
"started_at": "2025-07-13T01:00:00Z",
"expires_at": "2025-08-31T01:00:00Z"
},
"plan_id": "newPlanID",
"coupon_code": "CODE" //optional
}'
Response: 200: OK
{
"active_plan": {
"id": "newPlanID",
"started_at": "2025-07-13T01:00:00.00Z",
"expires_at": "2025-08-10T10:55:10.913Z"
},
"coupon_code": "CODE",
"is_coupon_applied": true
}
Only for connection without an active plan. If the connection has an active plan, use endpoint
/recreate-connection.
Endpoint: /api/console/v1/connections/{conn_id}
Example:
curl --request DELETE \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id} \
-d '{
"reason": "other reason to delete"
}'
Allowed reason values:
Response: 200: OK
{
"id": "deleted_connection_id"
}
Endpoint: GET /api/console/v1/connections/{conn_id}/sms-history
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/sms-history
Response: 200: OK
{
"sms_messages": [
{
"id": "sms_id",
"message": "Example message",
"from": "Somebody",
"from_contact": "Mike (may be empty)",
"created_at": "2025-06-01T04:24:48Z"
}
]
}
Endpoint: /api/console/v1/connection/{connection_id}/command-push
Example:
curl --request POST \
--url https://iproxy.online/api/console/v1/connection/{connection_id}/command-push
--header 'Authorization: Bearer <user_api_key>'
-d '{"action":"<command_name>", "<command_name>_params": {}}'
Allowed actions:
Action with params:
Response: 200:
{"message": "{action} command has been sent"}
Endpoint: GET /api/console/v1/connections-status
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections-status
Response: 200: OK
{
"connections": [
{
"connection_id": "{conn_id}",
"online_status": "online|offline|nodata|flapping", // now offline == nodata
"last_online_status_update": "2025-07-11T10:58:51.42Z", // unless nodata
}
]
}
Endpoint: POST /api/console/v1/connections/{conn_id}/prolongate-plan
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/prolongate-plan \
-d '{
"active_plan": {
"id": "BNyW1yBaln",
"started_at": "2025-07-13T05:01:37.192Z",
"expires_at": "2025-08-01T04:44:58Z"
},
"coupon_code": "CODE",
"days": 30 // must be multiplier of current plan 'days', like 30, 60, 90
}'
Response: 200: OK
{
"is_coupon_applied": true,
"active_plan": {
"id": "BNyW1yBaln",
"started_at": "2025-07-13T04:45:03.26Z",
"expires_at": "2025-08-01T04:44:58Z"
}
}
Endpoint: POST /api/console/v1/connections/{conn_id}/pin-code
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/pin-code
Response: 200: New generated PIN code
{
"pincode": "<generated pin>",
"expires_at": "2025-05-05T05:05:05Z"
}
expires_at is an RFC 3339 timestamp
Endpoint: POST /api/console/v1/connections/{conn_id}/api-key
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/api-key
Response: 200: New key generated
{
"api_key": "new_connection_api_key"
}
Endpoint: /api/console/v1/recreate-connection
Example:
curl --request POST \
--url https://iproxy.online/api/console/v1/recreate-connection \
--header 'Authorization: Bearer <user_api_key>' \
-d '{
"connection_id": "",
"name": "new_connection_name",
"server_id": "servers_id",
"description": "new_connection_description", //optional
"prolongation_enabled": true //optional
}'
Response: 201: OK
{
"id": "new_connection_id"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/proxy-access
Request Body:
{
"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 timestamp
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/proxy-access \
-d '{
"listen_service": "socks5",
"auth_type": "userpass",
"description": "new proxy description"
}'
Response: 201: A proxy access created
{
"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"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/proxy-access/{proxy_id}/update
Request Body:
{
"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 timestamp
all fields are optional, only set fields are updated
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: Updated proxy access
{
"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"
}
Endpoint: GET /api/console/v1/connections/{conn_id}/proxy-access
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/proxy-access
Response: 200: List of proxy accesses
{
"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 timestamp
Endpoint: GET /api/console/v1/proxy-access
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/proxy-access
Response: 200: List of proxy accesses
{
"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": "1xDwekE12",
"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 timestamp
Endpoint: DELETE /api/console/v1/connections/{conn_id}/proxy-access/{proxy_id}
Example:
curl --request DELETE \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/proxy-access/{proxy_id}
Response: 200: Proxy successfully deleted
{
"id": "4cbI8O21Rd"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/ovpn-access
Request Body:
{
"name": "new VPN name",
"description": "new VPN description",
}
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/ovpn-access \
-d '{
"name": "new VPN name",
"description": "new VPN description"
}'
Response: 201: A VPN access created
{
"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 timestamp
Endpoint: GET /api/console/v1/connections/{conn_id}/ovpn-access
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/ovpn-access
Response: 200: List of VPN accesses
{
"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 timestamp
Endpoint: GET /api/console/v1/ovpn-access
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/ovpn-access
Response: 200: List of VPN accesses
{
"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 timestamp
Endpoint: GET /api/console/v1/connections/{conn_id}/ovpn-access/{ovpn_id}/config
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/ovpn-access/{ovpn_id}/config
Response: 200: List of VPN accesses
{
"config_base64": "base64 representation of ovpn config",
"config_sha1": "sha1 checksum of a config"
}
Endpoint: POST /api/console/v1/connections/{conn_id}/ovpn-access/{ovpn_id}/update
Request Body:
{
"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
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: Updated VPN access
{
"name": "VPN name",
"description": "VPN description",
"status": "active",
"dns": [],
"id": "ovpn_id",
"connection_id": "{conn_id}",
"expires_at": "2026-01-01T01:01:01Z"
}
Endpoint: DELETE /api/console/v1/connections/{conn_id}/ovpn-access/{ovpn_id}
Example:
curl --request DELETE \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/ovpn-access/{ovpn_id}
Response: 200: Deleted VPN access
{
"id": "ovpn_id"
}
Endpoint: /api/console/v1/connections/{conn_id}/traffic/by-day
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url 'https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: Traffic stats for the requested period
{
"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
Endpoint: /api/console/v1/connections/{conn_id}/traffic/by-hour-port
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url 'https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: Traffic stats for the requested period
{
"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
Endpoint: /api/console/v1/connections/{conn_id}/uptime
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url 'https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: Uptime stats for the requested period
{
"uptime": [{
"date": "2025-03-01T14:00:00Z",
"status": "UP"
]}
}
date is an RFC 3339 timestamp
Endpoint: /api/console/v1/connections/{conn_id}/ip-history
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url 'https://iproxy.online/api/console/v1/connections/{conn_id}/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
Response: 200: IP history for the requested period
{
"ip_history": [{
"date": "2025-03-01T14:00:00Z",
"ipv4": "127.0.0.1",
"ipv6": "::1"
]}
}
date is an RFC 3339 timestamp
Endpoint: POST /api/console/v1/connections/{conn_id}/actionlinks
Request Body: { "action": "reboot", "comment": "link for client AAAA" }
action string parameter is one of [reboot changeip]
comment string is optional parameter
Example:
curl --request POST \
--header "Authorization: Bearer <user_api_key>" \
--header 'Content-Type: application/json' \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/actionlinks \
-d '{"action": "changeip", "comment": "link for client AAAA"}'
Response: 201: A link created
{
"id": "xyzXYZ"
}
Endpoint: GET /api/console/v1/connections/{conn_id}/actionlinks
action parameter is one of [reboot changeip]
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/actionlinks
Response: 200: List of links retrieved
{
"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 timestamp
Endpoint: GET /api/console/v1/actionlinks
action parameter is one of [reboot changeip]
Example:
curl --request GET \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/actionlinks
Response: 200: List of links retrieved
{
"action_links": [{
"id": "xyzXYZ",
"link": "https://i.fxdx.in/actionlinks/do/reboot/xyzXYZ",
"action": "reboot",
"connection_id": "abcdABCD",
"comment": "link for client AAAA",
"created_at": "2025-03-19T13:06:30Z"
}]
}
created_at is an RFC 3339 timestamp
Endpoint: DELETE /api/console/v1/connections/{conn_id}/actionlinks/{link_id}
Example:
curl --request DELETE \
--header "Authorization: Bearer <user_api_key>" \
--url https://iproxy.online/api/console/v1/connections/{conn_id}/actionlinks/{link_id}
Response: 200 OK
{
"id": "xyzXYZ"
}
Note for better usability:
Endpoint: GET https://i.fxdx.in/actionlinks/do/{action}/{link_id}
Example:
curl --request GET \
--url https://i.fxdx.in/actionlinks/do/{action}/{link_id}
Response: 200 OK
{
"message": "{action} command has been sent"
}