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: 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)