Integration
API /v1, Terraform, HMAC webhooks and SDKs. Pick a page on the left, or follow the quickstart.
OpenAPI contractIssue an API keyFree Solo account
Full document, no authentication, ready for your client generator.
Pathly exposes a versioned public API under https://api.pathlyhq.com/v1. An organisation owns scenarios, runs, incidents, webhooks, maintenance windows and availability targets. Console and API share one configuration truth: what you create here appears there, and the other way around.
Two doors, one stack: business records a Flow in the console; engineering versions Ping, Chain, webhooks and SLAs via IaC or SDK. A Chain is created with `httpChain` on POST /v1/scenarios (login → API hops). Flow secrets must never enter Terraform state or a Git repo.
The OpenAPI contract the platform serves is the source of truth for routes. This page loads it at render: a removed route disappears from the reference below on its own.
Goal: one key, one Ping, one test webhook, one Terraform pointer. About five minutes if the Solo account already exists. A Chain is then created with httpChain (API) or http_chain (provider).
1) Open the Pathly Console (create a free account via the link below) → Settings → API keys → issue a key with scenarios:write and alerting:write. Copy the secret once (sp_ prefix). 2) Export PATHLY_API_TOKEN. 3) Create the scenario (example below). 4) Create a webhook to a test sink (webhook.site or your /hooks). 5) Terraform provider pathlyhq/pathly to version the rest.
1 — Auth + list
export PATHLY_API_TOKEN=sp_…
curl -sS https://api.pathlyhq.com/v1/scenarios \
-H "Authorization: Bearer $PATHLY_API_TOKEN" | jq .2 — Create a Ping (idempotent)
curl -sS -X POST https://api.pathlyhq.com/v1/scenarios \
-H "Authorization: Bearer $PATHLY_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: qs-$(date +%Y%m%d)-home" \
-d '{
"type": "http",
"name": "Home",
"url": "https://www.example.com/",
"intervalSec": 300,
"expectedStatus": 200
}'3 — Signed outbound webhook
curl -sS -X POST https://api.pathlyhq.com/v1/webhooks \
-H "Authorization: Bearer $PATHLY_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: qs-hook-1" \
-d '{
"url": "https://www.example.com/hooks/pathly",
"events": ["run.failed", "run.recovered"]
}'4 — Terraform
terraform {
required_providers {
pathly = { source = "pathlyhq/pathly", version = "~> 0.1" }
}
}
provider "pathly" {}
# PATHLY_API_TOKEN dans l'environnement CI / shell — jamais dans .tfBearer, TTL, storing PATHLY_API_TOKEN — never exposing the key in Git.
Open →resource:action matrix, write→read implication, and separate keys per CI use case.
Open →Retry-After, Idempotency-Key, cursors and 4xx codes — stable behaviour to implement once.
Open →Ping vs Flow vs Chain, triggering runs, maintenance and availability targets.
Open →run.failed / run.recovered events, X-Pathly-* headers and signature verification.
Open →Provider pathlyhq/pathly: scenarios, webhooks, maintenance and SLA as code.
Open →One /v1 API, one PATHLY_API_TOKEN — each tool has its own examples page.
Open →Official npm client: create scenarios, paginate, Idempotency-Key and Retry-After.
Open →pip install pathly — typed stdlib client for Lambda, Cloud Run and cron.
Open →Module github.com/pathlyhq/pathly-sdk-go — idempotency and Retry-After like the Terraform provider.
Open →composer require pathlyhq/sdk — PHP 8.1+, PSR-4, for Symfony, Laravel and hoster scripts.
Open →Gem pathly from GitHub — same /v1 API as the other official clients.
Open →Monitoring as code in TypeScript via Pulumi, wired to the same API as Terraform.
Open →npm @pathly/cdktf — typed Terraform on top of provider pathlyhq/pathly.
Open →Modules pathly_scenario, webhook, maintenance and SLA — idempotent, token out of the playbook.
Open →Post-deploy smoke: run-scenario fails the job if the run is not ok. Alias run-and-wait.
Open →pathly-ping and pathly-scenario in the GitLab catalog — red pipeline if the smoke fails.
Open →PathlyScenario CRDs, GHCR images, token in a cluster Secret.
Open →Explore /v1 without code: GitHub import, baseUrl + apiToken environment.
Open →for_each recipes, CI smoke, webhook verify, GDPR and UI-or-Terraform rule.
Open →List loaded from the OpenAPI contract at render — a removed route disappears on its own.
Open →Page intents not created yet. Flip an entry to status live + sectionIds to publish it.
SEO landing “monitoring as code” / Checkly alternative — also planned under /cas-usage/.