nodestash
Pipelines

Update a pipeline stage

Partially updates a stage. Only the provided fields are changed. Cannot change the `type` of the last `won` or `lost` stage in a pipeline — every pipeline must have at least one of each.

PATCH
/pipelines/{id}/stages/{stageId}
AuthorizationBearer <token>

API key from your nodestash dashboard. Pass as a Bearer token in the Authorization header.

In: header

Path Parameters

id*string

Pipeline ID (prefixed with pp_).

Match^pp_
stageId*string

Pipeline stage ID (prefixed with ps_).

Match^ps_

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://api.nodestash.io/v1/pipelines/pp_8rT4mK9pQsVwXyZaB2cD4/stages/ps_4kT9mN2qRsYvAzCeB2cD4" \  -H "Content-Type: application/json" \  -d '{    "name": "Contract Negotiation",    "position": 4  }'
{
  "data": {
    "id": "ps_7fG8hI9jK1lM2nO3pQ4r",
    "type": "pipeline_stage",
    "attributes": {
      "id": "ps_7fG8hI9jK1lM2nO3pQ4r",
      "name": "Contract Negotiation",
      "position": 4,
      "type": "open",
      "created_at": "2026-02-10T11:00:00Z",
      "updated_at": "2026-02-12T14:30:00Z"
    }
  },
  "meta": {
    "request_id": "req_5eF6gH7iJ8kL9mN1oP2q"
  }
}
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Request validation failed",
    "details": [
      {
        "field": "email",
        "message": "Invalid email"
      }
    ]
  },
  "meta": {
    "request_id": "req_abc123def456"
  }
}
{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Missing or invalid Authorization header"
  },
  "meta": {
    "request_id": "req_abc123def456"
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Contact not found"
  },
  "meta": {
    "request_id": "req_abc123def456"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded"
  },
  "meta": {
    "request_id": "req_abc123def456"
  }
}