> ## Documentation Index
> Fetch the complete documentation index at: https://docs.civiccontracts.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage pipeline

> Read pipelines and add, update, or remove pursuits via the Civic AI API.

Programmatically manage the same [pipelines](/pursuits/pipeline) your team uses in the app: read pipelines and their stages, and add, move, update, or remove pursuits.

The API sees the pipelines visible to the admin who created your key — their own pipelines plus any shared with the org. Creating or deleting whole pipelines and editing stages is app-only for now.

## List pipelines

```
GET /v1/pipelines
```

```json theme={null}
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "a74efcf5-f958-4ff1-84c9-3c8dc91db100",
        "name": "Team Pipeline",
        "sharedWithOrg": true,
        "owner": { "id": "…", "name": "…", "email": "…" },
        "pursuitCount": 12,
        "updatedAt": "2026-07-20T18:00:00.000Z"
      }
    ]
  }
}
```

## Get a pipeline (with stages)

```
GET /v1/pipelines/{pipelineId}
```

The response includes the ordered `stages` array. You'll need a `stage.id` to move pursuits between stages.

## List pursuits

```
GET /v1/pipelines/{pipelineId}/pursuits?limit=200
```

## Add a pursuit

```
POST /v1/pipelines/{pipelineId}/pursuits
```

Body (`noticeId` and `title` required — take them from [contract search](/api/search-contracts) results):

```json theme={null}
{
  "noticeId": "f450a08d093f48a587bae8a3588909f4",
  "title": "Security Programs Operational Support",
  "agency": "GSA",
  "naicsCode": "541512",
  "state": "VA",
  "responseDeadLine": "2026-08-01",
  "uiLink": "https://…",
  "note": "Found via API — strong past-performance fit"
}
```

New pursuits land in the pipeline's first stage. Adding the same `noticeId` twice is idempotent — you get the existing pursuit back.

## Update a pursuit

```
PATCH /v1/pipelines/{pipelineId}/pursuits/{pursuitId}
```

Any subset of:

```json theme={null}
{
  "stageId": "352231b0-e80c-4a68-90a4-a3477c0f1bf0",
  "note": "Qualified after capture call",
  "pWin": 40,
  "pGo": 90,
  "estimatedValueCents": 25000000
}
```

Moving to a stage applies that stage's default P(win)/P(go) unless you pass explicit values. The response includes the computed `weightedValueCents`.

## Remove a pursuit

```
DELETE /v1/pipelines/{pipelineId}/pursuits/{pursuitId}
```

`{pursuitId}` accepts either the pursuit's `id` (uuid) or its `noticeId`.

```json theme={null}
{ "success": true, "data": { "id": "f450a08d093f48a587bae8a3588909f4" } }
```
