Official Platform & API Documentation

Complete Guides & Multi-Language API Reference

Comprehensive developer guides with production code snippets in cURL, Python, TypeScript, Go, Java, PHP, Ruby, C#, Rust, and Terraform.

Module 1

Quickstart & Platform Architecture

Uptara is an enterprise-grade observability and uptime assurance platform engineered with Java 21 Virtual Threads and distributed edge probing.

Global Probing

Probes run concurrently from North America (US-East), Europe (EU-Central), and Asia (AP-South).

Quorum Consensus

Requires 3-region consensus to declare an outage. Zero wake-up false alarms from localized ISP drops.

Virtual Threads

Sub-millisecond probe dispatching powered by Java Project Loom with zero thread-blocking overhead.

Setup in 3 Steps

  1. Register an Account & Workspace: Sign up at /register. A multi-tenant workspace team is automatically created for your organization.
  2. Create Your First Monitor: Navigate to Monitors > Create API Check, enter your target URL, HTTP method, expected status code, and assertion expressions.
  3. Attach Alert Channels: Go to Settings > Alert Webhooks to connect Slack, Discord, PagerDuty, or email notifications.
Module 2

HTTP & REST API Monitoring

Continuous synthetic health checking for microservices, GraphQL APIs, and web endpoints.

Every monitor runs on a configurable interval (from 10s to 300s). In each check cycle, Uptara initiates a secure HTTP/1.1 or HTTP/2 request with precision latency measurement, status code verification, and TLS validation.

