pingform

Docs / HTTP API

HTTP API

Manage checks and read results. Base URL https://api.pingform.org/v2. Bearer tokens, JSON in and out.

Authentication

curl https://api.pingform.org/v2/checks \
  -H "Authorization: Bearer pft_live_7Qm2x..."

Tokens are workspace-scoped and carry one of three roles: read, write, admin. Rate limit is 600 requests per minute per token; the X-RateLimit-Remaining header is authoritative.

Endpoints

MethodPathDescription
GET/checksList checks, paginated by cursor
POST/checksCreate a check
PATCH/checks/{id}Update interval, expectations, vantage points
DELETE/checks/{id}Delete a check and its schedule
GET/checks/{id}/resultsRaw samples for a time range
GET/checks/{id}/uptimeRolled-up availability
GET/agentsAgents, last seen, transport in use
GET/vantage-pointsManaged and private vantage points
POST/exportsRequest a bulk export job

Create a check

POST /v2/checks
{
  "id": "api-edge",
  "type": "http",
  "target": "https://api.example.com/healthz",
  "interval": "30s",
  "timeout": "5s",
  "from": ["eu-central", "us-east"],
  "expect": { "status": 200, "body_contains": "ok", "tls_min_days": 14 },
  "alerts": { "after": 2, "notify": ["pd:primary"] }
}

Read results

GET /v2/checks/api-edge/results?from=2026-10-11T00:00:00Z&to=2026-10-12T00:00:00Z&vantage=eu-central

{
  "cursor": null,
  "samples": [
    { "t": "2026-10-11T00:00:03Z", "vantage": "eu-central", "result": "ok",
      "duration_ms": 84, "dns_ms": 7, "connect_ms": 21, "tls_ms": 33, "ttfb_ms": 71 },
    { "t": "2026-10-11T00:00:33Z", "vantage": "eu-central", "result": "ok",
      "duration_ms": 79, "dns_ms": 1, "connect_ms": 19, "tls_ms": 31, "ttfb_ms": 68 }
  ]
}

Errors

CodeErrorMeaning
400invalid_expectationExpectation not valid for this check type
402quota_exceededPlan check limit reached
404unknown_vantageVantage point not available on this plan
409duplicate_idCheck ID already used in this workspace
429rate_limitedRetry after Retry-After seconds