Overview
Lev supports multiple pipeline types (financing, acquisition, custom). Each pipeline has a set of statuses representing deal stages.
| Endpoint | Description |
|---|---|
GET /build/pipelines | List all pipelines |
GET /pipelines/{pipeline_id} | Get a pipeline with its statuses |
POST /deals/{deal_id}/pipeline | Move a deal to a pipeline stage |
List Pipelines
/api/external/v2/build/pipelinesList all pipelines available to your account
Response (200):
{
"request_id": "...",
"timestamp": "2026-03-20T15:30:45Z",
"data": [
{
"id": 1,
"pipeline_type": "financing",
"pipeline_name": "Financing Pipeline",
"description": "Default financing pipeline",
"owner_account_id": 56,
"order": 1,
"statuses": [
{
"id": 10,
"status": "new",
"custom_status_name": null,
"description": "New deals",
"order": 1,
"icon": null
}
]
}
],
"pagination": {
"total": 3,
"limit": 50,
"offset": 0,
"has_more": false
}
}unauthorizedAuthentication required— Missing or invalid Authorization header
bad_requestcursor and sort cannot be combined; use offset pagination when sorting— Both cursor and sort params provided
Get Pipeline
/api/external/v2/pipelines/{pipeline_id}Get a single pipeline with its statuses
Response (200):
{
"request_id": "a9b0c1d2-e3f4-5678-2345-789012345678",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 1,
"pipeline_type": "financing",
"pipeline_name": "Financing Pipeline",
"description": "Default financing pipeline",
"owner_account_id": 56,
"order": 1,
"statuses": [
{
"id": 10,
"status": "new",
"custom_status_name": null,
"description": "New deals",
"order": 1,
"icon": null
},
{
"id": 11,
"status": "quoting",
"custom_status_name": null,
"description": "Deals in quoting stage",
"order": 2,
"icon": null
},
{
"id": 12,
"status": "term_sheet",
"custom_status_name": null,
"description": "Term sheet received",
"order": 3,
"icon": null
},
{
"id": 13,
"status": "closing",
"custom_status_name": null,
"description": "Deal in closing",
"order": 4,
"icon": null
},
{
"id": 14,
"status": "closed",
"custom_status_name": null,
"description": "Deal closed",
"order": 5,
"icon": null
}
]
}
}unauthorizedAuthentication required— Missing or invalid Authorization header
not_foundPipeline not found— The ID doesn't exist or isn't accessible to the authenticated user
Move Deal to Pipeline
/api/external/v2/deals/{deal_id}/pipelineMove a deal to a pipeline stage
This endpoint is idempotent — if the deal is already in the specified pipeline and status, no change is made.
Response (200):
{
"request_id": "b0c1d2e3-f4a5-6789-3456-890123456789",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 87,
"deal_id": 101,
"pipeline_id": 1,
"pipeline_name": "Financing Pipeline",
"pipeline_status_id": 11,
"status": "quoting"
}
}unauthorizedAuthentication required— Missing or invalid Authorization header
not_foundDeal not found— The deal_id doesn't exist or isn't accessible to the authenticated user
bad_requestPipeline not found— The pipeline_id doesn't exist
Pipeline Object
| Field | Type | Description |
|---|---|---|
id | integer | Pipeline identifier |
pipeline_type | string|null | Pipeline type (financing, acquisition, etc.) |
pipeline_name | string|null | Pipeline display name |
description | string|null | Pipeline description |
owner_account_id | integer|null | Owning account ID |
order | integer|null | Display order |
statuses | array | Pipeline statuses (see Pipeline Status Object) |
Pipeline Status Object
| Field | Type | Description |
|---|---|---|
id | integer | Status identifier |
status | string | Status key name |
custom_status_name | string|null | Custom display name |
description | string|null | Status description |
order | integer|null | Display order within the pipeline |
icon | string|null | Icon identifier |