ParameterTypeDefaultDescription
nameStringHuman-readable label (e.g. "Core Auth Service")
urlStringFully-qualified endpoint (https://api.domain.com/v1/health)
methodEnumGETGET, POST, PUT, DELETE, PATCH, HEAD
intervalSecondsInteger60Check frequency in seconds (10s, 30s, 60s, 300s)
timeoutMsInteger10000Socket connect & read timeout in milliseconds
expectedStatusCodeInteger200Target HTTP status code for healthy state (e.g. 200, 204)
regionsString"US_EAST"Comma-separated regions (US_EAST, EU_CENTRAL, AP_SOUTH)
quorumThresholdInteger1Number of concurrent regional failures required before incident declaration
clientCertPemStringnullX.509 Client Certificate in PEM format for Mutual TLS
clientKeyPemStringnullPKCS#8 / PKCS#1 Client Private Key in PEM format (write-only)
caCertPemStringnullCustom Root CA certificate in PEM format for private PKI
tlsVerifyServerBooleantrueStrict verification of server TLS certificate trust chain
sslExpiryAlertEnabledBooleantrueTrigger alert when domain or client certificate approaches expiration
sslExpiryThresholdDaysInteger30Days before expiration to trigger SSL_CERTIFICATE_EXPIRING event
Module 3

OAuth2 & Token Auto-Refresh Engine

Autonomous credential management for protected banking, healthcare, and enterprise APIs.

When monitoring endpoints that require OAuth2 authentication, hardcoded tokens expire after minutes or hours. Uptara solves this with an Autonomous Token Renewal Engine:

How Autonomous Token Refresh Works:
  1. Before executing the probe, Uptara checks the cached access token lifecycle.
  2. If the token has expired or is absent, it sends an autonomous renewal request to your tokenUrl with tokenPayload.
  3. It parses the response using tokenExtractionPath (e.g. $.access_token) and caches the fresh token.
  4. If the client credentials or refresh token are permanently revoked, Uptara triggers a specialized TOKEN_EXPIRED alert via Email and Webhook!
OAuth2 Token Refresh Configuration (JSON)
{
  "name": "Protected Core Banking API",
  "url": "https://api.bank.com/v1/accounts/summary",
  "method": "GET",
  "authType": "OAUTH2_REFRESH_TOKEN",
  "tokenUrl": "https://auth.bank.com/oauth/v2/token",
  "tokenPayload": "grant_type=refresh_token&client_id=LIVE_APP&refresh_token=sec_rt_89f3a",
  "tokenExtractionPath": "$.access_token",
  "tokenHeaderName": "Authorization",
  "tokenHeaderFormat": "Bearer {token}"
}
Module 4

Mutual TLS (mTLS) & Client Certificates

Cryptographically verify client identity for zero-trust microservices, financial APIs, and private PKI gateways.

In standard HTTPS (1-Way TLS), only the server authenticates itself to the client. In Mutual TLS (mTLS / 2-Way TLS), the monitoring probe presents an X.509 Client Certificate and proves ownership using its private key, establishing cryptographic identity on every probe.

Client Authentication

Upload standard X.509 PEM certificates (clientCertPem) and PKCS#8/PKCS#1 keys (clientKeyPem).

Custom Root CAs

Support for internal enterprise PKI and private certificate authorities via caCertPem.

Automated Expiry Alerts

Proactive warnings before public or client certificates expire (e.g. 7, 14, 30 days) via Slack and Webhooks.

Zero Private Key Leakage Architecture

Client private keys are strictly write-only, encrypted at rest using AES-256-GCM, and strictly stripped from all read API responses. Only hasClientCert: true is returned to clients.

mTLS Monitor Creation (JSON Payload)
{
  "name": "Secured Core Banking Gateway (mTLS)",
  "url": "https://gateway.internal.corp/v1/health",
  "method": "GET",
  "intervalSeconds": 60,
  "clientCertPem": "-----BEGIN CERTIFICATE-----\nMIICtjCCAZ4CCQCYuou1N+F8m...\n-----END CERTIFICATE-----",
  "clientKeyPem": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BA...\n-----END PRIVATE KEY-----",
  "caCertPem": "-----BEGIN CERTIFICATE-----\nMIICtjCCAZ4CCQCYuou1N+F8m...\n-----END CERTIFICATE-----",
  "tlsVerifyServer": true,
  "sslExpiryAlertEnabled": true,
  "sslExpiryThresholdDays": 30
}
Module 5

Response Assertions & Validations

Verify payload integrity, JSON properties, and body content beyond simple HTTP status codes.

JSON_PATH Assertion

Validates that a JSON expression matches an exact value (e.g. $.status == 'HEALTHY').

CONTAINS Text

Verifies that the HTTP response body contains a designated substring or HTML tag.

REGEX_MATCH

Evaluates complex regex expressions against the raw response body string.

Module 6

Multi-Step Synthetic API Transactions

Chain sequential API calls, pass dynamic variables between steps, and simulate real user journeys.

Synthetic transactions test complex workflows. If any step fails or assertions mismatch, the entire transaction stops and reports the failing step with latency metrics.

Example: 3-Step User Checkout Synthetic Flow
Step 1: Authenticate UserPOST

URL: https://api.store.com/v1/auth/login

Extraction: token=$.jwt_token, userId=$.user.id

Step 2: Fetch Cart & InventoryGET

URL: https://api.store.com/v1/cart/items?user={userId}

Header: Authorization: Bearer {token}

Step 3: Execute Checkout Dry RunPOST

URL: https://api.store.com/v1/checkout/dry-run

Assertion: $.status == 'APPROVED'

Module 7

CronJobs & Heartbeat Monitoring

Dead-man switch monitoring for Celery, Sidekiq, Kubernetes CronJobs, and DB backup scripts.

For background scripts that cannot receive inbound HTTP traffic, create a Heartbeat Monitor. When your script finishes its scheduled task, it sends an HTTP GET/POST ping to your unique URL. If a ping is missed within the expected interval + grace period, an outage alert is immediately dispatched.

Choose Your Implementation Language:
0 2 * * * /app/backup.sh && \
curl -fsS -m 10 --retry 3 \
  https://api.uptara.com/ping/hb_token_123
Module 8

Incident Management & Root-Cause Lifecycle

Automated incident dispatching, engineer timeline notes, and SLA recovery tracking.

Stage 1
INVESTIGATING

Outage detected by global consensus engine.

Stage 2
IDENTIFIED

Engineers diagnose root cause.

Stage 3
MONITORING

Fix deployed; monitoring recovery state.

Stage 4
RESOLVED

Automated verification confirms recovery.

Module 9

Scheduled Maintenance Windows

Suppress false alerts and exclude planned downtime from SLA calculations.

When migrating databases, upgrading server kernels, or deploying large releases, schedule a Maintenance Window. During the active window:

Alerts Suppressed: Outbound email and webhook notifications are automatically silenced.
SLA Preserved: Outage minutes during planned maintenance are excluded from 99.9% uptime compliance metrics.
Public Notice: Your public status page automatically displays a maintenance banner to your customers.
Module 10

Alert Webhooks & HMAC Signatures

Deliver alerts to Slack, Discord, PagerDuty, or custom JSON webhooks with HMAC-SHA256 verification.

Supported Channels & Event Triggers:
WhatsApp Instant Alerts

Direct alerts formatted with emojis & markdown via Meta WhatsApp Cloud API, Twilio, or custom gateways.

Slack Incoming Webhooks

Formatted rich blocks with incident details, direct links, and root-cause summaries.

Discord Webhooks

Embedded color-coded cards (Red for DOWN, Green for RECOVERED, Amber for SSL_CERTIFICATE_EXPIRING).

PagerDuty Events API v2

Direct integration for on-call escalation, automated incident triggering, and auto-resolution.

Generic JSON Webhook

Includes X-Uptime-Signature HMAC header for secure verification.

Event TypeSeverityDescription
MONITOR_DOWNCRITICALTarget endpoint failed health checks or quorum outage confirmed.
MONITOR_RECOVEREDINFOTarget endpoint is back online and passing assertions.
SSL_CERTIFICATE_EXPIRINGWARNINGTarget domain or client mTLS certificate is within expiration threshold days.
TOKEN_EXPIREDWARNINGOAuth2 refresh token or client credentials failed renewal.
HMAC-SHA256 Webhook Verification Code:
import hmac
import hashlib
from flask import Flask, request, jsonify

app = Flask(__name__)
SIGNING_SECRET = "sec_wh_sig_a8f9c0e2"

@app.route("/uptime-webhook", methods=["POST"])
def handle_webhook():
    signature = request.headers.get("X-Uptime-Signature")
    payload = request.get_data()

    # Calculate HMAC-SHA256 digest
    computed = hmac.new(SIGNING_SECRET.encode(), payload, hashlib.sha256).hexdigest()

    if not hmac.compare_digest(signature or "", computed):
        return jsonify({"error": "Invalid HMAC signature"}), 401

    data = request.get_json()
    event_type = data.get("event")
    print(f"Received verified event: {event_type} for monitor {data['monitor']['name']}")
    return jsonify({"status": "received"}), 200
Module 11

Status Pages & White-Label CNAME

Communicate system status transparently on your custom domain with audience subscriptions.

How to Setup White-Label Custom Domains:
  1. In your DNS provider (Cloudflare, AWS Route53, GoDaddy), add a CNAME record:
    CNAME status.yourcompany.com ➔ cname.uptara.com
  2. In your Uptara dashboard, go to Settings > Public Status Page > Custom Domain, enter status.yourcompany.com, and click Save Domain.
  3. Click Verify DNS. Once verified, your branded status page is instantly live with automatic SSL!
Module 12

REST API & API Key Reference

Automate uptime monitoring, incident querying, status pages, and CI/CD pipelines with programmatic Bearer API keys.

What is a REST API Key? (Machine-to-Machine Authentication)

A REST API Key (prefixed with upt_live_...) is a cryptographically generated secret token that allows automated scripts, CI/CD runners, Terraform providers, and backend servers to perform actions in your Uptara workspace without browser logins, passwords, or interactive sessions.

Cryptographic Security

Only cryptographic SHA-256 hashes are stored in the database. The plain key is displayed only once upon generation.

Granular Scopes & Expiry

Configure read-only or full-access scopes and set automatic expirations (30, 90, 365 days) for compliance.

Instant 1-Click Revocation

If an API key is accidentally leaked or committed to Git, revoke it instantly in Settings without resetting your password.

Quickstart: Generating & Authenticating with an API Key
1. Open Settings

Go to Settings > API Keys in your dashboard.

2. Create New Key

Click "Create API Key", provide a descriptive name (e.g. GitHub CI Deployer), and choose scopes.

3. Copy & Vault Key

Copy the secret token (upt_live_...) and store it in your repository secrets or vault.

4. Pass Header

Attach Authorization: Bearer <key> to all HTTP requests to our API.

Authentication Header Format:
Authorization: Bearer upt_live_a1b2c3d4e5f67890abcdef1234567890
Note: The alternative header X-API-Key: upt_live_... is also supported for API gateways and legacy clients.

Popular Automation Recipes

Recipe 1: GitHub Actions CI/CD PipelineCI/CD

Automatically register or update an uptime monitor during deployments in GitHub Actions.

- name: Register Uptime Monitor
  run: |
    curl -X POST "https://api.uptara.com/api/monitors" \
      -H "Authorization: Bearer ${{ secrets.UPTIME_API_KEY }}" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Production API ${{ github.ref_name }}",
        "url": "https://api.myapp.com/health",
        "intervalSeconds": 60,
        "regions": ["US_EAST", "EU_CENTRAL"]
      }'
