curl --request POST \
--url https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"from": {
"id": "<string>"
},
"to": {
"id": "<string>"
}
}
]
}
'import requests
url = "https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default"
payload = { "inputs": [
{
"from": { "id": "<string>" },
"to": { "id": "<string>" }
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: [{from: {id: '<string>'}, to: {id: '<string>'}}]})
};
fetch('https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default', 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/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'inputs' => [
[
'from' => [
'id' => '<string>'
],
'to' => [
'id' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"associationSpec": {
"associationTypeId": 123
},
"from": {
"id": "<string>"
},
"to": {
"id": "<string>"
}
}
],
"startedAt": "2023-11-07T05:31:56Z",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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"
}
}Associate records (default)
Créer le type d’association par défaut (le plus générique) entre deux types d’objets
curl --request POST \
--url https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"from": {
"id": "<string>"
},
"to": {
"id": "<string>"
}
}
]
}
'import requests
url = "https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default"
payload = { "inputs": [
{
"from": { "id": "<string>" },
"to": { "id": "<string>" }
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: [{from: {id: '<string>'}, to: {id: '<string>'}}]})
};
fetch('https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default', 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/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'inputs' => [
[
'from' => [
'id' => '<string>'
],
'to' => [
'id' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": [\n {\n \"from\": {\n \"id\": \"<string>\"\n },\n \"to\": {\n \"id\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"associationSpec": {
"associationTypeId": 123
},
"from": {
"id": "<string>"
},
"to": {
"id": "<string>"
}
}
],
"startedAt": "2023-11-07T05:31:56Z",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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
Supported products
Required Scopes
Required Scopes
Autorisations
The access token received from the authorization server in the OAuth 2.0 flow.
Corps
Show child attributes
Show child attributes
Réponse
successful operation
La réponse renvoyée après l'exécution d'une opération de lot sur des associations.
L'horodatage de la fin du processus de traitement par lots, au format ISO 8601.
Show child attributes
Show child attributes
L'horodatage du début de l'exécution du processus de traitement par lots, au format ISO 8601.
Statut de la demande de traitement par lots : « EN ATTENTE », « TRAITEMENT », « ANNULÉ » ou « TERMINÉ ».
CANCELED, COMPLETE, PENDING, PROCESSING Show child attributes
Show child attributes
Un objet contenant des liens pertinents relatifs à la demande de lot.
Show child attributes
Show child attributes
Le nombre d'erreurs rencontrées lors du traitement par lot.
L'horodatage du lancement du processus de traitement par lots, au format ISO 8601.