HoneyBook Pipeline API

Operations about Pipelines

Operations 2

GET /pipeline List the caller company's pipeline (workspaces by stage) #
GET /pipeline/counts Pipeline stage/category tallies for the caller's company #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/honeybook:honeybook-pipeline-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

honeybook-pipeline-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HoneyBook Pipeline API
  description: 'The HoneyBook API lets you read and write the data behind a HoneyBook account — contacts, projects, workspaces, smart files, tasks, notes, conversations and more.


    It is a JSON HTTP API. Every request is authenticated with an OAuth 2.0 access token, every response is JSON, and every endpoint lives under a single versioned base path.


    ### Base URL


    ```

    https://api.honeybook.com/api/v3

    ```


    The version is part of the path. A new major version gets its own path and its own documentation; endpoints in `v3` are not removed or changed in place.


    ### Making a request


    Send the access token as a bearer token:


    ```bash

    curl https://api.honeybook.com/api/v3/contacts \

    -H "Authorization: Bearer "

    ```


    ### How this documentation is organized


    **Guides** describe the conventions that apply across the whole API. Read Errors, Pagination and Filtering & Sorting once and they apply to every endpoint you touch.


    **API Reference** documents every endpoint, grouped by the resource it belongs to.


    ### Conventions worth knowing before you start


    - **Identifiers are opaque strings.** An id is a 24-character hexadecimal string. Treat it as an opaque token: do not parse it, and do not assume any structure or ordering.

    - **Timestamps are ISO 8601** in UTC, for example `2026-08-11T14:30:52Z`. Date-only fields are `YYYY-MM-DD`.

    - **Money is an object**, not a bare number — an amount together with its currency. Never assume a currency.

    - **Unknown query parameters are ignored, not rejected.** A misspelled filter name does not produce an error; it simply does not filter. Check your parameter names against the reference when a list returns more rows than you expected.

    - **Absent is not the same as empty.** A field that was not requested and a field that is genuinely empty are distinguished — see Relation Includes.


    The API is private. To get access, fill in the Request Access form.'
  version: v3
servers:
- url: https://api.honeybook.com/api/v3
  description: Production
security:
- oauth2: []
tags:
- name: Pipeline
  description: Operations about Pipelines
