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

# List pipelines

> The CRM pipelines and their stages, each mapped onto the standard ladder. A workspace without a CRM gets `implied: true` and its own stage ladder.

Your CRM pipelines and their stages. Each stage carries `canonical`, the standard stage it maps to. That is what `canonical_stage` on a deal and the `stage` filters use.

| Standard stage | Meaning |
| - | - |
| `identified` | Nothing has happened yet. |
| `connected` | They did something. Accepted, replied, opened, visited. |
| `interested` | They replied positively. |
| `meeting_booked` | A meeting is on the calendar. |
| `discovery` | A first call happened. |
| `demo` | A demo happened. |
| `negotiation` | Terms or a proposal are on the table. |
| `closed_won` | Signed. |
| `closed_lost` | Lost the deal. |
| `disqualified` | Not a fit, or asked us to stop. |
| `churned` | A former customer who left. |

A workspace without a CRM returns no pipelines, `implied: true`, and its own stage ladder in `workspace_stages`.


## OpenAPI

````yaml GET /v2/pipelines
openapi: 3.1.0
info:
  title: OpenNous REST API
  version: 2.0.0
  description: >-
    Read and write the OpenNous revenue context graph over HTTP. Authenticate
    with a workspace API key.
servers:
  - url: https://api.opennous.cloud
    description: OpenNous Cloud
security:
  - bearerAuth: []
  - apiKeyHeader: []
tags:
  - name: People
  - name: Accounts
  - name: Deals
  - name: Notes
  - name: Attention
  - name: Insights
  - name: Enrich & score
  - name: Organization
  - name: Workflows
  - name: Webhooks
    description: >-
      Subscribe to events and have them pushed to your own stack, with the
      account record attached.
  - name: Usage
paths:
  /v2/pipelines:
    get:
      tags:
        - Deals
      summary: List pipelines
      description: >-
        The CRM pipelines and their stages, each mapped onto the standard
        ladder. A workspace without a CRM gets `implied: true` and its own stage
        ladder.
      operationId: listPipelines
      responses:
        '200':
          description: Pipelines and the standard ladder.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pipelines:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        is_primary:
                          type: boolean
                        deals:
                          type: integer
                          description: Omitted for member keys on a closed workspace.
                        open_deals:
                          type: integer
                        stages:
                          type: array
                          items:
                            $ref: '#/components/schemas/Stage'
                  implied:
                    type: boolean
                    description: True when there is no CRM pipeline.
                  primary_pipeline_ref:
                    type:
                      - string
                      - 'null'
                  workspace_stages:
                    type: array
                    items:
                      $ref: '#/components/schemas/Stage'
                    description: Only when `implied` is true.
                  standard_stages:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                          enum:
                            - identified
                            - connected
                            - interested
                            - meeting_booked
                            - discovery
                            - demo
                            - negotiation
                            - closed_won
                            - closed_lost
                            - disqualified
                            - churned
                        label:
                          type: string
                        rank:
                          type: integer
                        kind:
                          type: string
                          enum:
                            - active
                            - won
                            - lost
                            - churned
              example:
                pipelines:
                  - id: default
                    name: Sales pipeline
                    is_primary: true
                    deals: 212
                    open_deals: 48
                    stages:
                      - key: appointmentscheduled
                        label: Discovery call
                        canonical: discovery
                        kind: active
                implied: false
                primary_pipeline_ref: default
                standard_stages:
                  - key: identified
                    label: Identified
                    rank: 0
                    kind: active
        '400':
          description: A bad query parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: unknown_query_param
                detail: 'unsupported query param(s): foo'
                supported: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/UpgradeRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Stage:
      type: object
      properties:
        key:
          type: string
        label:
          type: string
        canonical:
          type:
            - string
            - 'null'
          enum:
            - identified
            - connected
            - interested
            - meeting_booked
            - discovery
            - demo
            - negotiation
            - closed_won
            - closed_lost
            - disqualified
            - churned
            - null
        kind:
          type: string
          enum:
            - active
            - won
            - lost
            - churned
    Error:
      type: object
      description: >-
        Every error response. `error` is a stable machine code. Some errors add
        fields such as `detail`, `supported`, `max`, or `reason`.
      required:
        - error
      properties:
        error:
          type: string
          description: Machine-readable error code.
        detail:
          type: string
          description: Human-readable explanation, when there is one.
      additionalProperties: true
  responses:
    Unauthorized:
      description: Missing, unknown, or expired API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missing:
              summary: api_key_required
              value:
                error: api_key_required
            invalid:
              summary: invalid_api_key
              value:
                error: invalid_api_key
            expired:
              summary: api_key_expired
              value:
                error: api_key_expired
                detail: >-
                  This API key has expired. Create or rotate a key to get a
                  fresh one.
    UpgradeRequired:
      description: The workspace is past its monthly operations limit and grace window.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: upgrade_required
            reason: ops_limit_reached
            current_plan: starter
            upgrade_url: /settings?section=billing
    RateLimited:
      description: More than 600 requests in a minute on this key.
      headers:
        RateLimit-Limit:
          schema:
            type: integer
          description: Requests allowed per window.
        RateLimit-Remaining:
          schema:
            type: integer
          description: Requests left in the window.
        RateLimit-Reset:
          schema:
            type: integer
          description: Seconds until the window resets.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: rate_limited
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal_error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Workspace API key. Create one in **Settings → API keys**.
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: The same key, sent as a header.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.