Developer API
Documentation.

Integrate AlwaysUp monitoring directly into your workflows, scripts, and deployments.

Create & Manage Your API Keys

You must be logged in to generate API tokens and view interactive code snippets configured with your credentials.

Getting Started

AlwaysUp.dev offers a robust REST API allowing you to programmatically manage your uptime monitors. All request and response bodies use the standard application/json format.

Authentication Include your API Token in the HTTP request headers as a Bearer token:
Authorization: Bearer your_api_token
Alternatively, pass it via the query string:
?api_token=your_api_token

Endpoint Reference

GET

/api/monitors

Retrieves a list of all monitors configured for your current active team, including their groups and tags.


POST

/api/monitors

Create a new uptime monitor. You must respect your plan's maximum monitor capacity and checking frequency limits.

Parameter Type Status Description
url string Required The target URL or IP address (e.g. https://example.com).
type string Required One of: http, keyword, ping, port, backlink.
check_interval integer Required Seconds between checks. One of: 60, 300, 600, 1200, 3600, 43200, 86400. Free plan minimum is 300 seconds.
keyword string Conditional Required if type is keyword. The string to search for on the page.
port integer Conditional Required if type is port. Connection port number.
backlink_url string Conditional Required if type is backlink. The backlink target domain/URL.
notify_email boolean Optional Send email alerts on downtime events. (Default: false)
notify_slack boolean Optional Send Slack alerts. Paid plans only. (Default: false)
group_id integer Optional Associate monitor with a specific team group ID.

GET

/api/monitors/{id}

Returns full details of a specific monitor, including its associated group, tags, and its 50 most recent execution logs.


PUT

/api/monitors/{id}

Modify parameters of an existing monitor. Fields are identical to monitor creation parameters, but all parameters are optional.


DELETE

/api/monitors/{id}

Permanently deletes an uptime monitor and clears all check histories.


POST

/api/monitors/{id}/toggle

Convenient endpoint to toggle a monitor's active status. Pauses checking if running, resumes checking if paused.

Request Snippets

# 1. List Monitors

curl -H "Authorization: Bearer your_api_token" \
  https://alwaysup.dev/api/monitors

# 2. Create Monitor

curl -X POST \
  -H "Authorization: Bearer your_api_token" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "type": "http",
    "check_interval": 300
  }' \
  https://alwaysup.dev/api/monitors

// Fetch List of Monitors

const response = await fetch('https://alwaysup.dev/api/monitors', {
  headers: {
    'Authorization': 'Bearer your_token',
    'Content-Type': 'application/json'
  }
});
const data = await response.json();
console.log(data);

# Python requests example

import requests
 
headers = {
    'Authorization': 'Bearer your_token',
    'Content-Type': 'application/json'
}
 
# Fetch monitors list
r = requests.get('https://alwaysup.dev/api/monitors', headers=headers)
print(r.json())

// 1. Laravel HttpClient

use Illuminate\Support\Facades\Http;
 
$response = Http::withToken('your_token')
    ->get('https://alwaysup.dev/api/monitors');
 
$monitors = $response->json();

// 2. Native PHP cURL

$ch = curl_init('https://alwaysup.dev/api/monitors');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer your_token',
    'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);

$monitors = json_decode($response, true);

// 3. Native PHP file_get_contents

$options = [
    'http' => [
        'method' => 'GET',
        'header' => "Authorization: Bearer your_token\r\n" .
                    "Content-Type: application/json\r\n"
    ]
];
$context = stream_context_create($options);
$response = file_get_contents('https://alwaysup.dev/api/monitors', false, $context);

$monitors = json_decode($response, true);
Example Response JSON 200 OK
{
  "data": [
    {
      "id": 42,
      "url": "https://example.com",
      "type": "http",
      "status": "up",
      "is_active": true,
      "check_interval": 300,
      "created_at": "2026-06-05T02:00:00.000000Z"
    }
  ]
}

We value your privacy

We use cookies to enhance your browsing experience, analyze site traffic, and deliver personalized content. By clicking "Accept", you consent to our use of cookies. Read our Cookie Policy.