If you are one of the unlucky ones in need of working with Insightly API, you have probably noticed there’s no way to create a TAG under Contact endpoint.
If you follow the documentation, you probably do a CURL request similar to this:
$username = 'xxxxx'; // api key
$ch = curl_init('https://api.insightly.com/v3.0/Contacts/');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic '. base64_encode($username)
]);
$dataString = json_encode(array(
'FIRST_NAME' => 'First',
'LAST_NAME' => 'Last',
'EMAIL_ADDRESS' => 'test@test.sk',
"TAGS" => array(
array("TAG_NAME" => "TEST")
)
));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch , CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_TIMEOUT, 30);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch );
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($return, 0, $header_size);
$body = substr($return, $header_size);
And all you get in return is 400 Bad Request!
Even if you try to update existing Contact using https://api.insightly.com/v3.0/Contacts/{ID}/Tags endoing you won’t have any more luck.
The solution is simple – go back to 2.3 endpoints – the exact same post data works on 2.3!
Insightly has done a really poor job on their API ..
Bottom line – change https://api.insightly.com/v3.0/Contacts/ to https://api.insight.ly/v2.3/Contacts/