API keys
API keys are under API Keys in the app's sidebar. A key belongs to the organization and is shown only once, when it is created. There are two key types:
- Management (
ue_live_…) - For the API, Terraform and MCP. Only organization admins can create or delete management keys - Log ingest (
ue_ingest_…) - Can only send logs; it goes into your log agents (see Ingesting logs)
Terraform provider
The official Terraform provider lets you manage your organization as code — with Terraform or OpenTofu. Its resources are uptimeeye_monitor, uptimeeye_scheduled_task, uptimeeye_notification_channel, uptimeeye_notification_integration, uptimeeye_variable, uptimeeye_status_page, uptimeeye_status_page_domain and uptimeeye_report_schedule; the data sources uptimeeye_locations and uptimeeye_notification_channel read existing ones. It is published on the Terraform Registry and open source on GitHub.
Terraform quickstart
Create a management key (ue_live_…) under API Keys (see API keys), then copy this configuration into a main.tf in an empty directory. It defines a notification channel and a monitor that checks an HTTP endpoint every 5 minutes from Europe (Germany); the Locations table lists every location id.
terraform {
required_providers {
uptimeeye = {
source = "uptimeeye/uptimeeye"
}
}
}
variable "uptimeeye_api_key" {
description = "Management API key (ue_live_…) from API Keys in the app"
type = string
sensitive = true
}
provider "uptimeeye" {
# or remove this line and the variable block, and set UPTIMEEYE_API_KEY
api_key = var.uptimeeye_api_key
}
resource "uptimeeye_notification_channel" "oncall" {
name = "On-Call"
}
resource "uptimeeye_monitor" "api" {
name = "API Healthcheck"
notification_channel_id = uptimeeye_notification_channel.oncall.id
locations = ["eu-central-1"] # Europe (Germany)
steps = [{
type = "http"
request = {
url = "https://api.example.com/health"
method = "GET"
}
asserts = [{
type = "statusCode"
operator = "is"
expected = "2xx"
}]
}]
options = {
tick_every = 300 # seconds; 5 minutes is the shortest interval on Free
timeout = 30 # seconds
}
}Pass the key as a variable and apply:
export TF_VAR_uptimeeye_api_key="ue_live_..."
terraform init
terraform applyThe notification channel has no receivers yet: add one with uptimeeye_notification_integration or in the app.
Importing an existing setup
Every resource supports terraform import using its ID (visible in the app URLs, e.g. mon_…). Nested resources use composite IDs such as <channel_id>/<integration_id> for notification integrations. The full resource reference lives in the registry documentation; a guided overview is on the Terraform integration page.