Documentation

API reference

PagePulse REST API reference. Authenticate with a project API key to query Web Vitals, deployments, budgets, and alerts.

The PagePulse REST API is available at https://api.pagepulse.dev. All requests must be authenticated with a project API key, which you can generate from your workspace settings. The API returns JSON and follows REST conventions.

Authentication

Pass your API key in the Authorization header as a Bearer token. API keys are scoped to a single project and can be revoked at any time.

bash
curl https://api.pagepulse.dev/v2/metrics \
  -H "Authorization: Bearer pp_live_abc123"

List Web Vitals metrics

Returns Core Web Vitals for a project, optionally filtered by route, device, browser, country, and date range. The response is a JSON object with one entry per route.

bash
GET /v2/metrics?projectId=site_123&route=/checkout&from=2025-06-01&to=2025-06-30

# Response
{
  "routes": [
    {
      "route": "/checkout",
      "samples": 42103,
      "lcp_p75": 4100,
      "inp_p75": 320,
      "cls_p75": 0.18,
      "fcp_p75": 2800,
      "ttfb_p75": 920,
      "score": 52
    }
  ]
}

Create a deployment marker

Marks a new deployment. PagePulse will begin correlating RUM samples collected after this call with the new deployment.

bash
POST /v2/deployments
Content-Type: application/json

{
  "projectId": "site_123",
  "version": "v2.8.1",
  "environment": "production",
  "commit": "a1b2c3d"
}

Get deployment diff

Returns the before/after diff of Core Web Vitals, JavaScript bundle size, route load time, and error rate for a specific deployment.

bash
GET /v2/deployments/dep_abc/diff?projectId=site_123

# Response
{
  "deployment": {
    "id": "dep_abc",
    "version": "v2.8.1",
    "environment": "production"
  },
  "diff": {
    "lcp_p75": { "before": 2300, "after": 1700, "delta": -600 },
    "inp_p75": { "before": 180, "after": 96, "delta": -84 },
    "jsSizeKB": { "before": 248, "after": 184, "delta": -64 }
  },
  "affectedRoutes": [...]
}

Rate limits

The API is rate-limited to 100 requests per minute per API key. If you exceed the limit, the API will respond with 429 Too Many Requests and include a Retry-After header. Rate limits reset every 60 seconds.

Need higher rate limits? Scale plans include 1,000 requests per minute. Contact sales for custom limits.

Have a question about this doc?