PipeCrush APINew

Connect anything to PipeCrush.

A REST API for pushing leads in, syncing contacts, and wiring PipeCrush into the tools you already run — then triggering the real work: sending email, placing calls, sending texts, booking appointments, and sending broadcasts. Subscribe to signed webhooks to react the moment something changes. Authenticate with a single key — no OAuth flow to build, no SDK to install.

Free to start
No credit card required
GET/api/v1/contacts
Live
$ curl https://www.pipecrush.tech/api/v1/contacts \
    -H "Authorization: Bearer pc_live_your_key_here"

{
  "data": [
    {
      "id": "cnt_8fq2k1",
      "email": "jane@acme.com",
      "first_name": "Jane",
      "last_name": "Doe",
      "customer_id": "cus_4m9p2x"
    }
  ],
  "next_cursor": null
}

How it works

Three steps between you and your first request.

01

Create a key

In PipeCrush, go to Settings → API Keys and click Create key. Name it after the integration it's for, then copy it — it's shown only once.

02

Call the API

Send the key as a bearer token on every request to https://www.pipecrush.tech/api/v1. JSON in, JSON out.

03

Build your integration

Push leads from your website, sync contacts on a schedule, or create a task when something changes in your own systems.

Six record types

Every record type follows the same shape: list, create, fetch, and update. There is no delete — the worst a runaway integration can do is create or edit.

Live now

Contacts

List, create, fetch, and update the people linked to a company record.

GETPOSTPATCH
Live now

Leads

Capture new leads from your own forms, backend, or third-party tools.

GETPOSTPATCH
Live now

Customers

Manage the company records your contacts and deals attach to.

GETPOSTPATCH
Live now

Tasks

Create a follow-up automatically when something changes in your own systems.

GETPOSTPATCH
Live now

Tickets

Open and track support tickets from outside PipeCrush.

GETPOSTPATCH
Live now

Deals

Create and update deals against a pipeline and stage you choose.

GETPOSTPATCH

Context around every record

The history, conversations, and numbers a person would open before acting — available to your integration or AI agent with one call each.

Live now

Notes

Read and add plain-text notes on a lead or a deal — the running history a rep would otherwise type by hand.

GETPOST
Live now

Ticket comments

Read the conversation on a support ticket, then reply publicly or leave an internal note the requester never sees.

GETPOST
Live now

Pipelines

Look up your deal pipelines and their stages so a deal can be created or moved with the right stage id.

GET
Live now

Search

One query across leads, contacts, customers, deals, tickets, and tasks by name, email, company, or title.

GET
Live now

Lead activity

A merged, newest-first timeline for a lead: emails sent and received, replies, opens, notes, calls, texts, and appointments.

GET
Live now

Inbox threads

List and read email conversations from your connected inboxes as plain-text threads, with the linked lead or contact.

GET
Live now

Call transcripts

Fetch the transcript of a completed call — text, language, confidence, and speaker count. Recordings are never exposed.

GET
Live now

Sales metrics

Funnel totals and breakdowns — leads by status and source, deals by stage, win rate, pipeline value — for a daily, weekly, monthly, or custom period.

GET

Actions that do real work

Beyond records, the API triggers the real-world work: send an email or a broadcast, enroll a lead, place a call, send a text, book or move an appointment, reply in a thread, or pause an outreach that should stop.

Live now

Send email

Send a one-off email immediately through a connected Gmail, Outlook, or MailDoso account.

GETPOST
Live now

Enroll a lead

Add a lead to a not-yet-launched sequence, or to an evergreen email campaign for an automatic send.

GETPOST
Live now

Place a call

Place an outbound call from a workspace number and track its status as it progresses.

GETPOST
Live now

Send a text

Send an SMS or MMS from a workspace number registered for 10DLC.

GETPOST
Live now

Book an appointment

Check open slots, book a meeting on a calendar, and cancel it later.

GETPOSTPATCH
Live now

Reschedule an appointment

Move a booked appointment to a new time. Omit the end time to keep the original duration; an overlap returns a clear conflict.

