Skip to main content
For developers

Pipevale API and integrations

Bearer-key auth, RESTful endpoints, webhooks in both directions — and native connections to Zapier, Make and ApiX-Drive.

Authentication

Every API request needs an API key. Create one under Settings → API keys and send it in the header:

Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx

Rate limit: up to 120 requests per minute per workspace. Above that the API answers 429 with a Retry-After header — wait that many seconds and retry.

REST API — endpoints

Base URL: https://<your-domain>/api/v1

MethodPathDescription
GET/api/v1/recordsList records in a folder
GET/api/v1/records/:idOne record by ID
POST/api/v1/recordsCreate a record
PATCH/api/v1/records/:idUpdate a record
DELETE/api/v1/records/:idDelete a record (moves to Trash)
GET/api/v1/records/:id/commentsComments on a record
POST/api/v1/records/:id/commentsAdd a comment
GET/api/v1/records/:id/callsCall logs for a record
POST/api/v1/records/:id/callsLog a call
GET/api/v1/foldersList folders with their fields
GET/api/v1/pipelinesList pipelines (with stages)
GET/api/v1/pipelines/:idOne pipeline by ID
GET/api/v1/dealsDeals in a pipeline
POST/api/v1/dealsCreate a deal
PATCH/api/v1/deals/:idUpdate a deal
DELETE/api/v1/deals/:idDelete a deal
GET/api/v1/tasksList tasks
POST/api/v1/tasksCreate a task
PATCH/api/v1/tasks/:idUpdate a task
DELETE/api/v1/tasks/:idDelete a task

Examples: request and response

List records in a folder
Request
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://pipevale.com/api/v1/records?folderId=fld_123&q=київ"
Response
{
  "data": [
    {
      "id": "rec_abc",
      "folderId": "fld_123",
      "title": "ТОВ «Ромашка»",
      "email": "ceo@romashka.ua",
      "phone": "+380671234567",
      "data": { "city": "Київ", "status": "Активний" },
      "createdAt": "2026-07-09T08:15:00.000Z"
    }
  ]
}
One record by ID
Request
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://pipevale.com/api/v1/records/rec_abc"
Response
{
  "data": {
    "id": "rec_abc",
    "folderId": "fld_123",
    "title": "ТОВ «Ромашка»",
    "email": "ceo@romashka.ua",
    "data": { "city": "Київ" }
  }
}
Create a record
Request
curl -X POST \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"folderId":"fld_123","title":"Нова компанія","email":"hi@acme.ua"}' \
  "https://pipevale.com/api/v1/records"
Response
HTTP/1.1 201 Created

{
  "data": {
    "id": "rec_new",
    "folderId": "fld_123",
    "title": "Нова компанія",
    "email": "hi@acme.ua"
  }
}
List folders with fields
Request
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://pipevale.com/api/v1/folders"
Response
{
  "data": [
    {
      "id": "fld_123",
      "name": "Компанії",
      "type": "CUSTOM",
      "fields": [
        { "key": "city", "label": "Місто", "type": "TEXT" },
        { "key": "status", "label": "Статус", "type": "SELECT" }
      ]
    }
  ]
}
Comments on a record
Request
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://pipevale.com/api/v1/records/rec_abc/comments"
Response
{
  "data": [
    {
      "id": "note_1",
      "text": "Передзвонити у вівторок",
      "author": "Олег",
      "createdAt": "2026-07-09T09:00:00.000Z"
    }
  ]
}
Add a comment
Request
curl -X POST \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"text":"Оплатили рахунок №42"}' \
  "https://pipevale.com/api/v1/records/rec_abc/comments"
Response
HTTP/1.1 201 Created

{
  "data": {
    "id": "note_2",
    "text": "Оплатили рахунок №42",
    "createdAt": "2026-07-09T10:30:00.000Z"
  }
}
Log a call
Request
curl -X POST \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"direction":"OUTBOUND","duration":5,"phone":"+380671234567","notes":"Погодили ціну"}' \
  "https://pipevale.com/api/v1/records/rec_abc/calls"
