Skip to main content
GET
/
crm
/
v3
/
limits
/
associations
/
records
/
{fromObjectTypeId}
/
{toObjectTypeId}
Read record association limits between two objects
curl --request GET \
  --url https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/crm/v3/limits/associations/records/{fromObjectTypeId}/{toObjectTypeId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "atLimitFromRecordSamples": [
    {
      "label": "<string>",
      "objectId": 123
    }
  ],
  "limit": 123,
  "nearLimitFromRecordSamples": [
    {
      "label": "<string>",
      "objectId": 123,
      "percentage": 123,
      "usage": 123
    }
  ],
  "totalRecordsAtLimit": 123,
  "totalRecordsNearLimit": 123
}
{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}

Supported products

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

fromObjectTypeId
string
required
toObjectTypeId
string
required

Response

successful operation

atLimitFromRecordSamples
object[]
required
limit
integer<int64>
required

The maximum number of associations allowed for records.

nearLimitFromRecordSamples
object[]
required
totalRecordsAtLimit
integer<int32>
required

The total number of records that have reached their association limit.

totalRecordsNearLimit
integer<int32>
required

The total number of records that are approaching their association limit.

Last modified on May 18, 2026