openapi: 3.0.3 info: title: HoneyBook API (Modeled) Clients Invoices API description: HoneyBook does not publish a self-serve public developer API or a public API reference. This document models the logical resource surface implied by HoneyBook's product (clients/leads, projects, contracts, proposals, invoices, payments, scheduler sessions) and by the trigger/action events exposed through its Zapier integration (New Client, New Inquiry, Project Booked, Payment Received, Project Stage Changed). An internal API host, https://api.honeybook.com, is live behind Cloudflare and clearly backs HoneyBook's own web/mobile apps and its native integrations, but HoneyBook has never published endpoint documentation, a client registration/OAuth flow, or a field dictionary for outside developers. Third-party integration guides (e.g. Rollout) reference an OAuth 2.0 flow against api.honeybook.com and a `/v1/` base path, but are inconsistent with each other on the exact token endpoint and grant type, and are not independently verifiable - treat every path, parameter, and schema below as an honest, sourced-but-unverified model, not a confirmed reference. Confirm directly with HoneyBook before attempting integration. version: 1.0-modeled contact: name: HoneyBook url: https://www.honeybook.com servers: - url: https://api.honeybook.com/v1 description: Modeled base path (unverified; not publicly documented by HoneyBook) security: - oauth2: [] tags: - name: Invoices description: Invoices issued to clients within a project. paths: /projects/{project_id}/invoices: parameters: - $ref: '#/components/parameters/ProjectId' get: operationId: listInvoices tags: - Invoices summary: List invoices for a project responses: '200': description: A list of invoices. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Invoice' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: operationId: createInvoice tags: - Invoices summary: Create an invoice for a project requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvoiceInput' responses: '201': description: The created invoice. content: application/json: schema: $ref: '#/components/schemas/Invoice' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' /invoices/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getInvoice tags: - Invoices summary: Retrieve an invoice responses: '200': description: The requested invoice. content: application/json: schema: $ref: '#/components/schemas/Invoice' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: responses: Unauthorized: description: Missing or invalid access token. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' ValidationError: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Invoice: allOf: - $ref: '#/components/schemas/InvoiceInput' - type: object properties: id: type: string project_id: type: string status: type: string enum: - draft - sent - paid - overdue InvoiceInput: type: object required: - amount_due properties: amount_due: type: number due_date: type: string format: date line_items: type: array items: type: object properties: description: type: string amount: type: number Error: type: object properties: error: type: object properties: code: type: string message: type: string parameters: Id: name: id in: path required: true description: The unique identifier of the resource. schema: type: string ProjectId: name: project_id in: path required: true description: The unique identifier of the parent project. schema: type: string securitySchemes: oauth2: type: oauth2 description: Third-party integration guides reference OAuth 2.0 against api.honeybook.com, but are inconsistent on the exact token endpoint and grant type and are not independently verifiable. Modeled here as an authorization-code flow with refresh tokens, the most common pattern for a user-data platform of this kind; treat as unverified. flows: authorizationCode: authorizationUrl: https://api.honeybook.com/oauth/authorize tokenUrl: https://api.honeybook.com/oauth/token scopes: clients.read: Read clients and inquiries. clients.write: Create and update clients and inquiries. projects.read: Read projects and pipeline stage. projects.write: Create and update projects. contracts.read: Read contracts. contracts.write: Create contracts. proposals.read: Read proposals. proposals.write: Create proposals. invoices.read: Read invoices. invoices.write: Create invoices. payments.read: Read payments. scheduler.read: Read session types and bookings. scheduler.write: Create bookings. webhooks.write: Manage webhook subscriptions. externalDocs: description: HoneyBook integrations and partnerships help center url: https://help.honeybook.com/en/collections/68941-integrations-and-partnerships