Heffl Clients API

The Clients API from Heffl — 2 operation(s) for clients.

GitHub OpenAPI

Operations 5

POST /clients Create a new client #
GET /clients List clients #
GET /clients/{id} Get a client #
PATCH /clients/{id} Update a client #
DELETE /clients/{id} Delete a client #

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/heffl-com:heffl-com-clients-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

heffl-com-clients-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Heffl Public API (Legacy v1) Clients API
  version: 1.0.0
  description: Legacy Heffl REST API v1. Maintained for existing integrations. For new projects, use API v2 at https://docs.heffl.com/api-v2/introduction.
  contact:
    name: Heffl Support
    url: https://heffl.com/support
    email: support@heffl.com
servers:
- url: https://api.heffl.com/api/v1
  description: Production API Server
security:
- ApiKeyAuth: []
tags:
- name: Clients
paths:
  /clients:
    post:
      operationId: clients.create
      summary: Create a new client
      description: Creates a new client/company in your CRM. The client will be assigned to the user associated with your API key.
      tags:
      - Clients
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  enum:
                  - company
                  - contact
                  default: company
                  description: 'Client type: company for companies, contact for contacts'
                name:
                  type: string
                  description: Company name (required for companies, optional for contacts)
                firstName:
                  type: string
                  description: First name (required for contacts)
                lastName:
                  type: string
                  description: Last name (optional for contacts)
                salutation:
                  type: string
                  description: Title (Mr., Mrs., Dr., etc.)
                phone:
                  type: string
                  description: Phone number with country code
                email:
                  anyOf:
                  - type: string
                    format: email
                  - type: 'null'
                  description: Email address
                jobTitle:
                  type: string
                  description: Job title or position
                website:
                  anyOf:
                  - {}
                  - type: 'null'
                  description: Company website URL
                taxNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: Tax ID or VAT number
                billingAddress:
                  anyOf:
                  - type: object
                    properties:
                      city:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: City
                      address:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Street address
                      landmark:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Nearby landmark
                      state:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: State or province
                      country:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Country code (2 letters, e.g., US, GB)
                      postalCode:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Postal code or ZIP code
                  - type: 'null'
                  description: Billing address details
                openingBalance:
                  type: number
                  minimum: 0
                  default: 0
                  description: Starting account balance (defaults to 0)
                primaryContact:
                  type: object
                  properties:
                    firstName:
                      type: string
                      minLength: 1
                    lastName:
                      type: string
                    email:
                      anyOf:
                      - type: string
                        format: email
                      - type: 'null'
                    phone:
                      type: string
                    salutation:
                      type: string
                    jobTitle:
                      type: string
                  required:
                  - firstName
                  additionalProperties: {}
                  description: Optional primary contact for company records
              additionalProperties: {}
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Client public ID
                  number:
                    type: string
                    description: Auto-generated client number
                  name:
                    type: string
                    description: Client name
                  type:
                    enum:
                    - company
                    - contact
                    description: Client type
                  firstName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: First name (for contacts)
                  lastName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Last name (for contacts)
                  email:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Email address
                  phone:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Phone number
                  website:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Website URL
                  stageId:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Client stage public ID
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: When the client was created
                  customFields:
                    anyOf:
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                    - type: 'null'
                    description: Custom field values
                required:
                - id
                - number
                - name
                - type
                - createdAt
    get:
      operationId: clients.list
      summary: List clients
      description: Returns a paginated list of clients. Supports search and type filtering.
      tags:
      - Clients
      parameters:
      - name: cursor
        in: query
        schema:
          type: string
          description: Cursor for pagination. Pass the previous response nextCursor value to fetch the next page.
        allowEmptyValue: true
        allowReserved: true
      - name: limit
        in: query
        schema:
          type: number
          minimum: 1
          maximum: 100
          default: 20
          description: Number of items to return (max 100)
        allowEmptyValue: true
        allowReserved: true
      - name: search
        in: query
        schema:
          type: string
          default: ''
          description: Search by name, email, or phone
        allowEmptyValue: true
        allowReserved: true
      - name: type
        in: query
        schema:
          enum:
          - company
          - contact
          description: Filter by client type
        style: deepObject
        explode: true
        allowEmptyValue: true
        allowReserved: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Client public ID
                        number:
                          type: string
                          description: Auto-generated client number
                        name:
                          type: string
                          description: Client name
                        type:
                          enum:
                          - company
                          - contact
                          description: Client type
                        firstName:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: First name (for contacts)
                        lastName:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Last name (for contacts)
                        email:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Email address
                        phone:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Phone number
                        website:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Website URL
                        stageId:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: Client stage public ID
                        createdAt:
                          type: string
                          format: date-time
                          x-native-type: date
                          description: When the client was created
                        customFields:
                          anyOf:
                          - type: object
                            propertyNames:
                              type: string
                            additionalProperties: {}
                          - type: 'null'
                          description: Custom field values
                      required:
                      - id
                      - number
                      - name
                      - type
                      - createdAt
                  nextCursor:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Cursor to fetch the next page. Null if there are no more results.
                  hasMore:
                    type: boolean
                    description: Whether additional results are available
                required:
                - items
                - hasMore
  /clients/{id}:
    get:
      operationId: clients.get
      summary: Get a client
      description: Returns a single client by its public ID.
      tags:
      - Clients
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Client public ID
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Client public ID
                  number:
                    type: string
                    description: Auto-generated client number
                  name:
                    type: string
                    description: Client name
                  type:
                    enum:
                    - company
                    - contact
                    description: Client type
                  firstName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: First name (for contacts)
                  lastName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Last name (for contacts)
                  email:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Email address
                  phone:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Phone number
                  website:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Website URL
                  stageId:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Client stage public ID
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: When the client was created
                  customFields:
                    anyOf:
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                    - type: 'null'
                    description: Custom field values
                required:
                - id
                - number
                - name
                - type
                - createdAt
    patch:
      operationId: clients.update
      summary: Update a client
      description: Updates an existing client/company in your CRM. Only provided fields will be updated.
      tags:
      - Clients
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Client public ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  enum:
                  - company
                  - contact
                  description: 'Client type: company for companies, contact for contacts'
                name:
                  type: string
                  description: Company name (required for companies, optional for contacts)
                firstName:
                  type: string
                  description: First name (required for contacts, optional for companies)
                lastName:
                  type: string
                  description: Last name (optional for contacts)
                salutation:
                  type: string
                  description: Title (Mr., Mrs., Dr., etc.)
                phone:
                  type: string
                  description: Phone number with country code
                email:
                  anyOf:
                  - type: string
                    format: email
                  - type: 'null'
                  description: Email address
                jobTitle:
                  type: string
                  description: Job title or position
                website:
                  anyOf:
                  - {}
                  - type: 'null'
                  description: Company website URL
                taxNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: Tax ID or VAT number
                billingAddress:
                  anyOf:
                  - type: object
                    properties:
                      city:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: City
                      address:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Street address
                      landmark:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Nearby landmark
                      state:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: State or province
                      country:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Country code (2 letters, e.g., US, GB)
                      postalCode:
                        anyOf:
                        - type: string
                        - type: 'null'
                        description: Postal code or ZIP code
                  - type: 'null'
                  description: Billing address details
                primaryContact:
                  type: object
                  properties:
                    firstName:
                      type: string
                      minLength: 1
                    lastName:
                      type: string
                    email:
                      anyOf:
                      - type: string
                        format: email
                      - type: 'null'
                    phone:
                      type: string
                    salutation:
                      type: string
                    jobTitle:
                      type: string
                  required:
                  - firstName
                  additionalProperties: {}
                  description: Optional primary contact for company records
              required: []
              additionalProperties: {}
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Client public ID
                  number:
                    type: string
                    description: Auto-generated client number
                  name:
                    type: string
                    description: Client name
                  type:
                    enum:
                    - company
                    - contact
                    description: Client type
                  firstName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: First name (for contacts)
                  lastName:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Last name (for contacts)
                  email:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Email address
                  phone:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Phone number
                  website:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Website URL
                  stageId:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: Client stage public ID
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: When the client was created
                  customFields:
                    anyOf:
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                    - type: 'null'
                    description: Custom field values
                required:
                - id
                - number
                - name
                - type
                - createdAt
    delete:
      operationId: clients.delete
      summary: Delete a client
      description: Permanently deletes a client. Will fail if the client has associated deals, invoices, or quotations.
      tags:
      - Clients
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          description: Client public ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties: {}
              required: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                required:
                - success
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Get yours at app.heffl.com/settings/developers