POST
Live now

Reply in a thread

Answer the latest inbound message in an inbox thread from a connected account, with correct threading headers.

POST
Live now

Pause, resume, or stop

Pause or resume a sequence, stop or resume one lead in it, or unsubscribe a lead from an evergreen campaign.

PATCH
Live now

Send a broadcast

Create a one-off email-marketing blast to up to ten thousand leads or customers, schedule or send it, and cancel it while it is still queued.

GETPOST

Action endpoints carry a daily cap per key on top of the per-minute rate limit — see rate limits below. A broadcast send is accepted with 202 and queued; it also requires a verified sending domain and a physical mailing address on your organization, as anti-spam law requires.

Webhooks

Stop polling. Register up to ten HTTPS endpoints per workspace (with an admin or manager key) and PipeCrush POSTs a signed JSON event the moment something happens — to Zapier, Make, n8n, your own backend, or an agent waiting for work.

lead.createdlead.updateddeal.createddeal.updateddeal.stage_changedappointment.bookedappointment.rescheduledappointment.cancelledcall.completedsms.receivedticket.createdticket.comment_addedform.submittedemail.replied
Signed
Every delivery carries X-PipeCrush-Signature: t=<unix>,v1=<hmac> — HMAC-SHA256 over <t>.<raw body> with the secret shown once when you create the endpoint. Reject anything older than five minutes to block replays.
Retried
A non-2xx response or timeout retries after 1 minute, 5 minutes, 30 minutes, 2 hours, and 12 hours, then the delivery is marked failed. An endpoint that fails 100 deliveries in a row is disabled automatically; re-enable it with one PATCH.
Debuggable
Send a ping with the test endpoint, list every delivery attempt with its status code, and rotate the secret without recreating the endpoint.
POSThttps://example.com/pipecrush
Live now
Delivered to your endpointX-PipeCrush-Event: deal.stage_changed
X-PipeCrush-Delivery: 7c1e9a2b-4d0f-4e8a-9b3c-2f6d1a8e5c40
X-PipeCrush-Signature: t=1755631200,v1=3f9a...c2

{
  "id": "evt_0d3c2f5e-...",
  "type": "deal.stage_changed",
  "created_at": "2026-08-19T19:20:00Z",
  "api_version": "v1",
  "data": { "id": "dl_4k2m9x", "title": "Acme renewal", "stage": "Negotiation", ... },
  "previous": { "stage": "Proposal" }
}

Push a lead in one request

Send a lead from your own website backend with a single request.

POST/api/v1/leads
Live now
curl -X POST https://www.pipecrush.tech/api/v1/leads \
  -H "Authorization: Bearer pc_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "email": "jane@example.com", "first_name": "Jane", "company": "Acme" }'

Place a call in one request

Actions like this one accept an Idempotency-Key header, so a retried request replays the original result instead of placing the call twice.

POST/api/v1/calls
Live now
curl -X POST https://www.pipecrush.tech/api/v1/calls \
  -H "Authorization: Bearer pc_live_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: followup-call-jane-0812" \
  -d '{ "phone_number_id": "pn_1a2b3c", "to": "+15551234567" }'

Returns 202 immediately — poll GET /api/v1/calls/{id} for status as the call progresses.

Unknown response fields are always safe to ignore — we only ever add to v1. Breaking changes ship as a new version path, /api/v2.

Prefer codegen? Pull the full spec from GET /api/v1/openapi.json — an OpenAPI 3.1 document with stable, tool-shaped operation IDs, live now.

Built for production access

An API key is a real credential to real customer data. It's handled like one.

Scoped to your workspace

A key can only see what its creator can see. An admin's key sees the whole organization; anyone else's is scoped the same way their account is.

Revoke it anytime

Rotating credentials or lost a key? Revoke it from Settings and traffic stops immediately — no support ticket required.

Encrypted in transit

Every request runs over TLS. Keys travel in an Authorization header, never in a URL or a query string.

Server-side only

