Introduction
Welcome to the WonderProxy API! You can use this API to manage your WonderProxy account:
- View your account details
- List all the WonderProxy servers
- List all the WonderProxy servers you've added to your account
- Manage IP address authentication
- Manage your custom DNS entries
Each of the sections below describes a piece of what the API can do. In general, technical details live on the left, and copy/paste-able code samples live on the right.
Authentication
Sample request
curl -i "https://api.wonderproxy.com/v0" \
-u "YOUR_TOKEN:"
WonderProxy automatically creates an API token for you when you sign up. You can view the token in your account.
The WonderProxy API uses HTTP Basic Authentication. Use the API token as your Basic Authentication username, and leave the password empty. You must include your authentication information for each API call.
WonderProxy Servers
A server record
{
"hostname": "melbourne.wonderproxy.com",
"title": "Melbourne",
"ip_count": 3,
"services": [ "proxy" ],
"location": {
"city": "Melbourne",
"country": "au",
"latitude": -37.7833,
"longitude": 144.9667
}
}
The API allows you to obtain a list of every proxy/VPN server in WonderProxy's network, even if you have not added them to your account.
WonderProxy server records
Name | Type | Description |
---|---|---|
hostname |
string | Fully-qualified domain name for the server. |
title |
string | Server title (usually the closest metro area). |
ip_count |
integer | The number of exit IP addresses available. |
services |
array | A list of the WonderProxy services available, including proxy and vpn . |
location |
object | Geographical location details, if requested (see below). |
Server location
Name | Type | Description |
---|---|---|
city |
string | The city that houses the server. |
country |
string | ISO-3166-1 alpha-2 country code for the server location. |
latitude |
float | Latitude coordinate for the server location. |
longitude |
float | Longitude coordinate for the server location. |
List all the WonderProxy servers
Sample request
curl -i "https://api.wonderproxy.com/v0/servers?detail=location" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 21:44:11 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
[
{
"hostname": "melbourne.wonderproxy.com",
"title": "Melbourne",
"ip_count": 3,
"services": [ "proxy" ],
"location": {
"city": "Melbourne",
"country": "au",
"latitude": -37.7833,
"longitude": 144.9667
}
},
{
"hostname": "denver.wonderproxy.com",
"title": "Denver",
"ip_count": 21,
"services": [ "proxy", "vpn" ],
"location": {
"city": "Denver",
"country": "us",
"latitude": 39.7392,
"longitude": -104.9842
}
}
]
Get a list of all the proxy/VPN servers in the WonderProxy network.
HTTP request
GET https://api.wonderproxy.com/v0/servers
Query parameters
Parameter | Values | Description |
---|---|---|
detail |
location |
Include additional information in the response. |
Contract Details
Sample request
curl -i "https://api.wonderproxy.com/v0/contract" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 21:49:57 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 151
Content-Type: application/json; charset=UTF-8
{
"name": "Acme Corporation",
"plan": "corporate",
"period": {
"start": 1424375021,
"end": 1424385021,
"usage": 512000000,
"limit": 100000000000
},
"expiry": 1424385021
}
View a high-level of your account, including network-wide usage.
HTTP request
GET https://api.wonderproxy.com/v0/contract
Contract Servers
A contract server record
{
"server": "joaopessoa",
"hostname": "joaopessoa.wonderproxy.com",
"title": "Joao Pessoa",
"services": [ "proxy", "vpn" ],
"usage": {
"limit": 512000000000,
"current": 53340000,
"last_30_days": 210670000
},
"location": {
"city": "patos",
"country": "br",
"latitude": -7.0833,
"longitude": -34.8333
},
"ips": [
{
"ip": "103.4.37.149",
"port_base": 0,
"status": "ok",
"status_time": 1423604170,
"geostatus": {
"google": {
"status": "crit",
"status_time": 1423604170
}
}
},
{
"ip": "103.4.47.149",
"port_base": 1,
"status": "warn",
"status_time": 1423604170,
"geostatus": {
"maxmind": {
"status": "ok",
"status_time": 1423604170
},
"google": {
"status": "ok",
"status_time": 1423604170
}
}
}
]
}
The API allows you to list details for every proxy/VPN server in that has been added to your account.
Contract server records
Name | Type | Description |
---|---|---|
server |
string | Short server name. server can be used to retrieve an individual server record. |
hostname |
string | Fully-qualified domain name for the server. |
title |
string | Server title (usually the closest metro area). |
services |
array | A list of the WonderProxy services available, including proxy and vpn . |
usage |
object | Your network bandwidth usage, if requested (see below). |
location |
object | Geographical location details, if requested (see below). |
ips |
array | A list of the exit IP addresses available from the server (see below). |
Usage details
Name | Type | Description |
---|---|---|
limit |
integer | If you receive detailed server billing, your bandwith limit for this server. Otherwise, the network limit for your account. |
current |
integer | The server bandwidth you have logged for the current billing period, in bytes. |
last_30_days |
integer | The server bandwidth you have logged for the last 30 days, in bytes. |
Server location
Name | Type | Description |
---|---|---|
city |
string | The city that houses the server. |
country |
string | ISO-3166-1 alpha-2 country code for the server location. |
latitude |
float | Latitude coordinate for the server location. |
longitude |
float | Longitude coordinate for the server location. |
Server IP details
Name | Type | Description |
---|---|---|
ip |
string | Exit IP address |
port_base |
integer | Value to be added to your port scheme to access this IP address. For example, if port_base is 4 , you could use ports 10004 , 11004 , 12004 , etc. See our port documentation for more details. |
status |
string | Current server availability. One of ok , warn , crit , or unknown . |
status_time |
integer | The timestamp in epoch time of the last server status check. |
geostatus |
object | If requested, a collection of third-party Geo-IP providers. geostatus contains a property for each provider (e.g. google or yahoo ). Each provider property includes the current status of their location results and the last time the location was checked. |
List all contract servers
Sample requests
curl -i "https://api.wonderproxy.com/v0/contract/servers" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/servers?server=denver,london&detail=usage" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/servers?detail=location,usage,geostatus" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 21:51:18 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
[
{
"server": "joaopessoa",
"hostname": "joaopessoa.wonderproxy.com",
"title": "Joao Pessoa",
"services": [ "proxy", "vpn" ],
"usage": {
"limit": 512000000000,
"current": 53340000,
"last_30_days": 210670000
},
"location": {
"city": "patos",
"country": "br",
"latitude": -7.0833,
"longitude": -34.8333
},
"ips": [
{
"ip": "103.4.37.149",
"port_base": 0,
"status": "ok",
"status_time": 1423604170,
"geostatus": {
"google": {
"status": "crit",
"status_time": 1423604170
}
}
},
{
"ip": "103.4.47.149",
"port_base": 1,
"status": "warn",
"status_time": 1423604170,
"geostatus": {
"maxmind": {
"status": "ok",
"status_time": 1423604170
},
"google": {
"status": "ok",
"status_time": 1423604170
}
}
}
]
},
{
"server": "melbourne",
"hostname": "melbourne.wonderproxy.com",
"title": "Melbourne",
"services": [ "proxy" ],
"usage": {
"limit": 512000000000,
"current": 53340000,
"last_30_days": 210670000
},
"location": {
"city": "melbourne",
"country": "au",
"latitude": -37.7833,
"longitude": 144.9667
},
"ips": [
{
"ip": "103.4.37.149",
"port_base": 1,
"status": "ok",
"status_time": 1423604170,
"geostatus": {
"google": {
"status": "crit",
"status_time": 1423604170
}
}
}
]
}
]
List all the proxy/VPN servers added to your account. Each server listed includes its name, hostname and all available IP addresses.
HTTP request
GET https://api.wonderproxy.com/v0/contract/servers
Query parameters
Parameter | Values | Description |
---|---|---|
detail |
location , geostatus , usage |
Include geographical location information, geo-IP accuracy information and/or contract usage details. |
server |
Any valid server name | Only include the servers requested. |
Retrieve one contract server
Sample requests
curl -i "https://api.wonderproxy.com/v0/contract/servers/melbourne" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/servers/melbourne?detail=location,usage" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 21:53:13 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 851
Content-Type: application/json; charset=UTF-8
{
"server": "melbourne",
"hostname": "melbourne.wonderproxy.com",
"title": "Melbourne",
"services": [ "proxy" ],
"usage": {
"limit": 512000000000,
"current": 53340000,
"last_30_days": 210670000
},
"location": {
"city": "melbourne",
"country": "au",
"latitude": -37.7833,
"longitude": 144.9667
},
"ips": [
{
"ip": "103.4.37.149",
"port_base": 1,
"status": "ok",
"status_time": 1423604170
}
]
}
Get details for one server that has already been added to your account.
HTTP request
GET https://api.wonderproxy.com/v0/contract/servers/{server-name}
URI parameters
Parameter | Description |
---|---|
server-name |
Any valid server name |
Query parameters
Parameter | Values | Description |
---|---|---|
detail |
location , geostatus , usage |
Include geographical location information, geo-IP accuracy information and/or contract usage details. |
IP Authentication
An IP address on the IP authlist
{
"id": 1,
"ip": "123.52.25.12",
"user": "joe",
"user_active": true,
"expiry": 1423699016
}
IP Authentication is useful for automated systems, or systems where the IP address accessing WonderProxy's servers changes regularly. With IP Authentication, you don't need to authenticate to the network with a username and password, since your IP address is already authenticated.
IP authentication records
Name | Type | Description |
---|---|---|
id |
integer | Unique identifier. You can use id to manage individual IP address records. |
ip |
string | IP address. |
user |
string | The username that connections from ip will be assigned to. The user must have Proxy User privileges to access the proxy network. |
user_active |
boolean | Whether the associated user is an active proxy user. |
expiry |
integer | Timestamp that this record will expire, in epoch (Unix) time. |
List all IPs on the authlist
Sample requests
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist?ip=45.180" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist?user=jill,joe" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:13:16 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 220
Content-Type: application/json; charset=UTF-8
[
{
"id": 1,
"ip": "123.52.25.12",
"user": "joe",
"user_active": true,
"expiry": 1423699016
},
{
"id": 2,
"ip": "123.52.25.14",
"user": "jill",
"user_active": false,
"expiry": 1423699616
}
]
Sample response when the authlist is empty
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:13:16 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 220
Content-Type: application/json; charset=UTF-8
[]
Get all the IP addresses on your authlist, with their associated users.
HTTP request
GET https://api.wonderproxy.com/v0/contract/ip-authlist
Query parameters
Parameter | Values | Description |
---|---|---|
ip |
Full or partial IP address | Only include IPs that match the request. |
user |
Usernames from your account | Only include IPs for the requested user(s). |
Remove all IPs from the authlist
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist" \
-u "YOUR_TOKEN:" \
-X "DELETE"
Sample response
HTTP/1.1 204 No Content
Date: Tue, 24 Mar 2015 22:16:13 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Remove all the IP addresses on the authlist associated with your account.
HTTP request
DELETE https://api.wonderproxy.com/v0/contract/ip-authlist
Add one IP to the authlist
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist" \
-u "YOUR_TOKEN:" \
-H "Content-Type: application/json" \
-d \
'{
"ip": "31.14.15.92",
"user": "jack",
"expiry": 1521928827
}'
Sample response
HTTP/1.1 201 Created
Date: Tue, 24 Mar 2015 22:17:40 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Location: /contract/ip-authlist/2675
Content-Length: 75
Content-Type: application/json; charset=UTF-8
{
"id": 2675,
"ip": "31.14.15.92",
"user": "jack",
"user_active": true,
"expiry": 1423699016
}
Sample response when the IP address is already on the authlist
HTTP/1.1 409 Conflict
Date: Thu, 26 Mar 2015 17:26:21 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 57
Content-Type: application/json; charset=UTF-8
{
"message": "That IP address is already on the authlist"
}
Add a new IP address to the authlist for a user on your account. The API responds with the new authlist record, and a Location
header pointing to the new resource.
In some cases the API may not be able to add the new record:
- The IP address is already on the authlist (for any WonderProxy contract).
- The username is not an active user on your contract.
- Any of the parameters are invalid.
Instead, the API will return an error.
HTTP request
POST https://api.wonderproxy.com/v0/contract/ip-authlist
HTTP parameters
Parameter | Required | Type | Description |
---|---|---|---|
ip |
No | string | The IP address to add to the authlist. If you don't specify an IP address, the API will use the IP address you're making the request from. |
user |
Yes | string | The username that requests from ip will be assigned to. |
expiry |
Yes | integer | The timestamp in epoch time that the authlist entry will expire. |
Retrieve one IP from the authlist
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist/2675" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:19:32 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 75
Content-Type: application/json; charset=UTF-8
{
"id": 2675,
"ip": "31.14.15.92",
"user": "jack",
"user_active": true,
"expiry": 1423699016
}
Get the details for one authlist entry.
HTTP request
GET https://api.wonderproxy.com/v0/contract/ip-authlist/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of an IP authlist entry applied to your account (from the /contract/ip-authlist list). |
Modify one IP on the authlist
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist/2675" \
-u "YOUR_TOKEN:" \
-H "Content-Type: application/json" \
-X "PATCH" \
-d \
'{
"ip": "31.14.15.93",
"expiry": 1521938827
}'
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:20:20 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 75
Content-Type: application/json; charset=UTF-8
{
"id": 2675,
"ip": "31.14.15.93",
"user": "jack",
"user_active": true,
"expiry": 1521938827
}
Change the details of one IP address on the authlist. The API responds with the complete modified record.
In some cases the API may not be able to modify the record:
- The IP address is already on the authlist (for any WonderProxy contract).
- The username is not an active user on your contract.
- Any of the parameters are invalid.
Instead, the API will return an error.
HTTP request
PATCH https://api.wonderproxy.com/v0/contract/ip-authlist/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of an IP authlist entry applied to your account (from the /contract/ip-authlist list). |
HTTP parameters
Parameter | Required | Type | Description |
---|---|---|---|
ip |
Yes | string | The IP address to add to the authlist. |
user |
Yes | string | The username that requests from ip will be assigned to. |
expiry |
Yes | integer | The timestamp in epoch time that the IP authlist entry will expire. |
Remove one IP from the authlist
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/ip-authlist/2675" \
-u "YOUR_TOKEN:" \
-X "DELETE"
Sample response
HTTP/1.1 204 No Content
Date: Tue, 24 Mar 2015 22:24:04 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Remove a single IP address from the authlist.
HTTP request
DELETE https://api.wonderproxy.com/v0/contract/ip-authlist/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of an IP authlist entry applied to your account (from the /contract/ip-authlist list). |
Custom DNS
One custom DNS entry
{
"id": 1,
"server": "denver",
"hostname": "www.google.com",
"ip": "123.41.250.19",
"expiry": 1423699016,
"status": "active"
}
With Custom DNS, you can instruct a WonderProxy server to resolve a given hostname to a specific IP. This allows users to test specific servers within a cluster, bypass CDNs, or otherwise instruct WonderProxy to hit the given IP.
You connect to servers using Custom DNS by adding 500
to the port number. If you had been accessing our server on port 10000
, then accessing the server on port 10500
will trigger your custom DNS entries.
Custom DNS records
Name | Type | Description |
---|---|---|
id |
integer | Unique identifier. You can use id to manage individual custom DNS entries. |
server |
string | The proxy server where this DNS entry will be active. |
hostname |
string | The hostname that will be overridden. |
ip |
string | IP address that hostname will point to. |
expiry |
integer | Timestamp that this DNS entry will expire, in epoch (Unix) time. |
status |
One of pending , active , expiring or expired |
Current status of the DNS entry. We'll keep expiring and expired DNS entries in our system for 30 days. |
List all custom DNS entries
Sample requests
curl -i "https://api.wonderproxy.com/v0/contract/overrides" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/overrides?ip=45.18.27.31" \
-u "YOUR_TOKEN:"
curl -i "https://api.wonderproxy.com/v0/contract/overrides?server=denver,riyadh" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 21:56:01 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
[
{
"id": 1,
"server": "denver",
"hostname": "www.google.com",
"ip": "123.41.250.19",
"expiry": 1423699016,
"status": "active"
},
{
"id": 2,
"server": "riyadh",
"hostname": "www.google.com",
"ip": "123.41.250.29",
"expiry": 1423699316,
"status": "expiring"
}
]
List all the custom DNS entries applied to your account, including expired/expiring entries.
HTTP request
GET https://api.wonderproxy.com/v0/contract/overrides
Query parameters
Parameter | Values | Description |
---|---|---|
ip |
An IP address | Only include DNS entries for the IP address requested. |
server |
Any valid server name | Only include DNS entries for the servers requested. |
Remove all custom DNS entries
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/overrides" \
-u "YOUR_TOKEN:" \
-X "DELETE"
Sample response
HTTP/1.1 204 No Content
Date: Tue, 24 Mar 2015 21:58:52 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Remove all the custom DNS entries associated with your account.
HTTP request
DELETE https://api.wonderproxy.com/v0/contract/overrides
Add one custom DNS entry
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/overrides" \
-u "YOUR_TOKEN:" \
-H "Content-Type: application/json" \
-d \
'{
"server": "denver",
"hostname": "google.com",
"ip": "31.14.15.92",
"expiry": 1521928827
}'
Sample response
HTTP/1.1 201 Created
Date: Tue, 24 Mar 2015 22:02:37 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Location: /contract/overrides/5523
Content-Length: 111
Content-Type: application/json; charset=UTF-8
{
"id": 5523,
"server": "denver",
"hostname": "google.com",
"ip": "31.14.15.92",
"expiry": 1521928827,
"status": "pending"
}
Sample response when the hostname is already overridden
HTTP/1.1 409 Conflict
Date: Thu, 26 Mar 2015 17:47:15 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
X-Server: Webdev
X-Powered-By: PHP/5.4.36-0+deb7u3
Content-Length: 61
Content-Type: application/json; charset=UTF-8
{
"message": "That server/hostname combination already exists"
}
Add one new custom DNS entry to your account. The API responds with the new entry, and adds a Location
header pointing to the new resource.
In some cases the API may not be able to add the new entry:
- The hostname is already overridden on the server you requested (for any WonderProxy contract).
- The server you requested is not part of your account.
- Any of the parameters are invalid.
Instead, the API will return an error.
HTTP request
POST https://api.wonderproxy.com/v0/contract/overrides
HTTP parameters
Parameter | Required | Type | Description |
---|---|---|---|
server |
Yes | string | The proxy server where this DNS entry will be active. |
hostname |
Yes | string | The hostname to be overridden. |
ip |
Yes | string | The IP address that hostname will point to. |
expiry |
Yes | integer | The timestamp in epoch time that the DNS entry will expire. |
Retrieve one custom DNS entry
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/overrides/5523" \
-u "YOUR_TOKEN:"
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:03:58 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 111
Content-Type: application/json; charset=UTF-8
{
"id": 5523,
"server": "denver",
"hostname": "google.com",
"ip": "31.14.15.92",
"expiry": 1521928827,
"status": "active"
}
Get the details for one custom DNS entry.
HTTP request
GET https://api.wonderproxy.com/v0/contract/overrides/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of a custom DNS entry applied to your account (from the /contract/overrides list). |
Modify one custom DNS entry
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/overrides/5523" \
-u "YOUR_TOKEN:" \
-H "Content-Type: application/json" \
-X "PATCH" \
-d \
'{
"ip": "31.14.15.93",
"expiry": 1521938827
}'
Sample response
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:06:45 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 111
Content-Type: application/json; charset=UTF-8
{
"id": 2,
"server": "denver",
"hostname": "google.com",
"ip": "31.14.15.93",
"expiry": 1521938827,
"status": "pending"
}
Sample response when the server is not part of your contract
HTTP/1.1 409 Conflict
Date: Thu, 26 Mar 2015 17:50:39 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 123
Content-Type: application/json; charset=UTF-8
{
"message": "No changes were made. If you were expecting changes, make sure the server requested is added to your account."
}
Change the details of one custom DNS entry. The API responds with the complete modified entry.
In some cases the API may not be able to modify the entry:
- The hostname is already overridden on the server you requested (for any WonderProxy contract).
- The server you requested is not part of your account.
- Any of the parameters are invalid.
Instead, the API will return an error.
HTTP request
PATCH https://api.wonderproxy.com/v0/contract/overrides/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of a custom DNS entry applied to your account (from the /contract/overrides list). |
HTTP parameters
Parameter | Required | Type | Description |
---|---|---|---|
server |
Yes | string | The proxy server where this DNS entry will be active. |
hostname |
Yes | string | The hostname to be overridden. |
ip |
Yes | string | The IP address that hostname will point to. |
expiry |
Yes | integer | The timestamp in epoch time that the DNS entry will expire. |
Remove one custom DNS entry
Sample request
curl -i "https://api.wonderproxy.com/v0/contract/overrides/5523" \
-u "YOUR_TOKEN:" \
-X "DELETE"
Sample response
HTTP/1.1 204 No Content
Date: Tue, 24 Mar 2015 22:08:21 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Remove a single custom DNS entry.
HTTP request
DELETE https://api.wonderproxy.com/v0/contract/overrides/{id}
URI parameters
Parameter | Type | Description |
---|---|---|
id |
integer | The ID of a custom DNS entry applied to your account (from the /contract/overrides list). |
Errors
Sample request
curl -i "https://api.wonderproxy.com/v0" \
-u "this is a not a token:"
Sample error message
HTTP/1.1 401 Unauthorized
Date: Wed, 25 Mar 2015 15:21:54 GMT
Server: Apache/2.2.22 (Debian)
X-Frame-Options: SAMEORIGIN
Content-Length: 95
Content-Type: application/json; charset=UTF-8
{
"message": "You are not authenticated. Visit https://wonderproxy.com to get your API token."
}
When the API encounters an error, it will send an HTTP status code in the 4xx
or 5xx
range, along with an error message. In general, a 4xx
status code indicates a problem with your request, and a 5xx
status code indicates a problem with the API.
Code | Name | Description |
---|---|---|
400 | Bad Request | The API didn't understand your request. |
401 | Unauthorized | Your API token was not recognized. |
403 | Forbidden | Your API token is valid, but it does not have access to the resource you requested. |
404 | Not Found | The resource does not exist. |
405 | Method Not Allowed | The HTTP method you used (i.e. GET , POST , etc.) is not valid for the resource you requested. |
409 | Conflict | The update you requested conflicted with existing records (e.g. the hostname in your custom DNS entry is already overridden on the proxy server you requested, or the IP authentication user is not part of your account). |
500 | Internal Server Error | There was a problem on the API side (and the problem has been logged). |
503 | Service Unavailable | The API is down for maintenance. |
Changelog
July 2023
- Server titles are now provided in responses from
/servers
and/contract/servers
.
September 2020
- The Hostname Override feature is now called Custom DNS. The API has not changed.
June 2020
- The IP Whitelist is now IP Authentication, and the API endpoint has
changed from
/whitelist
to/ip-authlist
.