CRM and marketing automation API for reading and writing contacts, companies, and deals. Best for workflows that need to sync customer records from other systems, create contacts from form submissions, or pull pipeline data into reports. Unlike Salesforce, HubSpot APIs are self-serve and free-tier-accessible, so they fit lightweight automation without enterprise contracts.
10 example endpoints available through Lava’s AI Gateway. See the HubSpot API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
Endpoints
GET https://api.hubapi.com/crm/v3/objects/contacts?limit=100&properties=email,firstname,lastname — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts?limit=100&properties=email,firstname,lastname' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%3Flimit%3D100%26properties%3Demail%2Cfirstname%2Clastname" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
GET https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}?properties=email,firstname,lastname — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}?properties=email,firstname,lastname' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%2F%7Bcontact_id%7D%3Fproperties%3Demail%2Cfirstname%2Clastname" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
POST https://api.hubapi.com/crm/v3/objects/contacts — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts' , {
body: {
"properties" : {
"email" : "ada@example.com" ,
"firstname" : "Ada" ,
"lastname" : "Lovelace"
}
},
});
curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"properties":{"email":"ada@example.com","firstname":"Ada","lastname":"Lovelace"}}'
Update an existing contact. Only properties in the request body are modified.
PATCH https://api.hubapi.com/crm/v3/objects/contacts/{contact_id} — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}' , { method: 'PATCH' , body: { "properties" : { "lifecyclestage" : "customer" }} });
curl -X PATCH "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%2F%7Bcontact_id%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"properties":{"lifecyclestage":"customer"}}'
POST https://api.hubapi.com/crm/v3/objects/contacts/search — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts/search' , {
body: {
"filterGroups" : [
{
"filters" : [
{
"propertyName" : "email" ,
"operator" : "EQ" ,
"value" : "ada@example.com"
}
]
}
]
},
});
curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%2Fsearch" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"filterGroups":[{"filters":[{"propertyName":"email","operator":"EQ","value":"ada@example.com"}]}]}'
List companies with pagination and property selection.
GET https://api.hubapi.com/crm/v3/objects/companies?limit=100&properties=name,domain,industry — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/companies?limit=100&properties=name,domain,industry' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcompanies%3Flimit%3D100%26properties%3Dname%2Cdomain%2Cindustry" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
List deals in the pipeline.
GET https://api.hubapi.com/crm/v3/objects/deals?limit=100&properties=dealname,amount,dealstage,closedate — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/deals?limit=100&properties=dealname,amount,dealstage,closedate' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fdeals%3Flimit%3D100%26properties%3Ddealname%2Camount%2Cdealstage%2Cclosedate" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Create a new deal in a specified pipeline and stage.
POST https://api.hubapi.com/crm/v3/objects/deals — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/deals' , {
body: {
"properties" : {
"dealname" : "Example Deal" ,
"amount" : "5000" ,
"dealstage" : "qualifiedtobuy" ,
"pipeline" : "default"
}
},
});
curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fdeals" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"properties":{"dealname":"Example Deal","amount":"5000","dealstage":"qualifiedtobuy","pipeline":"default"}}'
DELETE https://api.hubapi.com/crm/v3/objects/contacts/{contact_id} — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}' , { method: 'DELETE' });
curl -X DELETE "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%2F%7Bcontact_id%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json"
PUT https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}/associations/companies/{company_id}/{association_type_id} — Free
const data = await lava . gateway ( 'https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}/associations/companies/{company_id}/{association_type_id}' , { method: 'PUT' });
curl -X PUT "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.hubapi.com%2Fcrm%2Fv3%2Fobjects%2Fcontacts%2F%7Bcontact_id%7D%2Fassociations%2Fcompanies%2F%7Bcompany_id%7D%2F%7Bassociation_type_id%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json"
Next Steps
All Providers Browse all supported AI providers
Forward Proxy Learn how to construct proxy URLs and authenticate requests