Hi everyone,
I’m trying to find the correct way to clear a HubSpot owner from a CRM record via API.
In the HubSpot UI, we can select “No owner” and remove the owner successfully. However, I can’t find an equivalent option through the CRM API.
The owner property requires a valid HubSpot owner ID, so sending null, 0, or an empty/non-existing owner ID doesn’t seem to work.
Has anyone successfully cleared hubspot_owner_id (or another HubSpot owner property) via API?
If there is a specific endpoint, request body, or API format for setting the owner to “No owner”, I’d really appreciate an example.
Thanks!
Hey @baohuynh,
Welcome to the Community! 
Great question! From my understanding, typically you would want to reference an empty string, but I will be tagging in some folks from the community to see if they can confirm. In the meantime, here are a couple community threads that may be able to point you in the right direction!
- Searching for null values
- Cannot create Note with null OwnerId
Hey @Alex_Boissonneault, @danielsinewe, @GRajput – do you have any suggestions for @baohuynh on this?
Thank you!
Sam, Community Manager
Hey @stassey, thanks for the tag!
@baohuynh as @stassey suggested, he is on the right track, the empty string is the answer, not null or 0.
To clear the owner, just PATCH the record and set the property to "":
PATCH /crm/v3/objects/contacts/{contactId}
Content-Type: application/json
{
"properties": {
"hubspot_owner_id": ""
}
}
That’s the API equivalent of picking “No owner” in the UI. The gotcha you hit is that null gets rejected and 0 / a fake ID fails validation. HubSpot treats an empty string as the explicit “unset this property” signal.
Same pattern works across objects, swap contacts for companies, deals, tickets, etc. and for engagements/notes it’s the same idea: send hubspot_owner_id: "" rather than omitting it or passing null.
Give that a try and let me know if it sticks!
Thanks, Alex! I just tested this, but unfortunately hubspot_owner_id: "" doesn’t work in my case either.
I’m using the current 2026-03 CRM API. The API returns the following validation error:
{
"status": "error",
"message": "Property values were not valid: [{\"isValid\":false,\"message\":\"\\\"\\\" was not a valid integer (for owner ID).\",\"error\":\"INVALID_INTEGER\",\"name\":\"hubspot_owner_id\",\"localizedErrorMessage\":\"\\\"\\\" was not a valid integer (for owner ID).\",\"portalId\":147584912},{\"isValid\":false,\"message\":\"\\\"\\\" was not a valid integer (for owner ID).\",\"error\":\"INVALID_INTEGER\",\"name\":\"hubspot_owner_id_ch\",\"localizedErrorMessage\":\"\\\"\\\" was not a valid integer (for owner ID).\",\"portalId\":147584912}]",
"correlationId": "01a03177-88f8-7d5d-8f26-9e9b92aca755",
"errors": [
{
"message": "\"\" was not a valid integer (for owner ID).",
"code": "INVALID_INTEGER",
"context": {
"propertyName": [
"hubspot_owner_id"
]
}
},
{
"message": "\"\" was not a valid integer (for owner ID).",
"code": "INVALID_INTEGER",
"context": {
"propertyName": [
"hubspot_owner_id_ch"
]
}
}
],
"category": "VALIDATION_ERROR"
}
So it looks like the current API is validating both owner properties as integers and rejecting the empty string.
Is there another API format or approach to explicitly clear the owner and set it to “No owner”?
you just need to pass an empty string to the ‘hubspot_owner_id’ property. For example:
Payload:
{
“properties”: {
“hubspot_owner_id”: “”
}
}
This will clear the owner from the CRM record and set it to “No owner.”
Hey @baohuynh, your error actually gives it away.. look at the response again.
It’s validating two properties: hubspot_owner_id and hubspot_owner_id_ch. HubSpot only validates what’s in the payload, and hubspot_owner_id_ch isn’t a HubSpot property, it’s a custom one in your portal, probably created by an integration. So something between your code and HubSpot (SDK, middleware, field mapping) is injecting that property and messing with your payload.
"" is still the correct way to clear owner on 2026-03, that hasn’t changed.
Try this: send the raw request yourself via Postman/curl with only {"properties": {"hubspot_owner_id": ""}} nothing else. If it does work, the fix is in your integration layer: exclude hubspot_owner_id_ch from the mapping.
Also run GET /crm/v3/properties/contacts/hubspot_owner_id_ch, if it’s a number type property, that’s exactly where your INVALID_INTEGER is coming from.
Hope it helps!
Thanks Alex — you were right. I found the actual cause.
The issue was how I entered the value in the HubSpot API Docs/Explorer. I entered "", which the generated request escaped as:
"hubspot_owner_id_ch": "\"\""
So HubSpot was receiving quotation marks as the actual string value, which explains the INVALID_INTEGER error.
When I tested the request directly from the terminal with an actual empty string:
"hubspot_owner_id_ch": ""
it worked successfully and cleared the owner field.
Thanks again for pointing me in the right direction!
Interesting API behavior compared with the HubSpot UI. The “No owner” state can be tricky when working directly with CRM properties. I’d also be interested to see the recommended API approach, especially for keeping owner assignment logic clean in automated RevOps workflows.