Create monitors from your deploy pipeline, open a maintenance window before a release and close it after, and pull daily uptime into your own dashboards. Plain REST and JSON. API keys on every plan.
Create an API key on the Configure page (scroll to API keys), then:
# Your monitors, with live status curl https://cj0dxr3cke.execute-api.eu-west-2.amazonaws.com/v1/monitors \ -H "Authorization: Bearer uc_live_YOUR_KEY" # Create one curl -X POST https://cj0dxr3cke.execute-api.eu-west-2.amazonaws.com/v1/monitors \ -H "Authorization: Bearer uc_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"name":"Checkout","type":"https","target":"https://shop.example.com/checkout","tags":["production"],"slowMs":2000}'
Keys are shown once. UpConduit stores only a hash, so a lost key has to be replaced, not recovered. Read-only keys can list and read but never create, edit or delete — use one for dashboards and integrations that only need to look.
Authorization: Bearer uc_live_… on every request. HTTPS only.X-RateLimit-Limit and X-RateLimit-Remaining; past the limit you get 429 with {"code":"rate_limited"}.{"error":"human-readable message","code":"unauthorized|forbidden|not_found|rate_limited"}. Validation errors are 400 with a message that says what to fix.| Endpoint | What it does |
|---|---|
| GET/v1/account | Plan, monitor usage against your cap, check interval, speed-test quota. |
| GET/v1/monitors | Every monitor with current status, last latency, 24-hour uptime and average, certificate days left, tags. |
| POST/v1/monitors | Create a monitor. Same fields and validation as the dashboard: name, type, target, optional tags, slowMs, HTTP expectations, DNS record type, dependsOn. |
| GET/v1/monitors/{id} | One monitor. |
| PUT/v1/monitors/{id} | Edit name, tags or slowMs (null clears the threshold). |
| DELETE/v1/monitors/{id} | Delete a monitor. |
| GET/v1/monitors/{id}/daily?days=30 | Daily roll-ups: checks, uptime %, average and worst latency, incidents, approximate downtime. Up to 400 days; today is marked partial. |
| GET/v1/maintenance | Maintenance windows, each with active: true|false. |
| POST/v1/maintenance | Open a window: one-off (mode:"once", start, durationMin) or weekly (days, time, tz). Empty monitorIds means all monitors. |
| DELETE/v1/maintenance/{id} | Close a window early. |
Full request and response schemas: openapi.json (OpenAPI 3.0 — generate a client in your language).
Open a 20-minute window for everything before the release starts. It closes itself; if the deploy leaves something broken, the very next checks after the window will page you.
curl -X POST …/v1/maintenance -H "Authorization: Bearer $UC_KEY" -H "Content-Type: application/json" \
-d "{\"name\":\"Deploy $GIT_SHA\",\"mode\":\"once\",\"start\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"durationMin\":20}"
When CI creates a preview, register a monitor tagged with the branch; delete it when the branch merges. Tag filters in the dashboard keep them out of the way.
curl -X POST …/v1/monitors -H "Authorization: Bearer $UC_KEY" -H "Content-Type: application/json" \
-d "{\"name\":\"preview $BRANCH\",\"type\":\"https\",\"target\":\"https://$BRANCH.preview.example.com/\",\"tags\":[\"preview\"]}"
Pull 90 days per monitor with a read-only key and render it however you like.
curl "…/v1/monitors/$ID/daily?days=90" -H "Authorization: Bearer $UC_READONLY_KEY"
Everything the API does, in the shape your team already works in. All zero-dependency, all in the open.
export UC_API_KEY=uc_live_YOUR_KEY uc monitors # table of monitors with status uc monitors add "Checkout" https https://shop.example.com/checkout --tags production --slow 2000 uc maint open "Deploy $GIT_SHA" 20 # silence alerts for 20 minutes uc daily mabc123 --days 30
import { UpConduit } from "@upconduit/sdk";
const uc = new UpConduit(process.env.UC_API_KEY);
const { monitors } = await uc.monitors.list();
await uc.maintenance.open({ name: "Deploy", durationMin: 20 });
from upconduit import UpConduit uc = UpConduit(os.environ["UC_API_KEY"]) uc.monitors.create(name="Checkout", type="https", target="https://shop.example.com/checkout", slow_ms=2000)
resource "upconduit_monitor" "checkout" {
name = "Checkout"
type = "https"
target = "https://shop.example.com/checkout"
tags = ["production"]
slow_ms = 2000
}
Install the CLI with npm install -g @upconduit/cli, the JavaScript SDK with npm install @upconduit/sdk, and the Python SDK with pip install upconduit. The Terraform provider is on the public Registry as upconduit/upconduit — terraform init fetches it.
pingUrl in the response). Hit it from your cron job — curl -fsS $PING_URL — and silence becomes the alert.GET /status/{slug} — component names, states and 24-hour uptime only.