Skip to main content

Supported products

Use the Lead Scoring API to draft, publish, and manage lead score configurations (i.e. rules, criteria). Once a score is published, you can retrieve records’ current scores or view score history over time. Learn more about lead scores in HubSpot.

Create a lead score

To create a new score configuration, make a POST request to /marketing/lead-scoring/2026-09-beta/scores. Include the following in the request body: The request creates a new score with an initial draft configuration. Drafts must be published to become active scores that evaluate records.
A successful response returns 201 with a Location header pointing to the new score resource, with a scoreStatus of "draft".

Publish a draft

To publish a draft, make a POST request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/draft/publish. For new scores, this turns on the score and triggers an evaluation of records. For existing scores, the score is updated and the request triggers a re-evaluation of records based on the updated criteria. A successful response returns the score with a scoreStatus of "published".

Retrieve scores

To retrieve a paginated list of lead scores, make a GET request to /marketing/lead-scoring/2026-09-beta/scores. Include the limit and after query parameters to specify the number of scores returned and to paginate results. The response will look similar to the following, with a results array of score summaries and a paging object for pagination.

Retrieve score configurations

  • To retrieve the published configuration for a score, make a GET request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}.
  • To retrieve the current draft configuration for a score, make a GET request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/draft.
The response includes all scoring criteria, rules, filters, and timestamps. The scoreStatus field indicates whether the score is published or published_with_draft.

Upsert a draft

To update the active draft for a score, make a PUT request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/draft. This request fully updates the configuration, meaning the entire draft is overwritten with the updated request body. If no draft exists, a new one is created.
A successful response returns 200 with the updated draft. Validation failures return a VALIDATION_ERROR response.

Revert a draft to the published configuration

To discard all unpublished changes and revert the draft to the live configuration, make a POST request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/draft/reset. No request body is required. A successful response returns 204 No Content.

Deactivate a score

To turn a score off, while preserving the score configuration, make a POST request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/deactivate. No request body is required. The response returns the score metadata reflecting its new inactive state.
The deactivated score returns to a draft which you can update or publish. The score’s groupConfigs are retained.

Clone a score

To duplicate an existing score configuration into a new score, make a POST request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}/clone. In the request body, include the scoreName. This is the name for the new cloned score. If the source score has an active draft, the clone is created from the draft configuration. If no draft exists, the published configuration is cloned.
A successful response returns 201 with the scoreStatus as "draft".

Delete a score

To delete a score, make a DELETE request to /marketing/lead-scoring/2026-09-beta/scores/{scoreId}. No request body is required. A successful response returns 204 No Content.

Read record score values

You can retrieve record score values via the objects API. In your request, retrieve each score’s outputProperty. For example, to retrieve contacts’ value for the New Lead Score, with the output property hubspot_lead_score:
  • To retrieve an individual contact with their score value, make a GET request to /crm/objects/2026-03/contacts/{recordId}?properties=hubspot_lead_score.
  • To retrieve all contacts with their score values, make a GET request to /crm/objects/2026-03/contacts?properties=hubspot_lead_score.
  • To retrieve multiple specific contacts with their score values, make a POST request to /crm/objects/2026-03/contacts/batch/read. In your request body, include the score property in the properties array, and the id values of records to retrieve as inputs. For example:
To search for records with specific score values, use the search API and filter by specific values for the outputProperty. For example, to search for contacts with a New Lead Score (outputProperty:hubspot_lead_score) value over 50, make a POST request to /crm/objects/2026-03/contacts/search and use the following request body:
Last modified on August 5, 2026