Skip to main content

Python library to interact with HubSpot's Private API

Project description

HubSpot Private API

Python library to interact with HubSpot's Private API

This is a Python library of HubSpot's Private API, which was reverse-engineered from their Mobile App. It allows users to do any kind of LLM automation / auto-reply (to live chats).

It was developed because HubSpot doesn't bother making their Public API feature-complete, and have had some modules in BETA for over a year (khm.. Conversations).

Additional features, which their Public API doesn't support:

  • Conversation: access Live Chat channels
  • Conversation: Assign the conversation to an agent
  • Conversation: Tag an agent inside a comment

Demo script

from hubspot_api import HubSpotApi

def cb_auth() -> str: # In case of 2FA, you'll need to return the code
    code = input('Enter 2FA code: ')
    return code

hs = HubSpotApi('my-email@provider.com', 'superSecretPw', cb_auth)

# You can also do hs.conversations.get_threads() to get all threads
threads = hs.conversations.get_unassigned_threads()
# Needed for assigning threads to agents
agents = hs.conversations.get_agents()

for t in threads:
    print('---------\nSubject:',t.subject, t.timestamp)
    msgs = t.read_messages()
    email_msgs = [f"FROM: {msg.fromName}, AT: {msg.timestamp}, EMAIL TEXT:\n{msg.text}" for msg in msgs]
    full_conversation = f'EMAIL SUBJECT: {t.subject}\n' + '\n\n'.join(email_msgs).lower()

    # Do some smart LLM stuff here

    if "api" in full_conversation or "code" in full_conversation:
        t.assign(agents.find('John Doe')) # Tech support
    elif "shipping" in full_conversation:
        t.assign(agents.find('Erik The Red')) # Ops/shipping
    elif "digital agency" in full_conversation:
        # They are trying to sell us something
        t.send_message("Thank you for your email, but we are not interested.")
        t.close()
    elif "tiktok" in full_conversation:
        t.spam() # TikTok? Spam for sure
    else:
        # Writing a comment (and tagging an agent) is also supported
        agent = agents.find('John Doe')
        t.comment(f'Hi {agent}, could you assign this to the best person?')

Module support

While HubSpot has many different modules (contacts, deals, tickets, etc.), most of them work as expected with their public API. Only Conversations are in "BETA", and have been for over a year now.

Installation

To install this Python package, run the following command:

pip install hubspot-api

Liability

Note: This unofficial API library is not endorsed by HubSpot and likely violates their Terms of Service. Use it at your own risk; the creator assumes no liability for any consequences.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

hubspot_api-0.7.0-py3-none-any.whl (14.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page