paths:
  /pipeline:
    get:
      summary: List the caller company's pipeline (workspaces by stage)
      description: Company-scoped. Filter by stage/view/group/category/tags/types/sources/suggestion; sort by stage_moved_at (default desc), project_date, name, last_activity_at, created_at, stage, project_type, or lead_source.
      parameters:
      - in: query
        name: user_ids
        description: 'Team-member user ids whose pipeline to show (default: the caller). Watching others requires moderator+.'
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: page
        description: 1-indexed page number
        required: false
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 1000000
          default: 1
      - in: query
        name: per_page
        description: Page size (max 100)
        required: false
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 100
          default: 25
      - in: query
        name: stage_ids
        description: Pipeline stage ids to include (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: view_id
        description: Custom view id; resolves to the view's stage scope (overridden by stage_ids)
        required: false
        schema:
          type: string
      - in: query
        name: group
        description: Stage group
        required: false
        schema:
          type: string
          enum:
          - opportunities
          - projects
      - in: query
        name: category
        description: Stage category
        required: false
        schema:
          type: string
          enum:
          - lead
          - booked
          - other
      - in: query
        name: tag_ids
        description: Workspace tag ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: project_type_ids
        description: Project-type ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: lead_source_ids
        description: Lead-source ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: archived
        description: Return archived workspaces instead of active ones
        required: false
        schema:
          type: boolean
      - in: query
        name: untracked
        description: Include tracking-disabled (untracked) workspaces
        required: false
        schema:
          type: boolean
      - in: query
        name: has_suggestion
        description: Restrict to workspaces that do (true) or do not (false) have a live follow-up suggestion. Ignored when the caller has follow-up suggestions disabled
        required: false
        schema:
          type: boolean
      - in: query
        name: sort
        description: 'Sort key; ''-'' prefix = descending. A single key only. Allowed: stage_moved_at, project_date, name, last_activity_at, created_at, stage, project_type, lead_source. Default: -stage_moved_at.'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: List the caller company's pipeline (workspaces by stage)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Api_V3_Entities_PipelineEntry_Page'
      tags:
      - Pipeline
      operationId: listPipeline
      x-hb-resource: pipeline
      security:
      - oauth2:
        - workspaces.read
  /pipeline/counts:
    get:
      summary: Pipeline stage/category tallies for the caller's company
      description: Company-wide active/archived/untracked totals, per-category tallies, and per-stage counts. Custom views are NOT included (see GET /custom_views).
      parameters:
      - in: query
        name: user_ids
        description: 'Team-member user ids whose pipeline to tally (default: the caller). Tallying others requires moderator+.'
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: view_id
        description: Custom view id; resolves to the view's stage scope (overridden by stage_ids)
        required: false
        schema:
          type: string
      - in: query
        name: group
        description: Stage group
        required: false
        schema:
          type: string
          enum:
          - opportunities
          - projects
      - in: query
        name: category
        description: Stage category
        required: false
        schema:
          type: string
          enum:
          - lead
          - booked
          - other
      - in: query
        name: tag_ids
        description: Workspace tag ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: project_type_ids
        description: Project-type ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: lead_source_ids
        description: Lead-source ids (comma-separated)
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - in: query
        name: has_suggestion
        description: Restrict to workspaces that do (true) or do not (false) have a live follow-up suggestion. Ignored when the caller has follow-up suggestions disabled
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Pipeline stage/category tallies for the caller's company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Api_V3_Entities_PipelineCounts'
      tags:
      - Pipeline
      operationId: getPipelineCounts
      x-hb-resource: pipeline
      security:
      - oauth2:
        - workspaces.read
components:
  schemas:
    Api_V3_Entities_PipelineEntry:
      type: object
      properties:
        id:
          type: string
          description: Workspace id (BSON ObjectId hex)
        project_id:
          type:
          - string
          - 'null'
          description: Project (Event) id this workspace wraps (BSON ObjectId hex)
        name:
          type:
          - string
          - 'null'
          description: Project name
        project_date:
          type:
          - string
          - 'null'
          format: date
          description: Project date (calendar date, no time)
        project_end_date:
          type:
          - string
          - 'null'
          format: date
          description: Project end date (calendar date, no time)
        project_location:
          type:
          - string
          - 'null'
          description: Project location
        project_type:
          type:
          - string
          - 'null'
          description: Project type label
        cover_image_url:
          type:
          - string
          - 'null'
          description: Project cover image URL; null when the project has no image. A Cloudinary secure URL when the image was uploaded through Cloudinary, so a client may derive its own transformations from it
        current_stage:
          allOf:
          - $ref: '#/components/schemas/Api_V3_Entities_PipelineStageRef'
          description: The workspace's current pipeline stage (per the requested pipeline user)
        active:
          type: boolean
          description: Whether the workspace is active (not archived) for the requested pipeline user(s)
        tracked:
          type: boolean
          description: Whether the workspace is tracked in the pipeline (false = tracking disabled)
        tags:
          type: array
          items:
            type: string
          description: Workspace tags (only when owned by the caller's company; otherwise empty)
        member_count:
          type: integer
          format: int32
          description: Number of members (vendors + clients)
        has_follow_up_suggestion:
          type: boolean
          description: PER-VIEWER. Whether a live, unexpired follow-up suggestion exists for this workspace. Always false when the caller has follow-up suggestions disabled
        last_activity_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Last activity time (ISO8601)
        created_at:
          type: string
          format: date-time
          description: Workspace creation time (ISO8601)
      required:
      - id
      - project_id
      - name
      - project_date
      - project_end_date
      - project_location
      - project_type
      - cover_image_url
      - current_stage
      - active
      - tracked
      - tags
      - member_count
      - has_follow_up_suggestion
      - last_activity_at
      - created_at
    Api_V3_Entities_Pagination:
      type: object
      properties:
        page:
          type: integer
          format: int32
          description: 1-indexed number of the page returned (echoes the request)
        per_page:
          type: integer
          format: int32
          description: Page size (echoes the request)
        total_items:
          type: integer
          format: int32
          description: Total rows matching the query, across all pages
        total_pages:
          type: integer
          format: int32
          description: Total number of pages (0 when nothing matched)
        last_page:
          type: boolean
          description: True when this is the final page — stop paging
        offset:
          type: integer
          format: int32
          description: Rows skipped before this page ((page - 1) * per_page)
      required:
      - page
      - per_page
      - total_items
      - total_pages
      - last_page
      - offset
    Api_V3_Entities_PipelineCounts:
      type: object
      properties:
        active_count:
          type: integer
          format: int32
          description: Total active (tracked, not archived) workspaces
        archived_count:
          type: integer
          format: int32
          description: Total archived workspaces
        untracked_count:
          type: integer
          format: int32
          description: Total tracking-disabled (untracked) workspaces
        categories:
          type: array
          items:
            $ref: '#/components/schemas/Api_V3_Entities_PipelineCategoryCount'
          description: Per-category tallies (lead, booked, other)
        stages:
          type: array
          items:
            $ref: '#/components/schemas/Api_V3_Entities_PipelineStageCount'
          description: Per-stage tallies, ordered by the stage's display order
      required:
      - active_count
      - archived_count
      - untracked_count
      - categories
      - stages
      description: Api_V3_Entities_PipelineCounts model
    Api_V3_Entities_PipelineStageRef:
      type: object
      properties:
        stage_id:
          type:
          - string
          - 'null'
          description: Current pipeline stage id (matches a PipelineStageCount.stage_id from getPipelineCounts); null when untracked
        moved_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When the workspace entered its current stage (ISO8601); null when untracked
      required:
      - stage_id
      - moved_at
    Api_V3_Entities_PipelineCategoryCount:
      type: object
      properties:
        category:
          type: string
          description: 'Stage category (lowercase snake_case enum: lead, booked, other)'
        active_count:
          type: integer
          format: int32
          description: Active (not archived) workspaces in this category
        archived_count:
          type: integer
          format: int32
          description: Archived workspaces in this category
      required:
      - category
      - active_count
      - archived_count
    Api_V3_Entities_PipelineEntry_Page:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Api_V3_Entities_PipelineEntry'
          description: The rows on this page (empty when nothing matched)
        pagination:
          allOf:
          - $ref: '#/components/schemas/Api_V3_Entities_Pagination'
          description: Where this page sits in the full result set
      required:
      - data
      - pagination
      description: Api_V3_Entities_PipelineEntry_Page model
    Api_V3_Entities_PipelineStageCount:
      type: object
      properties:
        stage_id:
          type: string
          description: Pipeline stage id (BSON ObjectId hex)
        name:
          type:
          - string
          - 'null'
          description: Stage display name (server-localized for built-in stages; the author-supplied name for custom ones)
        system_key:
          type:
          - string
          - 'null'
          description: Stable key of a built-in stage (e.g. '_INQUIRY_'); null for a company's custom stage. Lets a client localize the stage itself instead of using `name`
        category:
          type:
          - string
          - 'null'
          description: 'Stage category (lowercase snake_case enum: lead, booked, other)'
        group:
          type:
          - string
          - 'null'
          description: 'Stage group (lowercase snake_case enum: opportunities, projects)'
        order:
          type:
          - number
          - 'null'
          format: float
          description: Display order (float; gaps allow insertion between stages)
        active_count:
          type: integer
          format: int32
          description: Active (not archived) workspaces in this stage
        archived_count:
          type: integer
          format: int32
          description: Archived workspaces in this stage
      required:
      - stage_id
      - name
      - system_key
      - category
      - group
      - order
      - active_count
      - archived_count
  securitySchemes:
    oauth2:
      type: oauth2
      x-hb-automatic-scopes:
      - offline_access
      - honeybook.api
      - honeybook.webhooks
      - openid
      flows:
        authorizationCode:
          authorizationUrl: https://oauth.honeybook.com/oauth2/auth
          tokenUrl: https://oauth.honeybook.com/oauth2/token
          scopes:
            offline_access: Obtain a refresh token so access can outlive a single token lifetime
            honeybook.api: General access to the HoneyBook API, granted with every token; on its own it only unlocks endpoints that have no resource-specific scope
            honeybook.webhooks: Receive webhook notifications about changes in the account
            openid: Identify the HoneyBook account that signed in. Used by sign-in flows
            contacts.write: Create, update and delete contacts, and manage their tags
            contacts.write_own: Create contacts and change only the ones your integration created, by sending partner_only=true
            projects.read: Read projects, their payroll employees and scheduling conflicts, and the company's project types
            projects.read_own: Read only the projects your integration created, by sending partner_only=true to the project endpoints, and the company's project types, where the flag is not sent
            projects.write: Create and update projects, manage their dates, spaces and payroll employees, and manage the company's project types
            projects.write_own: Create projects and change only the ones your integration created, by sending partner_only=true
            workspaces.read: Read workspaces, their members and legacy files, and the pipeline
            workspaces.read_own: Read only the workspaces your integration created, by sending partner_only=true
            workspaces.write: Update, archive, book and delete workspaces, move them between pipeline stages, and manage their members and tags
            workspaces.write_own: Change only the workspaces your integration created, by sending partner_only=true
          refreshUrl: https://oauth.honeybook.com/oauth2/token
      description: OAuth 2.0 authorization code flow with PKCE. See the Authentication guide.
x-tagGroups:
- name: ''
  tags:
  - Request Access
- name: Guides
  tags:
  - Authentication
  - Errors
  - Pagination
  - Filtering & Sorting
  - Relation Includes
  - Async Operations
- name: API Reference
  tags:
  - Contacts
  - Pipeline
  - Workspaces
  - Projects
x-provenance:
  method: harvested
  publisher: HoneyBook
  source: https://developers.honeybook.com/assets/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)