# HookPulse Uptime Check

> HookPulse Uptime Check is a paid API for AI agents from hookpulse.net, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-30).

Performs a single on-demand uptime check on a given URL, returning HTTP status, response time, optional keyword presence, and TLS certificate info

## Facts

- Endpoint: GET https://hookpulse.net/api/x402/check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/hookpulse-uptime-check-380c8a0a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_WW8NG5EwTM4MwIDVDepMw

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability hookpulse-uptime-check-380c8a0a
```

Example prompt: Can you do a quick uptime check on https://myapp.example.com — tell me the response time, whether it returned a 200, and confirm the keyword 'Welcome' appears on the page?

## When to prefer this

Use this endpoint when you need a single, immediate, pay-per-call uptime probe without setting up a recurring monitoring subscription. It is ideal for ad-hoc checks, CI/CD pipeline health gates, alerting validation, or any workflow where you need a quick one-off HTTP status, response time, keyword, or TLS check without committing to a monitoring plan.

## Known failure modes

- URL is unreachable or DNS fails — returns a down/error status
- Keyword not found in first 64 KB — check fails even if status code is OK
- Timeout exceeded (default 10000 ms) — returns timeout error
- Invalid URL format (non-public, includes credentials) — rejected at input validation
- Expected status code mismatch — URL responds but check is marked as failed
- Payment not fulfilled — 402 returned before check is executed

## How this service works

HookPulse: one uptime check of a URL (status, response time, keyword, TLS certificate), paid per call

## Output

Returns whether the URL is up, the HTTP status code received, response time in milliseconds, whether the optional keyword was found in the first 64 KB of the response body, and TLS certificate details if the URL uses HTTPS.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "queryParams"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "The address to call: http or https, public, without user or password."
      },
      "method": {
       "type": "string",
       "description": "`GET` (default) or `HEAD`."
      },
      "keyword": {
       "type": "string",
       "description": "Text that must be in the first 64 KB of the page; it forces `GET`."
      },
      "timeout_ms": {
       "type": "integer",
       "description": "1000 to 30000, default 10000."
      },
      "expect_status": {
       "type": "string",
       "description": "What counts as up: `200-399` by default, a range `a-b` or one code."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "ms": {
       "type": "number",
       "description": "Response time in milliseconds."
      },
      "ok": {
       "type": "boolean",
       "description": "`true` when it answered inside `expect_status`, with the `keyword` when one was sent."
      },
      "url": {
       "type": "string",
       "description": "The address called."
      },
      "reason": {
       "type": "null",
       "description": "Why it failed: `status`, `keyword`, `timeout`, `dns`, `connection`, `tls`, `private_address` or `network`; `null` when it answered."
      },
      "status": {
       "type": "number",
       "description": "HTTP status; `null` when nothing answered."
      },
      "cobranca": {
       "type": "object",
       "properties": {
        "via": {
         "type": "string",
         "description": "`x402`, `credito` or the marketplace that already charged the call."
        },
        "repetido": {
         "type": "boolean",
         "description": "`true` when the credit had already paid this request (the same `Idempotency-Key`): nothing was charged again."
        },
        "p
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/hookpulse-uptime-check-380c8a0a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from hookpulse.net](https://www.zero.xyz/host/hookpulse.net/llms.txt)
