Resources

Pipelines & Stages

A pipeline is a board with ordered stages. Opportunities and projects move through a pipeline's stages over their lifecycle. Read these endpoints to discover the stage ids you need when creating an opportunity, and write to them to keep a workspace's board in step with whatever system you are syncing from.

Permissions

Reads need nothing beyond a valid key. Every write requires the workspace member who generated the key to hold pipelines.manage, the same permission the board itself checks, so a key cannot reshape a pipeline its owner could not reshape by hand. Every write is recorded in the workspace's audit log against that member.

Creating a pipeline counts against the workspace plan the same way creating one in the app does. A pipeline in another workspace answers 404, never 403.

The closing stage is system-managed

A project pipeline ends in a stage flagged is_terminal, normally named Closed. Moving a project into it archives the project, so it cannot be renamed, moved off the end, or deleted, and a new stage always lands in front of it whatever position you ask for. Check is_terminal before you plan a write.

The stage object

FieldTypeDescription
iduuidUnique id of the stage. This is the stage_id you pass when creating an opportunity.
pipeline_iduuidThe pipeline the stage belongs to.
namestringStage name as it reads on the board.
colorstringHex color, or null.
positionintegerZero-based order on the board. Always contiguous.
is_terminalbooleanTrue for the system-managed closing stage. Dropping a project there archives it, so it cannot be renamed, moved, or deleted.
GET/v1/pipelines

List pipelines

Returns all pipelines for your workspace. The default pipeline is returned first.

Query parameterTypeDescription
typeenumFilter by pipeline type. One of: opportunity, project, custom.
POST/v1/pipelines

Create a pipeline

Creates a workspace-wide pipeline with its stages, in the order given. A board with no stages has nowhere to put a record, so stages is required.

BodyTypeDescription
namestringRequired. 120 characters or fewer.
typeenumRequired. opportunity or project.
stagesstring[]Required. Between 1 and 50 stage names, in board order.
PATCH/v1/pipelines/{id}

Rename a pipeline

Takes nameand nothing else. Pipelines cannot be deleted through the API: removing a board takes every record's placement on it, so that stays an action somebody takes in the app with the confirmation in front of them.

GET/v1/stages

List stages for a pipeline

Returns the ordered stages for a single pipeline.

Query parameterTypeDescription
pipeline_iduuidRequired. The pipeline whose stages you want.
POST/v1/stages

Add a stage

Appends a stage to a pipeline, or inserts it at position. Positions past the end clamp rather than erroring, and every other stage is renumbered so positions stay contiguous.

BodyTypeDescription
pipeline_iduuidRequired. The pipeline to add to.
namestringRequired. 120 characters or fewer.
positionintegerZero-based. Appends when omitted. Never places the stage behind the closing stage.
colorstringHex color such as #0073E6, or null.
PATCH/v1/stages/{id}

Rename, recolor, or move a stage

Every field is optional; only what you send changes. Sending positionreorders the pipeline around the stage. The closing stage accepts a color and refuses a rename or a move.

BodyTypeDescription
namestring120 characters or fewer.
positionintegerZero-based target position.
colorstringHex color, or null to clear it.
DELETE/v1/stages/{id}

Delete a stage

Records sitting on a stage have to go somewhere, so destination_stage_id is required and must name another stage on the same pipeline. Every record moves there, then the stage is removed and the pipeline renumbered. The response reports how many moved.

A pipeline always keeps at least one working stage, so the last one refuses to delete, and so does the closing stage.

Query parameterTypeDescription
destination_stage_iduuidRequired. Where the records on this stage move to.