Pipelines
Sales pipelines are ordered lists of stages that deals pass through. Each tenant can have multiple pipelines (e.g. "Enterprise sales" vs "SMB sales"). Use this endpoint to look up stages so your integrations can create deals in the right place without hardcoding stage names.
Scopes: crm.pipelines.read / crm.pipelines.write. Stage CRUD is Staffify-UI only in V1.
Endpoints
GET
/api/workspace/v1/pipelinesGET
/api/workspace/v1/pipelines/{id}POST
/api/workspace/v1/pipelinesPATCH
/api/workspace/v1/pipelines/{id}GET
/api/workspace/v1/pipelines/{id}/stagesThe pipeline object
| Field | Type | Description |
|---|---|---|
| id | integer | Pipeline id |
| name | string | Human-readable label (e.g. "Enterprise sales") |
| description | string | Optional short description |
| sort_order | integer | Display order (lower = earlier) |
| is_default | boolean | Marked as the tenant default |
| created_at | string(ISO) | Row creation time |
| updated_at | string(ISO) | Last modification |
The stage object
| Field | Type | Description |
|---|---|---|
| id | integer | Stage id |
| pipeline_id | integer | Parent pipeline id |
| name | string | Stage label (e.g. "Qualified", "Proposal sent") |
| sort_order | integer | Position inside the pipeline |
| probability | integer | Close-probability for forecast weighting (0-100) |
| is_won | boolean | Terminal "won" state |
| is_lost | boolean | Terminal "lost" state |
List pipelines + their stages
Common integration flow: pull all pipelines, pull each pipeline's stages, then use the stage names when creating deals via /deals.
# 1. List pipelines curl "https://app.staffifyai.com/api/workspace/v1/pipelines" \ -H "Authorization: Bearer sfy_wsp_live_YOUR_KEY" # 2. Stages for a pipeline curl "https://app.staffifyai.com/api/workspace/v1/pipelines/3/stages" \ -H "Authorization: Bearer sfy_wsp_live_YOUR_KEY"
Events
pipeline.createdpipeline.updated