API & webhooks

The Pipemetry API: your forecast, in your stack.

Read your numbers programmatically. GET /v1/forecast, /v1/opportunities, and /v1/accuracy, authenticated with a per-workspace API key a workspace admin mints. Verify a receiver with HMAC-signed webhooks. Or skip code entirely with a Google Sheets export link.

14-day full-Pro trial, no card · Read-only, rate-limited, revocable keys

One request

curl -H "Authorization: Bearer pm_live_…" \
  "https://app.pipemetry.com/v1/forecast?as_of_day=2026-08-07"

Every key gets its own per-minute budget, so one integration can never throttle another, and each response reports the budget left in X-RateLimit-Remaining. The full spec is published at /v1/openapi.json — no key needed to read it. Call it from a server, not a browser: /v1 sends no CORS headers on purpose, because an API key in front-end JavaScript is readable by anything on the page.

Method Endpoint Returns
GET /v1/forecast The forecast roll-up — commit, best case, and the projected total with its range.
GET /v1/opportunities Your opportunities with the fields the forecast is built from, plus a full-cohort win-rate summary: win_rate, settled_won, settled_lost.
GET /v1/accuracy Accuracy scorecards — MAPE and bias — for closed periods.

A read API for your numbers

GET your forecast, opportunities, and accuracy

Read your Pipemetry numbers programmatically over a stable JSON API. Every request is authenticated with a per-workspace API key in a Bearer header and is rate-limited per key (at least 120 requests/min; the ceiling scales with our running replicas). A key is a workspace-level credential: by default it reads everything that workspace holds, rather than the narrower view a single rep gets in the app. If an integration only needs part of the book, an admin can restrict the key to named owners when minting it — so mint and share it accordingly.

  • Three read endpoints: forecast, opportunities, accuracy
  • Bearer-token auth over HTTPS
  • Rate-limited per key — at least 120 requests/min; whole-workspace access by default, optionally restricted to named owners
  • Opportunities responses carry a win-rate block — win_rate, settled_won, settled_lost — computed over every settled deal the key can see, never just the returned page
  • Read-only — the API never writes to your CRM or your data

Keys you control

API keys — minted by an admin, shown once, stored hashed

A workspace admin mints a pm_live_… key from settings. The secret is shown exactly once at creation and stored only as a SHA-256 hash — Pipemetry can never reveal it again — and it’s revocable at any time. Give it an expiry so it retires itself, and narrow it to just the endpoints one integration needs. Rotate a key you believe is exposed and every request made with the old one stops working.

  • Per-workspace pm_live_ keys, minted by an org admin
  • Shown once; stored only as a SHA-256 hash
  • Revoke or rotate at any time; optional 30/90/365-day expiry
  • Per-key scopes — forecast, opportunities, accuracy, or any combination
  • Optionally restrict a key to named owners, so a partner integration reads one book, not the company
  • A leaked key can be killed without touching your data

Outbound webhooks

HMAC-signed webhooks — your forecast, pushed

Register an HTTPS endpoint and Pipemetry POSTs a signed forecast.moved envelope whenever your projected total changes — the envelope carries both the previous and the new figure, so your receiver can act on the delta without calling back. You can also press "Send test" in Settings to fire a test.ping down the identical signing and delivery path before you go live. Each delivery carries a Stripe-style t=<timestamp>,v1=<hmac> signature you verify with your endpoint’s secret, and outbound delivery is guarded against server-side request forgery (SSRF). Risk alerts are not webhook events today — for those, use email or Slack alerts. This is the webhooks home — there’s no separate page.

  • forecast.moved fires automatically when your projected total changes
  • Register your own HTTPS URL; verify it first with a signed test.ping
  • HMAC-SHA256 signature (t=…,v1=…) — verify authenticity
  • SSRF-guarded delivery from our network
  • Risk alerts are email/Slack today, not webhook events

No code needed

Google Sheets & Excel export tokens

Not everything needs a script. A workspace admin can mint a signed, scoped, expiring export link and pull a live grid straight into a Google Sheet with =IMPORTDATA(), or into Excel via Power Query. See the Google Sheets integration for the full walk-through.

  • Signed, scoped, expiring export links per grid
  • IMPORTDATA-compatible — refreshes on Google’s schedule
  • Excel via Power Query on the same link
  • Read-only and short-lived — 24 hours by default, 30 days maximum