Recipe 2: Custom Internal Status DashboardAnalytics

Fetch real-time health and 90-day reliability metrics to display in Grafana or internal office TV boards.

# Query live uptime & active outages
curl -s "https://api.uptara.com/api/monitors" \
  -H "Authorization: Bearer ${UPTIME_API_KEY}" | \
  jq '.[] | {name: .name, status: .status, latency: .lastLatencyMs}'

Complete REST Endpoints Catalog

Comprehensive catalog of all programmatic endpoints required for end-user and enterprise integrations.

MethodEndpointDescriptionAuth / Scope
GET/api/monitorsList all registered HTTP/HTTPS, mTLS, and TCP monitorsREAD_ONLY
POST/api/monitorsCreate a new monitor with custom assertions, headers, and probe regionsFULL_ACCESS
GET/api/monitors/{id}Get monitor details, SSL expiry countdown, and run metricsREAD_ONLY
PUT/api/monitors/{id}Update monitor configuration, check interval, and assertionsFULL_ACCESS
DELETE/api/monitors/{id}Idempotently delete monitor and purge historic telemetryFULL_ACCESS
POST/api/monitors/{id}/pausePause scheduled health checks for this monitorFULL_ACCESS
POST/api/monitors/{id}/resumeResume scheduled health checks for this monitorFULL_ACCESS
POST/api/monitors/test-connectionExecute immediate synchronous dry-run health check probeFULL_ACCESS
GET/api/monitors/{id}/executionsGet paginated check execution runs and latenciesREAD_ONLY
GET/api/monitors/{id}/metrics/dailyGet 90-day daily uptime SLA and response time rollupsREAD_ONLY
GET/api/syntheticsList all multi-step synthetic user flow journeysREAD_ONLY
POST/api/syntheticsCreate a multi-step synthetic check with chained tokensFULL_ACCESS
GET/api/synthetics/{id}Get synthetic check steps and assertion configurationREAD_ONLY
PUT/api/synthetics/{id}Update synthetic check steps and headersFULL_ACCESS
DELETE/api/synthetics/{id}Delete synthetic transaction journeyFULL_ACCESS
POST/api/synthetics/test-runPerform real-time dry-run execution of all stepsFULL_ACCESS
GET/api/heartbeatsList all cronjob heartbeat monitorsREAD_ONLY
POST/api/heartbeatsCreate a new dead-man switch heartbeat monitorFULL_ACCESS
PUT/api/heartbeats/{id}Update expected period and grace toleranceFULL_ACCESS
DELETE/api/heartbeats/{id}Delete cronjob heartbeat monitorFULL_ACCESS
GET/ping/{token}Ping endpoint called by background cron jobs upon job completionPUBLIC
GET/api/incidentsList active and historical outages across all monitorsREAD_ONLY
GET/api/incidents/{id}Get incident root-cause logs, headers, and timelineREAD_ONLY
POST/api/incidents/{id}/acknowledgeAcknowledge active incident by responderFULL_ACCESS
POST/api/incidents/{id}/resolveManually resolve incident and restore statusFULL_ACCESS
POST/api/incidents/{id}/updatesPublish incident progress message on timelineFULL_ACCESS
GET/api/maintenanceList scheduled maintenance windowsREAD_ONLY
POST/api/maintenanceSchedule maintenance window to silence alertsFULL_ACCESS
PUT/api/maintenance/{id}Update maintenance window duration and monitorsFULL_ACCESS
DELETE/api/maintenance/{id}Cancel / delete maintenance windowFULL_ACCESS
POST/auth/registerRegister new account and provision default workspacePUBLIC
POST/auth/loginAuthenticate with email & password, sets JWT sessionPUBLIC
GET/auth/meRetrieve authenticated user identity and active teamSESSION
POST/auth/refreshExchange refresh token for fresh access tokenSESSION
POST/auth/logoutInvalidate current session and clear auth cookiesSESSION
POST/auth/verify-emailVerify email address with 24h tokenPUBLIC
POST/auth/resend-verificationSend new email verification linkPUBLIC
POST/auth/forgot-passwordRequest password reset emailPUBLIC
POST/auth/reset-passwordSet new password with secure tokenPUBLIC
GET/api/teamsList all workspace teams user is a member ofSESSION
GET/api/teams/currentGet active workspace team details and subscription planREAD_ONLY
POST/api/teamsCreate a new isolated organization workspace teamSESSION
GET/api/teams/membersList team members and assigned RBAC rolesREAD_ONLY
POST/api/teams/membersInvite collaborator with OWNER/ADMIN/MEMBER roleFULL_ACCESS
GET/api/api-keysList active REST API keys with masked prefixesREAD_ONLY
POST/api/api-keysGenerate new Bearer API key with scopes & expirationFULL_ACCESS
DELETE/api/api-keys/{id}Idempotently revoke an API keyFULL_ACCESS
GET/api/webhooksList alert channels (WhatsApp, Slack, Discord, Webhooks)READ_ONLY
POST/api/webhooksRegister alert channel (WhatsApp with phone number, Slack, etc.)FULL_ACCESS
POST/api/webhooks/{id}/testDispatch immediate test ping to WhatsApp / Webhook channelFULL_ACCESS
DELETE/api/webhooks/{id}Delete alert webhook channelFULL_ACCESS
GET/actuator/healthLiveness & readiness: DB, diskSpace, & probing enginePUBLIC
GET/actuator/infoPlatform metadata: version 1.0.0, Java 21, regionsPUBLIC
GET/actuator/metricsCatalog of all real-time telemetry metersPUBLIC
GET/actuator/metrics/{metric}Query live meter (e.g. jvm.memory.used or process.cpu.usage)PUBLIC
GET/actuatorRoot HATEOAS discovery with hypermedia navigation linksPUBLIC
GET/healthSimple container liveness check for load balancersPUBLIC
Multi-Language Code Generator:
# 1. Create a New API Monitor via cURL
curl -X POST https://api.uptara.com/api/monitors \
  -H "Authorization: Bearer upt_live_a1b2c3d4e5f67890" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Checkout API",
    "url": "https://api.store.com/v1/checkout",
    "method": "POST",
    "intervalSeconds": 60,
    "timeoutMs": 10000,
    "expectedStatusCode": 200,
    "requestBody": "{\"dryRun\": true}"
  }'

