API version v1
Welcome to the public API reference for version v1. Use it to manage monitors, heartbeats, groups, tags, status pages, alert channels, and related resources from your own applications and automations.
This documentation covers authentication, shared error responses, and the endpoints in the sidebar: monitors, heartbeats, groups, tags, status pages, alert channels, and regions.
All endpoints accept POST with a JSON body. Authenticate with Authorization: Bearer YOUR_API_KEY and keep that key on your server (never in browser JavaScript).
The samples below show how a simple request works in several languages, using POST /api/v1/test as a quick integration check.
Every successful API response includes a rate_limit object (tier, cost, timeframe, limit, used, remaining) for the tier that endpoint consumes. HTTP 429 responses include the same object.
cURL request
curl -X POST "https://downdar.com/api/v1/test" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Node.js request
const response = await fetch('https://downdar.com/api/v1/test', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
});
const result = await response.json();
PHP request
$ch = curl_init('https://downdar.com/api/v1/test');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
],
CURLOPT_POSTFIELDS => '{}',
]);
$result = json_decode(curl_exec($ch), true);
Laravel request
use Illuminate\Support\Facades\Http;
$result = Http::withToken(config('services.downdar.key'))
->acceptJson()
->post('https://downdar.com/api/v1/test', [])
->json();
Symfony request
use Symfony\Contracts\HttpClient\HttpClientInterface;
$response = $httpClient->request('POST', 'https://downdar.com/api/v1/test', [
'auth_bearer' => 'YOUR_API_KEY',
'json' => [],
]);
$result = $response->toArray();
Response
{
"ok": true,
"email": "you@example.com",
"rate_limit": {
"tier": 3,
"cost": 1,
"timeframe": "minute",
"limit": 300,
"used": 45,
"remaining": 255
}
}