Response
HTTP/1.1 201 Created

{
  "data": {
    "id": "call_1",
    "direction": "OUTBOUND",
    "outcome": "CONNECTED",
    "duration": 5,
    "calledAt": "2026-07-09T11:00:00.000Z"
  }
}
List pipelines with stages
Request
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://pipevale.com/api/v1/pipelines"
Response
{
  "data": [
    {
      "id": "pl_1",
      "name": "Продажі",
      "stages": [
        { "id": "st_1", "name": "Новий" },
        { "id": "st_2", "name": "Переговори" }
      ]
    }
  ]
}
Create a deal
Request
curl -X POST \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"pipelineId":"pl_1","title":"Угода з ACME","amount":15000}' \
  "https://pipevale.com/api/v1/deals"
Response
HTTP/1.1 201 Created

{
  "data": {
    "id": "deal_1",
    "pipelineId": "pl_1",
    "stageId": "st_1",
    "title": "Угода з ACME",
    "amount": 15000
  }
}
Create a task
Request
curl -X POST \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"Підготувати КП","dueAt":"2026-07-12T12:00:00Z","recordId":"rec_abc"}' \
  "https://pipevale.com/api/v1/tasks"
Response
HTTP/1.1 201 Created

{
  "data": {
    "id": "task_1",
    "title": "Підготувати КП",
    "dueAt": "2026-07-12T12:00:00.000Z",
    "status": "OPEN"
  }
}

Outgoing webhooks

Subscribe to events under Settings → Webhooks. Pipevale POSTs to your URL on every matching event.

record.createdrecord.updateddeal.stage_changed

Payload format:

{
  "event": "record.created",
  "recordId": "rec_xxx",
  "folderId": "fld_xxx",
  "workspaceId": "ws_xxx",
  "occurredAt": "2026-06-18T10:00:00Z",
  "record": {
    "id": "rec_xxx",
    "folderId": "fld_xxx",
    "title": "New company",
    "email": "ceo@example.com",
    "phone": "+380...",
    "data": { ... }
  }
}

The record field is a snapshot taken at the moment of the event, so you do not need a second request; it is null if the record is no longer available. The X-Pipevale-Signature: sha256=… header carries an HMAC of the body signed with the webhook secret — verify it on your side.

Incoming webhooks

An external system can start an automation inside Pipevale by POSTing to a unique URL. This is what makes the integration two-way: events flow out of Pipevale and into it.

  1. 1Pick the trigger. Open Automations → New automation and choose the “Incoming webhook” trigger.
  2. 2Copy the URL. Copy the generated URL, of the form /api/webhooks/trigger/{workflowId}.
  3. 3Send a request. POST any JSON body to it. Optionally include recordId — the scenario then runs in the context of that record.
  4. 4The automation runs. It performs the actions you configured: assign an owner, change a stage, call an API, and so on.

Example call:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"recordId":"rec_xxx","source":"my-crm","event":"payment.received"}' \
  "https://pipevale.com/api/webhooks/trigger/<workflowId>"

Response: { "ok": true, "workflowId": "..." }. The automation itself runs asynchronously on a queue.

No-code platforms

Zapier, Make and ApiX-Drive all work through the same two mechanisms, so there is nothing special to install:

Pipevale → the platform

Use a “Catch Hook” / “Custom Webhook” module on their side, copy the URL it gives you, and add it as an outgoing webhook under Settings → Webhooks. Every subscribed event then arrives there.

The platform → Pipevale

Use their generic HTTP module: either call the REST API with your Authorization: Bearer key, or POST to an incoming-webhook URL to start an automation.

There is no Pipevale app in their marketplaces — we would rather say so than imply an integration that does not exist. The generic HTTP and webhook modules cover the same ground.

Machine-readable spec: /api/v1/openapi.json — import it into ApiX-Drive, Postman, Insomnia or anything else that speaks OpenAPI 3, and every endpoint, field and example comes across automatically.

Need a hand?

Stuck on an endpoint, or missing something you need? Write to hello@pipevale.com — a person who wrote the code answers. See also the help centre.