hubspot
HubSpot CRM and CMS API integration for contacts, companies, deals, owners, and content management.
- License 许可
- MIT
- 最近更新
- 2026-08-23
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- hubspot
- metadata
- { "clawdbot": { "secrets": [ "HUBSPOT_ACCESS_TOKEN" ] } }
- description
- HubSpot CRM and CMS API integration for contacts, companies, deals, owners, and content management.
02 资源文件 1
- 参考文档_meta.json266 B
03 SKILL.md 正文
HubSpot Skill
Interact with HubSpot CRM and CMS via the REST API.
Setup
Set your HubSpot Private App access token:
HUBSPOT_ACCESS_TOKEN=pat-na2-xxxxx
API Base
All endpoints use: https://api.hubapi.com
Authorization header: Bearer $HUBSPOT_ACCESS_TOKEN
CRM Objects
Contacts
Create contact:
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"email":"test@example.com","firstname":"Test","lastname":"User","phone":"555-1234","company":"Acme Inc","jobtitle":"Manager"}}' \
"https://api.hubapi.com/crm/v3/objects/contacts" | jq
List contacts:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/contacts?limit=10" | jq
Search contacts:
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filterGroups":[{"filters":[{"propertyName":"email","operator":"CONTAINS_TOKEN","value":"example.com"}]}],"limit":10}' \
"https://api.hubapi.com/crm/v3/objects/contacts/search" | jq
Get contact by ID:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/contacts/{contactId}?properties=email,firstname,lastname,phone,company" | jq
Get contact by email:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/contacts/{email}?idProperty=email" | jq
Companies
List companies:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/companies?limit=10&properties=name,domain,industry" | jq
Search companies:
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filterGroups":[{"filters":[{"propertyName":"name","operator":"CONTAINS_TOKEN","value":"acme"}]}],"limit":10}' \
"https://api.hubapi.com/crm/v3/objects/companies/search" | jq
Get company by ID:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/companies/{companyId}?properties=name,domain,industry,numberofemployees" | jq
Deals
Create deal:
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"dealname":"New Deal","amount":"10000","closedate":"2026-06-01","description":"Deal notes here"}}' \
"https://api.hubapi.com/crm/v3/objects/deals" | jq
List deals:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/deals?limit=10&properties=dealname,amount,dealstage,closedate" | jq
Search deals:
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filterGroups":[{"filters":[{"propertyName":"dealstage","operator":"EQ","value":"closedwon"}]}],"limit":10}' \
"https://api.hubapi.com/crm/v3/objects/deals/search" | jq
Get deal by ID:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/objects/deals/{dealId}?properties=dealname,amount,dealstage,closedate,pipeline" | jq
Owners
List owners (users):
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/owners" | jq
Update & Assign Owner
Update contact properties:
curl -s -X PATCH -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"phone":"555-9999","jobtitle":"Director"}}' \
"https://api.hubapi.com/crm/v3/objects/contacts/{contactId}" | jq
Assign owner to contact:
curl -s -X PATCH -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"hubspot_owner_id":"{ownerId}"}}' \
"https://api.hubapi.com/crm/v3/objects/contacts/{contactId}" | jq
Assign owner to deal:
curl -s -X PATCH -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"properties":{"hubspot_owner_id":"{ownerId}"}}' \
"https://api.hubapi.com/crm/v3/objects/deals/{dealId}" | jq
Associations
Get associated contacts for a company:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v4/objects/companies/{companyId}/associations/contacts" | jq
Get associated deals for a contact:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v4/objects/contacts/{contactId}/associations/deals" | jq
Create association (deal to contact):
curl -s -X POST -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inputs":[{"from":{"id":"{dealId}"},"to":{"id":"{contactId}"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":3}]}]}' \
"https://api.hubapi.com/crm/v4/associations/deals/contacts/batch/create" | jq
Common association type IDs:
- 3: Deal to Contact
- 5: Deal to Company
- 1: Contact to Company
Properties (Schema)
List contact properties:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/properties/contacts" | jq '.results[].name'
List company properties:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/properties/companies" | jq '.results[].name'
List deal properties:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/crm/v3/properties/deals" | jq '.results[].name'
CMS
Pages
List site pages:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/cms/v3/pages/site-pages?limit=10" | jq
List landing pages:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/cms/v3/pages/landing-pages?limit=10" | jq
Domains
List domains:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/cms/v3/domains" | jq
Files
List files:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/files/v3/files?limit=10" | jq
Search files:
curl -s -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
"https://api.hubapi.com/files/v3/files/search?name=logo" | jq
Search Operators
For search endpoints, use these operators in filters:
| Operator | Description |
|---|---|
EQ |
Equal to |
NEQ |
Not equal to |
LT |
Less than |
LTE |
Less than or equal |
GT |
Greater than |
GTE |
Greater than or equal |
CONTAINS_TOKEN |
Contains word |
NOT_CONTAINS_TOKEN |
Does not contain word |
HAS_PROPERTY |
Has a value |
NOT_HAS_PROPERTY |
Does not have a value |
PowerShell Examples
For Windows/PowerShell, use Invoke-RestMethod:
$headers = @{
"Authorization" = "Bearer $env:HUBSPOT_ACCESS_TOKEN"
"Content-Type" = "application/json"
}
# List contacts
Invoke-RestMethod -Uri "https://api.hubapi.com/crm/v3/objects/contacts?limit=10" -Headers $headers
# Search contacts
$body = @{
filterGroups = @(@{
filters = @(@{
propertyName = "email"
operator = "CONTAINS_TOKEN"
value = "example.com"
})
})
limit = 10
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method POST -Uri "https://api.hubapi.com/crm/v3/objects/contacts/search" -Headers $headers -Body $body
Notes
- Full CRUD operations supported with appropriate scopes
- Rate limits: 100 requests per 10 seconds for private apps
- Pagination: Use
afterparameter frompaging.next.afterfor next page - Portal ID is in the record URL:
https://app-na2.hubspot.com/contacts/{portalId}/record/...
04 同仓库更多 Skills
crowd-prompting
A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.
dilemm-ai
Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
git-summary
Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.
agent-constitution
Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.