List pipelines
List your pipelines with their ordered stages, so you never have to type a pipeline or stage ID by hand.
GET/api-pipelines
Requires the crm:read scope. Returns every pipeline in the caller's organization, each with its stages in board order. Use it to find the pipeline_id / stage_id values that Create deal and Update deal accept, and to tell which stage means won or lost.
Example request
bash
curl -X GET \
'https://api.wundertreos.com/functions/v1/api-pipelines' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response
json
{
"data": [
{
"id": "p1a2b3c4-1111-2222-3333-444455556666",
"org_id": "a1b2c3d4-1111-2222-3333-444455556666",
"name": "Sales",
"description": null,
"is_default": true,
"sort_order": 0,
"created_at": "2026-04-15T10:00:00Z",
"updated_at": "2026-04-15T10:00:00Z",
"stages": [
{ "id": "s1a2b3c4-1111-2222-3333-444455556666", "pipeline_id": "p1a2b3c4-…", "name": "New", "sort_order": 1, "is_won": false, "is_lost": false, "is_qualified": false },
{ "id": "s2a2b3c4-1111-2222-3333-444455556666", "pipeline_id": "p1a2b3c4-…", "name": "Qualified", "sort_order": 2, "is_won": false, "is_lost": false, "is_qualified": true },
{ "id": "s3a2b3c4-1111-2222-3333-444455556666", "pipeline_id": "p1a2b3c4-…", "name": "Proposal", "sort_order": 3, "is_won": false, "is_lost": false, "is_qualified": false },
{ "id": "s4a2b3c4-1111-2222-3333-444455556666", "pipeline_id": "p1a2b3c4-…", "name": "Closed Won", "sort_order": 4, "is_won": true, "is_lost": false, "is_qualified": false },
{ "id": "s5a2b3c4-1111-2222-3333-444455556666", "pipeline_id": "p1a2b3c4-…", "name": "Closed Lost", "sort_order": 5, "is_won": false, "is_lost": true, "is_qualified": false }
]
}
]
}Response
| Field | Type | Description |
|---|---|---|
data[].id | uuid | |
data[].org_id | uuid | |
data[].name | string | |
data[].descriptionnullable | string | |
data[].is_default | boolean | The pipeline a deal lands in when Create deal is called without pipeline_id. |
data[].sort_order | integer | |
data[].created_at | string (ISO 8601) | |
data[].updated_at | string (ISO 8601) | |
data[].stages[].id | uuid | Pass as stage_id to Create deal / Update deal. |
data[].stages[].pipeline_id | uuid | |
data[].stages[].name | string | |
data[].stages[].sort_order | integer | Board order. The lowest is the stage a new deal defaults to. |
data[].stages[].is_won | boolean | Moving a deal here marks it won. |
data[].stages[].is_lost | boolean | Moving a deal here marks it lost. |
data[].stages[].is_qualified | boolean | Reaching this stage counts as a qualified lead for attribution. |
Stages of one pipeline
GET/api-pipelines/:id/stages
Returns just the stages of one pipeline, in board order — the same objects as data[].stages above. Zapier backs its Stage dropdown with this call.
bash
curl -X GET \
'https://api.wundertreos.com/functions/v1/api-pipelines/p1a2b3c4-1111-2222-3333-444455556666/stages' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'json
{
"data": [
{ "id": "s1a2b3c4-…", "pipeline_id": "p1a2b3c4-…", "name": "New", "sort_order": 1, "is_won": false, "is_lost": false, "is_qualified": false }
]
}Errors
| Status | error | When |
|---|---|---|
| 403 | forbidden | The credential lacks the crm:read scope. |
| 404 | not_found | /:id/stages was called with a pipeline ID that isn't in the caller's organization. |
Skip the lookup when you just need to close a deal
Update deal accepts { "status": "won" } and resolves the won stage for you. Use this endpoint when you want to move a deal to a specific intermediate stage.