Treat an API key like a password: keep it in your backend. Never ship it in browser code, a mobile app, or a public repo.

Predictable rate limits

Every response includes an X-RateLimit-Remaining header. If you go over, you'll get a 429 with a Retry-After header telling you exactly how long to wait.

Per minute
120
Max page size
100

Daily action caps (per key; workspace-wide cap is 3× each, shared across keys)

Emails
500
Enrollments
1,000
Calls
25
Texts
200
Appointments
50
Broadcasts
5
HTTPCodeMeaning
401invalid_api_keyMissing, malformed, or revoked key
403permission_deniedKey lacks write access for this call
404not_foundNo such record in your workspace
409conflictRequest is valid but the record's state refuses it
422validation_failedBad input — see errors[] for fields
429rate_limitedRate limit or daily cap — retry after Retry-After seconds
500internal_errorOur fault — safe to retry with backoff
502provider_errorAn upstream email/telephony provider failed the action

Connect Claude with the MCP server

Live

Connect an AI agent directly to your PipeCrush data using the Model Context Protocol. Point Claude Code or another MCP client at the hosted endpoint and get one tool per operation on this API — records, context, actions, and webhooks — so you can ask about your pipeline in plain language, with optional read-only keys.

Connect Claude to PipeCrush

Frequently asked questions

How do I get a PipeCrush API key?

Go to Settings → API Keys in PipeCrush (admin role required), click Create key, and name it after the integration you're building. Copy the key immediately — it's shown only once.

What can I do with the PipeCrush API today?

Six CRUD resources — contacts, leads, customers, tasks, tickets, and deals, each with list, create, fetch, and update. Context endpoints for notes, ticket comments, pipelines, cross-record search, lead activity timelines, inbox threads, call transcripts, and sales metrics. Action endpoints to send email, enroll a lead in a sequence or campaign, place a call, send a text, book or reschedule an appointment, reply in an inbox thread, pause or stop sequences and enrollments, and send email broadcasts. And outbound webhooks that POST a signed event to your endpoint when records change.

How is the API authenticated?

Send your API key as a bearer token on every request: Authorization: Bearer pc_live_your_key_here. There is no OAuth flow to build — one key, sent on every call.

What are the rate limits?

120 requests per minute per key. If you exceed it you'll get a 429 response with a Retry-After header telling you how long to wait.

Are there limits on emails, calls, texts, and appointments?

Yes — real-world actions carry a daily cap per key on top of the per-minute rate limit: 500 emails (inbox replies share this bucket), 1,000 sequence/campaign enrollments, 25 calls, 200 texts, 50 appointment bookings and reschedules combined, and 5 broadcast sends per day. A second, workspace-wide cap at three times each figure is shared across all your keys. Hitting either returns a 429 with a Retry-After header, same as the rate limit.

How do webhooks work?

An admin or manager key registers an HTTPS endpoint with POST /api/v1/webhooks and the events you want (or "*" for all). PipeCrush POSTs a JSON envelope for each event with an X-PipeCrush-Signature header — an HMAC-SHA256 of the timestamp and raw body using the secret returned once at creation. Failed deliveries retry five times over roughly 15 hours; an endpoint that fails 100 times in a row is disabled automatically. Use the test endpoint to send a ping and the deliveries endpoint to debug.

How do I avoid sending the same email, call, or text twice?

Every action endpoint (send email, reply in a thread, enroll, place call, send SMS, book or reschedule an appointment, create or send a broadcast) accepts an Idempotency-Key header. Retry the same request with the same key and body and you get back the original result instead of a duplicate action — essential for retries and AI-agent integrations.

Is there an OpenAPI spec or an MCP server?

A machine-readable OpenAPI 3.1 spec is live at GET /api/v1/openapi.json, with stable, tool-shaped operationIds for codegen and AI tooling. A remote MCP server at /api/mcp connects Claude and other AI agents directly to your data using the same API key — see the Connect Claude to PipeCrush page.

Ready to build?

Create a free PipeCrush account, then generate a key from Settings → API Keys.