Authentication
To use the API, you must have an active account in the system and an authorization token. The authorization token can be generated in the personal profile under the «API» section.
Using the generated token
The generated token must be included in the HTTP Authorization header for all API requests.
Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU
Example of a request to retrieve active events using the curl utility (please replace with your token):
curl --location 'https://detector404.com/api/v1/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
API limitations
You can request data for a month, quarter, or year (depending on your account permissions). Request frequency to the API is subject to the following limitations:
"White list"
Method for obtaining the list of addresses from which detector404 performs availability checks
URL
/api/v1/whitelist
Method
GET
Description of the returned data
Success returns a JSON object with:
Note
This method uses a separate authorization token, available to partners upon request.
Example
Request:
curl --location 'https://detector404.com/api/v1/whitelist' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
[ { "ip": "108.62.50.132", "city": "New York", "active": true }, { "ip": "130.117.76.67", "city": "Amsterdam", "active": true }, { "ip": "62.67.41.60", "city": "Frankfurt", "active": true } ]
Events
Method for retrieving current active events
URL
/api/v1/alerts
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Possible event types and additional fields, specific to each type:
url - page unavailability, additional fields:
latency - significant response delay for a page from a specific provider in a particular city, with additional fields:
isp - problems with the provider in the city, additional fields:
city - issues in the city, additional fields:
complaints - surge in user complaints, additional fields:
function - certain service function has stopped working, with additional fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "id": 17112941194, "time": "2024-03-24T15:28:07.717409+00:00", "type": "complaints", "service": "Google", "num": 14 }, { "id": 17112941193, "time": "2024-03-24T15:28:07.717409+00:00", "type": "latency", "provider": "Singtel", "place": "Mumbai", "url": "https://google.com/", "service": "Google", "num": 11.794 }, { "id": 17112926215, "time": "2024-03-24T15:03:41.542004+00:00", "type": "url", "url": "https://twitch.tv", "service": "Twitch", "num": 5 } ] }
Response in case of an error:
``` { "success": false, "error": "An error occurred during the request execution; please check the parameters." }
```
Filtered Events
Method for obtaining current active events exceeding thresholds specified in the user's profile
URL
/api/v1/alerts/filtered
Method
GET
Description of the returned data
The only difference from the /alerts method is that it returns not all current events, but only those for which the value of the additional parameter num is no less than the threshold specified in the user's profile for that event type.
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Possible event types and additional fields, specific to each type:
url - page unavailability, additional fields:
latency - significant response delay of a page from a specific provider in a particular city, with additional fields:
isp - problems with the provider in the city, with additional fields:
city - issues in the city, with additional fields:
complaints - spike in user complaints, with additional fields:
function - certain service function has stopped working, with additional fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/alerts/filtered' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "id": 17112941194, "time": "2024-03-24T15:28:07.717409+00:00", "type": "complaints", "service": "Google", "num": 14 }, { "id": 17112941193, "time": "2024-03-24T15:28:07.717409+00:00", "type": "latency", "provider": "Singtel", "place": "Mumbai", "url": "https://google.com/", "service": "Google", "num": 11.794 }, { "id": 17112926215, "time": "2024-03-24T15:03:41.542004+00:00", "type": "url", "url": "https://twitch.tv", "service": "Twitch", "num": 5 } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Industries
Method for retrieving the list of industries in the service classification
URL
/api/v1/branches
Method
GET
Description of the returned data
Success returns a JSON object with:
Example
Request:
curl --location 'https://detector404.com/api/v1/branches' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ "Popular", "Telecom", "Chats", "Finances", "IT", "VPN", "Travel", "Games", "Education" ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Services
Method for retrieving the list of services
URL
/api/v1/services
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/services' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "name": "Telegram", "urlname": "telegram", "ecosystem": null, "urls": 7, "branches": [ "Chats" ] }, { "name": "Binance", "urlname": "binance", "ecosystem": null, "urls": 1, "branches": [ "Finances" ] } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Industry Services
Method for obtaining the list of services within a specific industry
URL
/api/v1/services/branch/{branch}
Substitutable values:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/services/branch/Chats' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "name": "Telegram", "urlname": "telegram", "ecosystem": null, "urls": 7 }, { "name": "Zoom", "urlname": "zoom", "ecosystem": null, "urls": 1 } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Service Events
Method for obtaining current service events based on monitoring data
URL
/api/v1/service/{service}/alerts
Substitutable value:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Possible event types and additional fields, specific to each type:
url - page unavailability, additional fields:
latency - significant response delay of a webpage from a specific provider in a particular city, with additional fields:
isp - issues with the provider in the city (applicable if the service is a communication provider), with additional fields:
complaints - spike in user complaints, with additional fields:
function - certain service function has stopped working, with additional fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/service/google/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "url", "url": "https://www.google.com", "service": "Google", "place": "com", "num": 31, "private": false }, { "id": 17350524134, "time": "2024-12-24T14:02:15.269713+00:00", "type": "latency", "provider": "Vodafone", "place": "Frankfurt", "url": "https://www.google.com", "service": "Google", "num": 0.658, "private": false }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "latency", "provider": "Orange", "place": "Amsterdam", "url": "https://www.google.com", "service": "Google", "num": 1.256, "private": false }, { "id": 17350486902, "time": "2024-12-24T13:10:06.590936+00:00", "type": "latency", "provider": "AT&T", "place": "New York", "url": "https://www.google.com", "service": "Google", "num": 0.651, "private": false } ] }
Answer:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "isp", "provider": "Vodafone", "place": "Frankfurt", "num": 152, }, { "id": 17350524134, "type": "complaints", "time": "2024-12-24T14:02:15.269713+00:00", "service": "Google", "num": 351, }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "function", "service": "Google", "function": "IT", "num": 101 } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Filtered service events
Method to retrieve current service events that exceed the thresholds specified in the user profile
URL
/api/v1/service/{service}/alerts/filtered
Substitutable value:
Method
GET
Description of the returned data
The only difference from the /service/{service}/alerts method is that it returns not all current service events, but only those for which the value of the additional parameter num is no less than the threshold specified in the user's profile for that event type.
Success returns a JSON object with:
The data array consists of objects with the following required fields:
Possible event types and additional fields, specific to each type:
url - page unavailability, additional fields:
latency - significant response delay of a webpage from a specific provider in a particular city, with additional fields:
isp - issues with the provider in the city (applicable if the service is a communication provider), with additional fields:
complaints - spike in user complaints, with additional fields:
function - certain service function has stopped working, with additional fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/service/google/alerts/filtered' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "url", "url": "https://google.com", "service": "Google", "place": "com", "num": 31, "private": false }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "latency", "provider": "Vodafone", "place": "Frankfurt", "url": "https://google.com", "service": "Google", "num": 1.256, "private": false } ] }
Answer:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "isp", "provider": "Vodafone", "place": "Frankfurt", "num": 152, }, { "id": 17350524134, "type": "complaints", "time": "2024-12-24T14:02:15.269713+00:00", "service": "Google", "num": 351, }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "function", "service": "Google", "function": "IT", "num": 101 } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Comments
Method for retrieving the list of user comments about a service for a specific day
URL
/api/v1/service/{service}/comments/date/{date}
Substitutable values:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following required fields:
The category object consists of key-value pairs, where the key is one of the categories assigned to the comment, and the value is an array of subcategory names within that category to which the comment can belong.
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Steam/comments/date/2024-03-19' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "time": "2024-03-19T08:08:31.643480+03:00", "text": "Steam outage", "author": "Donald", "likes": 8, "category": { "Site failure": [ "The site does not open/load/functioning improperly" ] } } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Charts
Method for retrieving data that allows building graphs illustrating the behavior of a service on a specific day
URL
/api/v1/service/{service}/graph/date/{date}
Substitutable values:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data object has the following fields:
All the above arrays consist of two-element arrays, which should be interpreted as [time, value], where the time is a standard UNIX timestamp.
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Steam/graph/date/today' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": { "latency": [[1711289700, 186], [1711290000, 170]], "errors": [[1711290000, 3], [1711290300, 2]], "totals": [[1711290000, 8], [1711290300, 7]], "social": [[1711289700, 1], [1711290000, 1]] } }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Statistics
Method for obtaining statistics on comments and complaints about a service
URL
/api/v1/service/{service}/stats/date/{date}
Substitutable values:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data object has the following fields:
regions - array containing complaint statistics by regions, consisting of objects with the following fields:
complaints - array containing comment statistics by categories, consisting of objects with the following fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Steam/stats/date/2024-03' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": { "regions": [ { "region": "Finland", "percent": 80.76923076923077 }, { "region": "USA", "percent": 3.8461538461538463 } ] "complaints": [ { "complaint": "Site outage", "percent": 42.97520661157025, "detailed": [ { "type": "The site does not open / does not load / is not working.", "percent": 42.97520661157025 } ] }, { "complaint": "Personal account outage", "percent": 37.1900826446281, "detailed": [ { "type": "Cannot access the personal account/app/login", "percent": 30.578512396694215 }, { "type": "Problem with password or account recovery", "percent": 6.6115702479338845 } ] } ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Timeline of issues
Method to obtain information about the presence of service problems with minute-by-minute breakdown
URL
/api/v1/service/{service}/problems/date/{date}
Substitutable values:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data array consists of objects with the following fields:
Note
The method implicitly uses thresholds set by the user in their profile: for the number of cities from which resource inaccessibility is considered problematic, and for the number of complaints over the last 15 minutes, beyond which a spike in complaints is deemed a problem.
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Steam/problems/date/2024-03-15' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ { "time": "2024-03-15 00:00+03:00", "errors": false, "complaints": false }, { "time": "2024-03-15 00:01+03:00", "errors": false, "complaints": false }, ... ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
Status
Method for retrieving the current status of a service based on monitoring data
URL
/api/v1/service/{service}/status
Substitutable value:
Method
GET
Description of the returned data
Success returns a JSON object with:
The data object has the following fields:
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Steam/status' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": { "down": { "https://steamcommunity.com": ["New York city"] }, "social": false } }
Answer:
{ "success": true, "data": { "down": { "https://steamcommunity.com": ["New York city"] }, "social": 95 } }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }
URLs
Method for obtaining the list of pages being monitored
URL
/api/v1/service/{service}/urls
Substitutable value:
Method
GET
Description of the returned data
Success returns a JSON object with:
Example
Request:
curl --location 'https://detector404.com/api/v1/service/Telegram/urls' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Answer:
{ "success": true, "data": [ "https://telegram.org", "https://web.telegram.org", "https://core.telegram.org" ] }
Response in case of an error:
{ "success": false, "error": "An error occurred during the request execution; please check the parameters." }