API Reference

Uptime Monitor

Monitor endpoint availability with configurable checks and alerting

Track the availability and response time of your websites, APIs, and services with scheduled health checks. Uptime monitoring gives you historical uptime percentages, response time trends, and instant alerting when a target goes down — critical for SLA reporting, incident response, and customer trust.

scheduled checksresponse time trackinguptime percentagealerting

Endpoint

GET /v1/monitor/targets
Authentication: Include your API key in the X-API-Key header with every request. All requests go through the API gateway which handles authentication, rate limiting, and usage tracking.
Open Swagger UI (interactive docs)

Request

{
  "url": "https://example.com",
  "interval": 60,
  "timeout": 10
}

Request Fields

FieldTypeDescription
url string Target URL
interval integer Check interval in seconds
timeout integer Request timeout in seconds

Response

{
  "id": 1,
  "url": "https://example.com",
  "status": "UP",
  "responseTime": 245,
  "uptime": 99.97,
  "lastChecked": "2026-03-25T14:30:00Z"
}

Response Fields

FieldTypeDescription
id string Unique identifier
url string Target URL
status string Field value
responseTime integer Field value
uptime number Field value
lastChecked string Field value

Error Codes

StatusMeaning
200Request completed successfully
400Bad request — invalid or missing parameters
401Missing or invalid X-API-Key header
429Rate limit exceeded — check Retry-After header
500Internal server error

Common Error Scenarios

400 Invalid URL format

Request that triggers this:

{"url": "not a url", "interval": 60}

Error response:

{"type": "/problems/validation-error", "title": "Invalid URL", "status": 400, "detail": "'not a url' is not a valid URL"}

How to fix: Use a valid HTTP or HTTPS URL (e.g., https://example.com). Ensure the URL starts with http:// or https://.

400 Invalid interval

Request that triggers this:

{"url": "https://example.com", "interval": 5}

Error response:

{"type": "/problems/validation-error", "title": "Invalid Interval", "status": 400, "detail": "Minimum interval is 60 seconds"}

How to fix: Set interval to at least 60 seconds. Use larger intervals for cost efficiency.

Code Examples

curl -X POST /v1/monitor/targets \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
  "url": "https://example.com",
  "interval": 60,
  "timeout": 10
}' 
// Node.js (18+) or modern browser
const response = await fetch("/v1/monitor/targets", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "url": "https://example.com",
    "interval": 60,
    "timeout": 10
}),
});

const data = await response.json();
console.log(response.status, data);
import requests

response = requests.post(
    "/v1/monitor/targets",
    headers={
        "X-API-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
    "url": "https://example.com",
    "interval": 60,
    "timeout": 10
},
)

print(response.status_code)
print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{
  "url": "https://example.com",
  "interval": 60,
  "timeout": 10
}`)
	req, _ := http.NewRequest("POST", "/v1/monitor/targets", body)
	req.Header.Set("X-API-Key", "YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, _ := io.ReadAll(resp.Body)
	fmt.Println(resp.StatusCode)
	fmt.Println(string(data))
}
{
  "name": "uptime_monitor",
  "description": "Monitor endpoint availability with configurable checks and alerting",
  "inputSchema": {
    "type": "object",
    "properties": {
      "api_key": {"type": "string", "description": "Your Orovai API key"},
      "request": {"type": "object", "description": "Request body"}
    },
    "required": ["api_key", "request"]
  },
  "endpoint": "/v1/monitor/targets",
  "method": "POST",
  "headers": {
    "X-API-Key": "{{api_key}}",
    "Content-Type": "application/json"
  }
}

API Reference