Некоторые функции сайта доступны через API. Для запросов требуется API_KEY, который можно получить в личном кабинете после регистрации.
Для авторизации GET к запросу добавляется параметр `?apikey=[API_KEY]`.
Для POST-запросов параметр `apikey` добавляется в POST.
В случае успешного завершения возвращается ответ в JSON. В случае ошибок в параметрах запроса, описание ошибки будет возвращено в поле `error`.
Код HTTP | Описание |
200 | Ответ получен |
403 | Нет доступа: не указан `API_KEY` или недостаточно прав для функции которую вы запросили. |
5xx | Ошибка сервера. Что-то пошло не так, мы уведомлены об ошибке и скоро ее исправим. |
/api/account/balance
GET
import requests
requests.get("https://fornex.com/api/account/balance", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/account/balance" --get\
--data "apikey=PERSONAL_API_KEY"
{
"balance": 91.0,
"currency": "EUR"
}
/api/account/info
GET
import requests
requests.get("https://fornex.com/api/account/info", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/account/info" --get\
--data "apikey=PERSONAL_API_KEY"
{
"email": "example@fornex.com",
"name": "Example Account"
}
/api/account/invoices
GET
import requests
requests.get("https://fornex.com/api/account/invoices", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/account/invoices" --get\
--data "apikey=PERSONAL_API_KEY"
{
"unpaid_invoices_count": 1,
"unpaid_invoices_amount": 100,
"currency": "EUR"
}
/api/orders/list
GET
import requests
requests.get("https://fornex.com/api/orders/list", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/orders/list" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"cost_month": 148.0,
"expiration_date": "2015-12-18T17:21:46",
"id": "34-1234",
"ipaddress_set": [
"123.123.123.123"
],
"name": "user-defined-name",
"hostname": "srv-123.fornex.org",
"status": "active",
"tariff": "VPS Master",
"tariff_id": 33,
"tariff_price": 140,
"type": "vps"
}
]
/api/plans/vpn
GET
import requests
requests.get("https://fornex.com/api/plans/vpn", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/plans/vpn" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"available_locations": [
"DE",
"NL",
"US",
"RU"
],
"type": "dedicated",
"id": 1,
"price": 10.0
}
]
/api/plans/backups
GET
import requests
requests.get("https://fornex.com/api/plans/backups", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/plans/backups" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"price": 3.0,
"space": 100,
"units": "Gb"
},
{
"price": 4.5,
"space": 150,
"units": "Gb"
},
{
"price": 6.0,
"space": 200,
"units": "Gb"
}
]
/api/plans/vps
GET
import requests
requests.get("https://fornex.com/api/plans/vps", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/plans/vps" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"bandwidth": "100 Мбит/сек",
"cpu_count": 1,
"disk": "10 ГБ",
"id": 433,
"name": "SSD Cloud 1GB",
"price": 5.0,
"ram": "1 ГБ"
}
]
/api/plans/dedicated
GET
import requests
requests.get("https://fornex.com/api/plans/dedicated", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/plans/dedicated" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"bandwidth": "1 Гбит/сек",
"cpu_model": "Intel Xeon E3-1270 (4×3.4Ghz)",
"cpu_count": 1,
"disk": "4 × 300 ГБ SAS 15k",
"name": "DS XeonSAS",
"id": 101,
"price": 198.0,
"ram": "16 ГБ",
"location": "DE"
}
]
/api/plans/hosting
GET
import requests
requests.get("https://fornex.com/api/plans/hosting", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/plans/hosting" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"available_locations": [
"DE",
"RU"
],
"cpu_cores": 1,
"databases": "2",
"hdd_space": 1000,
"mail_domains": "2",
"mailboxes": "20",
"name": "VH-SSD-2",
"id": 33,
"price": 1.0,
"sites": 2
}
]
/api/vps/hard_reset/[order_id]/
POST
order_id
- номер заказаimport requests
requests.post("https://fornex.com/api/vps/hard_reset/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/hard_reset/34-177054/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": "True"
}
Поле `ok` ответа содержит статус выполнения команды.
/api/vps/start/[order_id]/
POST
order_id
- номер заказаimport requests
requests.post("https://fornex.com/api/vps/start/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/start/34-177054/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": "True"
}
Поле `ok` ответа содержит статус выполнения команды.
/api/vps/stop/[order_id]/
POST
order_id
- номер заказаimport requests
requests.post("https://fornex.com/api/vps/stop/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/stop/34-177054/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": "True"
}
Поле `ok` ответа содержит статус выполнения команды.
/api/vps/log_details/[order_id]/
GET
order_id
- номер заказа
log_id
- id записиimport requests
requests.get("https://fornex.com/api/vps/log_details/34-1234/", {
"log_id": 222287,
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/log_details/34-1234/" --get\
--data "log_id=222287&apikey=PERSONAL_API_KEY"
{
"action": "Установка пароля root",
"completed": false,
"job_action": "set_root_passwd",
"job_state": "ready",
"note": "Выполняется сброс пароля root",
"pk": 222287,
"time": "03.01.2019 11:10",
"user": "username"
}
/api/vps/restart/[order_id]/
POST
order_id
- номер заказаimport requests
requests.post("https://fornex.com/api/vps/restart/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/restart/34-177054/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": "True"
}
Поле `ok` ответа содержит статус выполнения команды.
/api/vps/passwd_reset/[order_id]/
GET
order_id
- номер заказаimport requests
requests.get("https://fornex.com/api/vps/passwd_reset/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/passwd_reset/34-177054/" --get\
--data "apikey=PERSONAL_API_KEY"
{
"resp_id": 1234,
"passwd": "newstrongpassword"
}
`passwd` - ваш новый пароль.
`resp_id` - id команды в истории, по которой можно проверить статус выполнения, см vps_log_details
/api/vps_stat/[order_id]/[field]/[start]--[end].json
GET
order_id
- номер заказаfield
- поле статистики [`cpu`|`memory`|`traffic`|`disk`|`inodes`|`io`]start
- дата началаend
- дата концаimport requests
requests.get("https://fornex.com/api/vps_stat/34-177054/traffic/2015-11-16--2015-11-17.json", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps_stat/34-177054/traffic/2015-11-16--2015-11-17.json" --get\
--data "apikey=PERSONAL_API_KEY"
{
"series": [
{
"color": "#60B5FF",
"data": [
61410.9215552,
65379.49276,
67115.7455904
],
"name": "Входящий",
"pointEnd": 1447773600000,
"pointInterval": 300000,
"pointStart": 1447687200000
},
{
"color": "#61D561",
"data": [
4585.92634648,
4575.14841552,
4636.41519648
],
"name": "Исходящий",
"pointEnd": 1447773600000,
"pointInterval": 300000,
"pointStart": 1447687200000,
"type": "areaspline"
}
],
"subtitle": "16 ноября 2015, 17:18 - 17 ноября 2015, 17:18 (Europe/Moscow)"
}
Поле `series` ответа структурированно в формате для Highcharts, параметры `pointStart`, `pointEnd`, указывают начало и конец в формате `unixtime * 1000`, `pointInterval` - интервал между значениями в поле data.
/api/vps/status/[order_id]/
GET
order_id
- номер заказаimport requests
requests.get("https://fornex.com/api/vps/status/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vps/status/34-177054/" --get\
--data "apikey=PERSONAL_API_KEY"
{
"status": "off"
}
Поле `status` ответа содержит статус VPS.
/api/ssh_keys/add/
POST
title
- название ключаkey
- ключimport requests
requests.post("https://fornex.com/api/ssh_keys/add/", {
"title": "test key",
"key": "ssh-rsa tt3BPrBTUCasdasdGXsCXmiF03LD/f9 test@test",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/add/" \
--data "title=test+key&key=ssh-rsa+tt3BPrBTUCasdasdGXsCXmiF03LD%2Ff9+test%40test&apikey=PERSONAL_API_KEY"
[
{
"date": "19 декабря 2017 г.",
"id": 67,
"key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
"title": "test@test"
}
]
/api/ssh_keys/[order_id]/add/
POST
order_id
- номер заказа
key_pk
- id ключаimport requests
requests.post("https://fornex.com/api/ssh_keys/34-177054/add/", {
"key_pk": "99",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/34-177054/add/" \
--data "key_pk=99&apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/ssh_keys/[order_id]/
GET
order_id
- номер заказаimport requests
requests.get("https://fornex.com/api/ssh_keys/34-177054/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/34-177054/" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"date": "19 декабря 2017 г.",
"id": 67,
"key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
"title": "test@test"
}
]
/api/ssh_keys/
GET
import requests
requests.get("https://fornex.com/api/ssh_keys/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/" --get\
--data "apikey=PERSONAL_API_KEY"
[
{
"date": "19 декабря 2017 г.",
"id": 67,
"key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
"title": "test@test"
}
]
/api/ssh_keys/delete/
POST
key_pk
- id ключаimport requests
requests.post("https://fornex.com/api/ssh_keys/delete/", {
"key_pk": "74",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/delete/" \
--data "key_pk=74&apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/ssh_keys/[order_id]/delete/
POST
order_id
- номер заказа
key_pk
- id ключаimport requests
requests.post("https://fornex.com/api/ssh_keys/34-177054/delete/", {
"key_pk": "74",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ssh_keys/34-177054/delete/" \
--data "key_pk=74&apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/ds/34-[order_id]/traffic_used.json
GET
order_id
- номер заказаimport requests
requests.get("https://fornex.com/api/ds/34-1234/traffic_used.json", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ds/34-1234/traffic_used.json" --get\
--data "apikey=PERSONAL_API_KEY"
{
"limit": 14293651161088.0,
"order": "34-1234 DS XeonNeon (example.net)",
"range_end": "2015-11-21",
"range_start": "2015-10-21",
"used": 3508146044885.079,
"used_rate": 0.24543386468220252
}
/api/ds/34-[order_id]/traffic.json
GET
order_id
- номер заказа
period
- период для отображения статистики [`month`|`year`], по умолчанию - `month`port
- порядковый номер порта, по умолчанию - `0`import requests
requests.get("https://fornex.com/api/ds/34-1234/traffic.json", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/ds/34-1234/traffic.json" --get\
--data "apikey=PERSONAL_API_KEY"
{
"data": [
[
"2015-11-11",
{
"input": 41348840999.42331,
"output": 969929788001.3163
}
],
[
"2015-11-12",
{
"input": 44384423647.10196,
"output": 1019910108491.1565
}
]
],
"order": "34-1234 DS HyperXeon (example.net)",
"period": "month"
}
В ответе: `input`, `output` - трафик в байтах.
На указанный URL будет отправлен POST-запрос
ContentType: 'application/json' {text: 'К тикету добавлен новый комментарий...'}
/api/tickets/webhook_set/
POST
url
- URL на который будет отправлен запрос, для отключения - укажите пустую строкуimport requests
requests.post("https://fornex.com/api/tickets/webhook_set/", {
"url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/tickets/webhook_set/" \
--data "url=https%3A%2F%2Fhooks.slack.com%2Fservices%2FT00000000%2FB00000000%2FXXXXXXXXXXXXXXXXXXXXXXXX&apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/tickets/webhook_info/
GET
import requests
requests.get("https://fornex.com/api/tickets/webhook_info/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/tickets/webhook_info/" --get\
--data "apikey=PERSONAL_API_KEY"
{
"last_error_date": null,
"last_error_message": null,
"url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}
/api/vpn/[order]/config-[proto].ovpn
GET
order
- номер заказаproto
- протокол [`tcp`|`udp`]import requests
requests.get("https://fornex.com/api/vpn/301-12312/config-udp.ovpn", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/vpn/301-12312/config-udp.ovpn" --get\
--data "apikey=PERSONAL_API_KEY"
client dev tun <connection> remote 209.222.104.210 443 udp </connection> ...
Для использования этого метода обратитесь в техподдержку и запросите права на редактирование DNS.
/api/dns/v0.1/add_domain/
POST
name
- Доменное имяip
- IP адресimport requests
requests.post("https://fornex.com/api/dns/v0.1/add_domain/", {
"name": "example.com",
"ip": "127.0.0.1",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/add_domain/" \
--data "name=example.com&ip=127.0.0.1&apikey=PERSONAL_API_KEY"
{
"ok": true,
"name": "example.com"
}
/api/dns/v0.1/[name]/entry_set/add/
POST
name
- домен
host
- Хостнейм записи: `@, *, subdomain`type
- Тип записи: [`A`|`AAAA`|`TXT`|`SPF`|`CNAME`|`NS`|`MX`|`SRV`|`CAA`]value
- Значение записи, в соответствии с типом, например IP для A-записейttl
- Время жизни (не обязательное, по умолчанию: 3600 сек.): [`120`(2 мин.) |`300`(5 мин.) |`600`(10 мин.) |`900`(15 мин.) |`1800`(30 мин.) |`3600`(1 час) |`7200`(2 часа) |`18000`(5 часов) |`43200`(12 часов) |`86400`(1 день) ]prio
- Приоритет, используется только для SRV и MXimport requests
requests.post("https://fornex.com/api/dns/v0.1/example.com/entry_set/add/", {
"host": "example",
"type": "A",
"value": "1.2.3.4",
"ttl": "600",
"prio": "5",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/entry_set/add/" \
--data "host=example&type=A&value=1.2.3.4&ttl=600&prio=5&apikey=PERSONAL_API_KEY"
{
"ok": true,
"pk": 123
}
/api/dns/v0.1/[name]/entry_set.json
GET
name
- домен
q
- фильтр записейimport requests
requests.get("https://fornex.com/api/dns/v0.1/example.com/entry_set.json", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/entry_set.json" --get\
--data "apikey=PERSONAL_API_KEY"
{
"entry_set": [
{
"id": 12344,
"host": "",
"prio": null,
"type": "A",
"ttl": 600,
"value": "127.0.0.1"
},
{
"id": 12345,
"host": "",
"type": "MX",
"prio": 1,
"ttl": null,
"value": "aspmx.l.google.com"
}
]
}
/api/dns/v0.1/[name]/entry_set/[pk]/
POST
name
- доменpk
- ID записи
host
- Хостнейм записи: `@, *, subdomain`type
- Тип записи: [`A`|`AAAA`|`TXT`|`SPF`|`CNAME`|`NS`|`MX`|`SRV`|`CAA`]value
- Значение записи, в соответствии с типом, например IP для A-записейttl
- Время жизни (не обязательное, по умолчанию: 3600 сек.): [`120`(2 мин.) |`300`(5 мин.) |`600`(10 мин.) |`900`(15 мин.) |`1800`(30 мин.) |`3600`(1 час) |`7200`(2 часа) |`18000`(5 часов) |`43200`(12 часов) |`86400`(1 день) ]prio
- Приоритет, используется только для SRV и MXimport requests
requests.post("https://fornex.com/api/dns/v0.1/example.com/entry_set/366182/", {
"host": "example",
"type": "A",
"value": "1.2.3.4",
"ttl": "600",
"prio": "5",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/entry_set/366182/" \
--data "host=example&type=A&value=1.2.3.4&ttl=600&prio=5&apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/dns/v0.1/domain_list.json
GET
q
- поиск по названию или iptag
- фильтрация по тегуimport requests
requests.get("https://fornex.com/api/dns/v0.1/domain_list.json", {
"q": "10.10.10.18",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/domain_list.json" --get\
--data "q=10.10.10.18&apikey=PERSONAL_API_KEY"
[
{
"name": "test.com",
"created": "2013-04-16T19:07:10",
"updated": "2017-02-05T21:41:25",
"entry_set": [
{
"host": "",
"id": 366182,
"type": "A",
"ttl": null,
"value": "10.10.10.18"
}
],
"tags": []
}
]
Для использования этого метода обратитесь в техподдержку и запросите права на редактирование DNS.
/api/dns/v0.1/[name]/delete_domain/
POST
name
- доменimport requests
requests.post("https://fornex.com/api/dns/v0.1/example.com/delete_domain/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/delete_domain/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/dns/v0.1/[name]/entry_set/[pk]/delete/
POST
name
- доменpk
- ID записиimport requests
requests.post("https://fornex.com/api/dns/v0.1/example.com/entry_set/366182/delete/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/entry_set/366182/delete/" \
--data "apikey=PERSONAL_API_KEY"
{
"ok": true
}
/api/dns/v0.1/[name]/zone_file/
GET
name
- доменimport requests
requests.get("https://fornex.com/api/dns/v0.1/example.com/zone_file/", {
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/dns/v0.1/example.com/zone_file/" --get\
--data "apikey=PERSONAL_API_KEY"
$TTL 21600 @ IN SOA ns1.fornex.com. hostmaster.fornex.com. ( ...
/api/change_ns/[order_id]/
POST
order_id
- номер заказа
nss
- список NS, разделенных запятойimport requests
requests.post("https://fornex.com/api/change_ns/375-13/", {
"nss": "ns1.company.com,ns2.company.com",
"apikey": "PERSONAL_API_KEY"
})
$ curl "https://fornex.com/api/change_ns/375-13/" \
--data "nss=ns1.company.com%2Cns2.company.com&apikey=PERSONAL_API_KEY"
[
{
"ok": true
}
]