HTTP Status & Error Codes

Status CodeMeaningResolution Guide
200 OK / 201 CreatedSuccessRequest executed and response payload returned successfully.
400 Bad RequestValidation ErrorPayload validation failed (e.g. invalid URL scheme or missing required name).
401 UnauthorizedInvalid / Missing KeyEnsure Authorization: Bearer upt_live_... header is supplied.
403 ForbiddenPermission / Quota DeniedThe key has expired, lacks required scope, or your plan monitor limit has been reached.
404 Not FoundResource MissingThe specified resource ID does not exist or belongs to a different team workspace.
429 Too Many RequestsRate LimitedRate limit exceeded. Reduce request frequency or implement exponential backoff.

Spring Boot Actuator & Observability Endpoints

For enterprise infrastructure and Kubernetes monitoring, Uptara exposes production-grade Spring Boot Actuator endpoints. These endpoints provide instant visibility into container liveness, database connection pools, JVM heap memory, and probing engine status.

Actuator EndpointTypeResponse / Purpose
/actuator/healthLiveness & ReadinessFull component health check: Database connection, disk space, and Probing Engine consensus.
/actuator/infoPlatform MetadataApplication version (1.0.0), Java 21 OpenJDK runtime, OS info, and supported probing regions.
/actuator/metricsTelemetry CatalogLists all available system meters (JVM memory, CPU load, HTTP requests, garbage collection).
/actuator/metrics/{metric}Live Meter ValueQuery specific meter (e.g. /actuator/metrics/jvm.memory.used or /actuator/metrics/process.cpu.usage).
/actuatorHATEOAS DiscoveryRoot discovery catalog with hypermedia links to all available management endpoints.
Querying Backend Health via CLI:
# 1. Check Container Health Status
curl -s https://api.uptara.com/actuator/health | jq .

# 2. Inspect JVM Memory Usage
curl -s https://api.uptara.com/actuator/metrics/jvm.memory.used | jq .
Module 13

Subscription Plans & Payment Gateways

Pricing tiers, check frequencies, quota limits, and seamless checkout via Razorpay (Cards, UPI, Netbanking).

Free Starter

$0
  • • 10 Monitors (3m interval)
  • • 1 Cron Heartbeat
  • • 1 Public Status Page

Pro Developer

Popular
$19/mo ($180/yr • $15/mo annual)
  • • 50 Monitors (30s interval)
  • • 5 Cron Heartbeats
  • • 3 Synthetic Flows
  • • 1 Custom CNAME Domain

Business

$59/mo ($564/yr • $47/mo annual)
  • • 250 Monitors (10s interval)
  • • 25 Cron Heartbeats
  • • 15 Synthetic Flows
  • • 5 Custom CNAME Domains
  • • REST API Keys

Enterprise

$199/mo ($1,908/yr • $159/mo annual)
  • • 1,000+ Monitors (5s interval)
  • • Unlimited Heartbeats
  • • Dedicated IP Edge Probes
  • • 24/7 Priority Phone Support