Honest limits

What the API does — and doesn’t — do

The API is read-only today: it returns your forecast, opportunities, and accuracy, and it does not write back to your CRM. By default a key reads the whole workspace rather than one member’s view — restrict it to named owners at mint time if an integration should see less. Webhooks send forecast.moved automatically and test.ping on demand; risk alerts are not webhook events yet. Reads are rate-limited per API key — one integration can never throttle another — and a 429 response carries Retry-After: 60 plus X-RateLimit-Limit/X-RateLimit-Remaining headers so you can pace yourself. Plan availability is enabled per workspace by an admin — check pricing or ask us to confirm which plan includes it before you build on it.

  • Read-only — no write-back to your CRM
  • Whole-workspace by default — restrict a key to named owners if it should see less
  • Give a key an expiry (30/90/365 days) or leave it open-ended — your call
  • Narrow a key to the endpoints an integration needs, not all three
  • Webhooks send forecast.moved automatically; risk alerts are email/Slack only
  • Rate-limited per key, with the remaining budget on every response
  • Enabled by an org admin from workspace settings
  • Confirm plan availability before you build on it

Built to be inspected

The API is the same transparency principle as the rest of Pipemetry, pointed at your data on the way out. Keys are hashed and revocable, webhooks are signed and SSRF-guarded, and export links expire — read how we secure the API, webhooks, and export tokens. Prefer to pull numbers into a spreadsheet? Use the Google Sheets & Excel links instead of code. For the endpoint and webhook reference, see the API & webhooks docs.

API & webhooks FAQ

How do I get an API key?

A workspace admin mints a pm_live_ key from workspace settings. The secret is shown only once at creation — copy it then, because Pipemetry stores only a SHA-256 hash and can’t show it again. You can revoke or rotate the key at any time.

How is the API authenticated?

With the API key in a Bearer header over HTTPS. Each request resolves to the workspace the key was minted in and reads the whole workspace — it doesn’t inherit the narrower per-user visibility a rep gets in the app, so treat a key as workspace-wide access.

Is the API rate-limited?

Yes. Read requests are limited to 120 per minute per API key, so one integration can never throttle another. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining headers so you can pace yourself, and a 429 response includes Retry-After: 60. Design your integration to cache and back off rather than poll aggressively.

Can I limit what one API key can read?

Yes, two ways. Scopes limit which endpoints a key may call — forecast, opportunities, accuracy, or any combination — so a script that only needs the accuracy scorecard never holds a credential that can also pull every open deal. And a key can be given a 30, 90 or 365-day expiry so it retires itself. Scopes limit endpoints, not rows: within an endpoint a key still reads the whole workspace, so treat it as workspace-wide access to the data it can reach.

Can the API write back to my CRM?

No. The API is read-only: it returns your forecast, opportunities, and accuracy, and never writes to your CRM or changes your data. The same is true of the Google Sheets and Excel export links.

How do webhooks prove they came from Pipemetry?

Every webhook delivery carries a Stripe-style HMAC-SHA256 signature — t=<timestamp>,v1=<hmac> — that you verify with your endpoint’s signing secret. Registration is also guarded against server-side request forgery: non-HTTPS URLs, localhost, private IP literals and .local/.internal hostnames are refused.

What events does Pipemetry send to my webhook today?

Two. forecast.moved fires automatically whenever your workspace’s projected total changes, and its envelope carries both the previous and the new figure so your receiver can act on the delta. test.ping fires when you press "Send test" in Settings, down the identical signing and delivery path, so you can verify a receiver before you rely on it. Risk alerts are not webhook events yet — for those, use the email or Slack alert channels.

Which plan includes the API and webhooks?

API access, webhooks, and export links are enabled per workspace by an org admin. Which plan includes them can depend on your account — see the pricing page or contact us to confirm before you build on it, so we don’t over-promise a capability your plan doesn’t carry.

Own your forecast — on the way out, too.

Connect Salesforce, HubSpot, Pipedrive or Zoho, then read your numbers over the API. See the full product or what it costs.