[{"name":"Get API Key","description":"Returns your API key.\n\nYou can request it only if logged in to the site.\n\n\nResponse examples
\n\n\n{\n \"success\": true,\n \"key\": \"ieHie2hilahw0chuifex7ceu8cai7coc\"\n}\n
\n\n\n{\n \"success\": false,\n \"error\": \"You are not allowed to use API.\"\n}\n
\n\n ","url":"/api/proxy/get_key/"},{"name":"Change proxy external IP","description":"Rotates proxy external IP and returns current external IP.\n\nIn case of check failure `new_ip` and/or `old_ip` values may return null.\n\nToo frequent requests will be throttled with HTTP 429 error, in this case response usually has \"Retry-After\" HTTP header with recommended sleep time in seconds before the next retry.\nMinimal time between requests for specific proxy is 5 sec. Your request may be still throttled if the previous call taking more than 5 sec and is not completed yet. Maximum time for external IP to be changed not going to exceed 165 sec.\n\n## Request options:\n\n - ***key*** (required if not authenticated)\n\n API key.\n\n - ***id*** (required)\n\n Proxy ID (recommended). Alternatively *domain:port* notation also acceptable.\n\n - *async* (default: `false`)\n\n Request external IP change and return immediately without waiting for the result.\n In a few seconds you may manually verify if external IP was changed or not by calling our API [Get proxy external IP](/api/proxy/ext_ip/) endpoint, or by making HTTP/HTTPS request via your proxy to [airproxy.io/ip](http://airproxy.io/ip) or similar third party service (like [ifconfig.co](http://ifconfig.co), [ipecho.net/plain](http://ipecho.net/plain), etc.; such services may have various rate limits you should be aware of).\n\n - *show_old_ip* (default: `false`)\n\n Include previous IP to response as `old_ip`.\n For synchronous call there is no any overhead to include it but for historic reasons it is omitted by default.\n For asynchronous call and `from_cache=false` current external IP will be updated first.\n In rare cases old and new IPs can be the same and/or null.\n\n - *from_cache* (default: `false`)\n\n Makes sense only for `async=true` and `show_old_ip=true`.\n If true return cached external IP value as `old_ip`, else get fresh one before external IP change call.\n Max time used for external IP caching is 120 sec.\n\n - *fp* (default: `keep`)\n\n ***Experimental***, use at your own risk.\n\n Apply TCP/IP fingerprint to outgoing packets.\n\n This might be useful to pretend that you use different Operation System if the remote host using passive traffic analyzer (like \"p0f\").\n If you use this setting to pretend that you use different OS, you should care about other parts of your infrastructure to match, e.g. web browser user-agent, version, etc.\n\n Native OS fingerprint of our proxies is Linux, but some ISPs may use transparent proxy on their side, if so TCP/IP fingerprint may be different even if you've applied custom one by this option.\n\n This setting is preserved across multiple change IP calls.\n\n To check existing setup you may use third party services (using your proxy), e.g. `https://tcpip.incolumitas.com/classify?detail=1`\n\n Supported values:\n\n - `keep` (the same as absent argument)\n\n Keep existing settings.\n\n - `reset` or empty string\n\n Reset existing settings - do not apply any fingerprint, use native one (Linux).\n\n - string in p0f v3 TCP SYN format\n\n Apply this fingerprint to all outgoing TCP SYN packets (connection initialization packet).\n For all other packets only TTL value is applied.\n\n Example (Windows 10 variation): `*:128:0:*:64240,*:mss,nop,nop,sok:df,id+:0`\n\n Since it's HTTP GET argument you may need to use urlencoded value, for the example above it's `%2A%3A128%3A0%3A%2A%3A64240%2C%2A%3Amss%2Cnop%2Cnop%2Csok%3Adf%2Cid%2B%3A0` or at least `*:128:0:*:64240,*:mss,nop,nop,sok:df,id%2B:0`\n\n More you may find in `https://github.com/p0f/p0f/blob/master/p0f.fp`\n\n We have plans to create a service to help you check your existing fingerprint (which you may want to apply to your proxies then) but it's not ready yet.\n\n\nResponse examples
\n\n\n{\n \"success\": true,\n \"new_ip\": \"203.0.113.177\",\n \"id\": 123\n}\n
\n\n\n{\n \"success\": true,\n \"new_ip\": null,\n \"old_ip\": \"203.0.113.80\",\n \"id\": 123\n}\n
\n\n\n{\n \"success\": true,\n \"async\": true,\n \"old_ip\": \"203.0.113.177\"\n \"from_cache\": false,\n \"id\": 123,\n}\n
\n\n\nNo such proxy\n
\n\n\n{\n \"detail\": \"Request was throttled. Expected available in 24 seconds.\"\n}\n
\n\n\n{\n \"detail\": \"Request was throttled: previous call is still running. Expected available in less than 42 seconds.\"\n}\n
\n\n ","url":"/api/proxy/change_ip/"},{"name":"Get proxy external IP","description":"Returns proxy current external IP.\n\nIn case of check failure `ip` value may return null.\n\n## Request options:\n\n - ***key*** (required if not authenticated)\n\n API key.\n\n - ***id*** (required)\n\n Proxy ID (recommended). Alternatively *domain:port* notation also acceptable.\n\n - *from_cache* (default: `false`)\n\n If true return cached `ip` value, else get fresh one.\n Max time used for external IP caching is 120 sec.\n\n\nResponse examples
\n\n\n{\n \"success\": true,\n \"ip\": \"203.0.113.183\",\n \"from_cache\": false,\n \"id\": 123\n}\n
\n\n\nNo such proxy\n
\n\n ","url":"/api/proxy/ext_ip/"},{"name":"Get proxy traffic usage","description":"Returns proxy traffic usage for specified time range.\n\n## Request options:\n\n - ***key*** (required if not authenticated)\n\n API key.\n\n - ***id*** (required)\n\n Proxy ID (recommended). Alternatively *domain:port* notation also acceptable.\n\n - *from*\n\n Can be unix time (in UTC timezone) or [iso-8601](https://en.wikipedia.org/wiki/ISO_8601).\n\n OR\n\n *delta* (default: 2592000 aka `30d`)\n\n Timedelta before `till`. Ignored if `from` specified.\n\n Optional suffixes supported:\n\n - `s`: second (assumed if no suffix)\n - `m`: minute\n - `h`: hour\n - `d`: day\n - `w`: week\n\n - *till* (default: `now`)\n\n Can be unix time (in UTC timezone) or [iso-8601](https://en.wikipedia.org/wiki/ISO_8601).\n\n - *speed_unit* (default: `bps`)\n\n Output speed values using this unit.\n Can be one of:\n\n - `bps`: bits per second\n - `Kbps`: kilobits per second (103)\n - `Mbps`: megabits per second (106)\n - `Bps`: bytes per second (8)\n - `KBps`: kilobytes per second (8\\*103)\n - `MBps`: megabytes per second (8\\*106)\n - `KiBps`: kibibytes per second (8\\*1024)\n - `MiBps`: mebibytes per second (8\\*10242)\n\n - *data_unit* (default: `b`)\n\n Output data values using this unit.\n Can be one of:\n\n - `b`: bit\n - `B`: byte (8)\n - `KB`: kilobyte (8\\*103)\n - `MB`: megabyte (8\\*106)\n - `GB`: gigabyte (8\\*109)\n - `KiB`: kibibyte (8\\*1024)\n - `MiB`: mebibyte (8\\*10242)\n - `GiB`: gibibyte (8\\*10243)\n\n\nResponse examples
\n\n\n{\n \"success\": true,\n \"from\": \"2020-07-26T01:30:36Z\",\n \"till\": \"2020-08-25T01:30:36Z\",\n \"speed_avg\": {\n \"unit\": \"bps\",\n \"incoming\": 1848.0,\n \"outgoing\": 189.0,\n \"total\": 2037.0\n },\n \"data\": {\n \"unit\": \"b\",\n \"incoming\": 4777902090.0,\n \"outgoing\": 488797710.0,\n \"total\": 5266699800.0\n },\n \"id\": 123\n}\n
\n\n\n{\n \"success\": false,\n \"error\": \"Failed to get traffic usage\",\n \"id\": 123\n}\n
\n\n ","url":"/api/proxy/traffic/"},{"name":"Reboot proxy's dongle","description":"Request reboot for the dongle related to specified proxy and return immediately.\nThe proxy going to be available 20-60 seconds later.\n\n## Request options:\n\n - ***key*** (required if not authenticated)\n\n API key.\n\n - ***id*** (required)\n\n Proxy ID (recommended). Alternatively *domain:port* notation also acceptable.\n\n\nResponse examples
\n\n\n{\n \"success\": true,\n \"info\": \"Reboot initiated. It may take 20-60 seconds to complete.\",\n \"id\": 123\n}\n
\n\n\n{\n 'success': false,\n 'error': \"Failed to call reboot\",\n \"id\": 123\n}\n
\n\n ","url":"/api/proxy/reboot/"},{"name":"Proxies list","description":"Returns the list of your proxies, optionally filtered by provided options.\n\n## Request options:\n\n - ***key*** (required if not authenticated)\n\n API key.\n\n - *id*\n\n Proxy ID (recommended). Alternatively *domain:port* notation also acceptable.\n\n - *ip*\n\n Proxy public domain (or IP address if it shown as IP address in your UI) (case insensitive).\n\n - *port*\n\n Proxy public port.\n\n - *username*\n\n Proxy username (case sensitive).\n\n - *isp*\n\n ISP (Internet Service Provider) name of SIM card (case sensitive).\n\n - *comment*\n\n Comment exact match (case sensitive).\n\n - *comment_re*\n\n [POSIX regular expression](https://www.postgresql.org/docs/10/functions-matching.html#FUNCTIONS-POSIX-REGEXP) for *comment* field match (case sensitive). Used only if *comment* filtering option is not specified.\n\n\nResponse examples
\n\n\n{\n \"proxies\": [\n {\n \"id\": 9042,\n \"ip\": \"s1.airproxy.io\",\n \"port\": 10142,\n \"username\": \"johndoe\",\n \"password\": \"EThohf9keaSa4h\",\n \"src_whitelist\": [\"203.0.113.200/32\", \"198.51.100.0/24\"],\n \"isp\": \"Wind\",\n \"comment\": \"Nothing is more useful than useless comment\",\n \"in_use_from\": \"2022-05-29T12:29:45Z\",\n \"in_use_till\": \"2022-10-07T10:39:55Z\",\n \"ext_ip_upd_interval\": \"60-90\",\n \"ext_ip_upd_calendar\": \"\"\n },\n {\n \"id\": 9717,\n \"ip\": \"s2.airproxy.io\",\n \"port\": 20114,\n \"username\": \"johndoe\",\n \"password\": \"Chie8eP7oB6fa5\",\n \"src_whitelist\": [],\n \"isp\": \"Vodafone\",\n \"comment\": \"\",\n \"in_use_from\": \"2022-05-29T12:29:45Z\",\n \"in_use_till\": \"2022-10-07T10:39:55Z\",\n \"ext_ip_upd_interval\": null,\n \"ext_ip_upd_calendar\": \"weekly\"\n }\n ],\n \"count\": 2,\n \"success\": true\n}\n
\n\n ","url":"/api/proxy/list/"}]