Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Emails, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Emails API.
Log a sent email engagement on a contact's timeline via POST /crm/v3/objects/emails
Update email metadata such as subject or status with PATCH /crm/v3/objects/emails/{emailId}
Search email records by direction, status, or owner through POST /crm/v3/objects/emails/search
GET STARTED
For Agents
Log, read, search, and batch-manage HubSpot email engagement records on the CRM timeline via /crm/v3/objects/emails.
Use for: I need to log an outbound email I just sent from my own client onto a HubSpot contact's timeline, Search for all logged emails on a deal in the last 30 days, Update the subject line on an existing email engagement record, Bulk-import historical email logs from an external mailbox into HubSpot
Not supported: Does not send outbound email, render templates, or run drip campaigns — use for logging and reading email engagement records on the HubSpot CRM timeline only.
The HubSpot Emails CRM API manages email engagement records — logged emails, replies, and email metadata — that appear on contact and deal timelines. It exposes single and batch CRUD plus search across /crm/v3/objects/emails, supporting custom properties, pagination, and association lookups. Use it to log outbound emails sent from external tools, sync inbox replies, or pull engagement history for reporting; it does not send marketing or transactional emails.
Batch-import historical email logs with POST /crm/v3/objects/emails/batch/create
Upsert emails by external message ID via POST /crm/v3/objects/emails/batch/upsert
Archive obsolete email records with DELETE /crm/v3/objects/emails/{emailId}
Patterns agents use Emails API for, with concrete tasks.
★ External Mailbox Sync
Mirror outbound and inbound emails from an external IMAP mailbox or proprietary mailer into HubSpot so reps see complete activity history on the contact and deal timelines. The batch create endpoint handles up to 100 records per call, and upserting by an external message ID prevents duplicates on re-runs of the sync. Pair with the Associations API to attach each email to the right contact.
Batch-upsert 50 historical emails via POST /crm/v3/objects/emails/batch/upsert with idProperty hs_email_message_id, then chain Associations to link each to the matching contact.
Engagement Reporting
Pull email engagements by date, owner, or direction to power weekly outreach reports — for example, total emails sent by each rep and the count of replies received. The search endpoint accepts complex filterGroups and returns paginated results so reporting jobs can stream large result sets without timing out.
Search HubSpot emails where hs_email_direction equals OUTGOING and hubspot_owner_id equals 200 and createdate is within the last 7 days, returning the count and first page.
Reply Detection and Routing
Detect when a contact replies to a sales email, then route the reply to the right rep or workflow. The search endpoint can filter by direction INCOMING and a recent threshold timestamp, while a follow-up PATCH can stamp a custom property to mark the reply as processed. This keeps an automated outreach loop honest without bypassing HubSpot.
Search for emails where hs_email_direction equals INCOMING and createdate is within the last hour, then PATCH a custom processed property on each result.
Agent-Driven Email Logging via Jentic
An AI assistant drafting and sending email from a custom UI logs each send to HubSpot so reps see the activity on the contact timeline without leaving the assistant. Through Jentic the agent searches for the create operation, loads the schema, and executes it with the parsed subject, body, and direction. The flow runs on a single Jentic credential without exposing the HubSpot key.
Use Jentic to search 'log a HubSpot email engagement', load the POST /crm/v3/objects/emails schema, and execute it with hs_email_subject, hs_email_text, and hs_email_direction OUTGOING.
11 endpoints — the hubspot emails crm api manages email engagement records — logged emails, replies, and email metadata — that appear on contact and deal timelines.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/emails
List email engagements with pagination
/crm/v3/objects/emails
Log a new email engagement
/crm/v3/objects/emails/{emailId}
Retrieve an email engagement by ID
/crm/v3/objects/emails/{emailId}
Update an email engagement
/crm/v3/objects/emails/batch/upsert
Batch-upsert emails by external ID
/crm/v3/objects/emails/search
Search email engagements
/crm/v3/objects/emails
List email engagements with pagination
/crm/v3/objects/emails
Log a new email engagement
/crm/v3/objects/emails/{emailId}
Retrieve an email engagement by ID
/crm/v3/objects/emails/{emailId}
Update an email engagement
/crm/v3/objects/emails/batch/upsert
Batch-upsert emails by external ID
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth tokens and private app keys are stored encrypted in the Jentic vault. Agents receive a scoped execution token — the raw HubSpot credential is injected at call time and never enters the agent's context.
Intent-based discovery
Agents search Jentic by intent (e.g., 'log a HubSpot email engagement') and Jentic returns the matching /crm/v3/objects/emails operation with its input schema, so the agent calls the right endpoint without parsing HubSpot docs.
Time to first call
Direct HubSpot integration: 2-3 days for OAuth scopes, association chaining, and message-ID dedup. Through Jentic: under 1 hour — search, load, execute.
Alternatives and complements available in the Jentic catalogue.
Specific to using Emails API through Jentic.
What authentication does the HubSpot Emails CRM API use?
The Emails API accepts OAuth 2.0 access tokens with the crm.objects.contacts and engagements scopes plus HubSpot private app API keys passed in the private-app or private-app-legacy header. Through Jentic the credential lives in the MAXsystem vault and is injected at execution time so it never enters the agent's context.
Does this API send emails or just log them?
It only logs and manages engagement records on the CRM timeline — it does not send outbound mail. To send marketing email use HubSpot's Marketing Email API; to send transactional email use a provider like SendGrid and log the result here via POST /crm/v3/objects/emails.
What are the rate limits for the HubSpot Emails CRM API?
Account-level limits apply — typically 100 requests per 10 seconds for OAuth apps and 190 per 10 seconds for private apps on paid tiers. Use POST /crm/v3/objects/emails/batch/create or batch/upsert when importing historical mail since each batch counts as one request.
How do I log an email through Jentic?
Run jentic.search('log a HubSpot email engagement'), load the schema for POST /crm/v3/objects/emails, and execute it with hs_email_subject, hs_email_text, hs_email_direction, and hs_timestamp. Jentic returns the created engagement as structured JSON for downstream chaining.
Can I associate a logged email with a contact and a deal?
Yes, but the association is created via the CRM Associations API after the email engagement is created. Pass the new email's ID and the target contact or deal ID into the associations call — Jentic exposes that as a separate operation you can chain.
How do I distinguish outbound from inbound emails?
Use the hs_email_direction property — values include OUTGOING, INCOMING, and FORWARD. Filter on this property in POST /crm/v3/objects/emails/search to power direction-specific workflows like reply detection.
/crm/v3/objects/emails/search
Search email engagements