Hi @getsplash,
Seems like you’ve done thorough checks with term GUIDs and WssIds, and the common formatting issues have been addressed, yet the error persists. This is a known complex challenge with updating Enterprise Keywords via Power Automate HTTP requests because SharePoint expects very precise formatting and context.
However, let's revisit your questions and try find a solution:
Question: Can you update Enterprise Keywords via Power Automate HTTP action?
Ans: Yes, but it’s tricky and requires precise formatting and the right endpoint.
Question: Which endpoint to use? :
Ans: The recommended endpoint is (let's use a POST request to this endpoint), we need to use ValidateUpdateListItem with following apiL
_api/web/lists/GetByTitle('YourLibraryName')/items(ItemID)/ValidateUpdateListItem
Question: What exact body format works?
Ans: Use the internal field name TaxKeyword (singular), not TaxKeywords. Format the FieldValue as a concatenated string of terms, each with the format:
-1;#Label|TermGUID;
Note: For multiple terms, concatenate without spaces:
-1;#Label1|GUID1;-1;#Label2|GUID2;
Here is an example JSON body for one term:
{
"formValues": [
{
"FieldName": "TaxKeyword",
"FieldValue": "-1;#KeywordLabel|term-guid;"
}
],
"bNewDocumentUpdate": true
}
Question: Is there a Pre-conditions (e.g. term must exist somewhere first) that makes it work?
Ans: The term(s) must exist in the Term Store. The term GUIDs must be exact and valid. The item must not be checked out or locked. You must have sufficient permissions. The Enterprise Keywords column must be enabled on the library.
Question: Is it genuinely not possible via REST?
- It is possible via REST using
ValidateUpdateListItem with the correct payload.
- Simple PATCH or MERGE requests to update the field directly usually do not work.
- The
ValidateUpdateListItem method is the supported workaround.
I beilieve you questions are answered.
Now what you have shared - let's investigate:
The payload you shared has couple of issues that likely cause the update to silently fail:
{ "formValues": [{ "FieldName": "TaxKeywords", "FieldValue": "2;#KeywordLabel|term-guid" }], "bNewDocumentUpdate": true }
- The internal field name for Enterprise Keywords is usually
TaxKeyword (singular), not TaxKeywords. Using the wrong field name results in no update.
- The
FieldValue format for taxonomy fields requires the WssId prefix, which for new terms should be -1, not 2. So it should start with -1;# instead of 2;#.
- The string must end with a semicolon
;.
Also make sure headers incldue:
Accept: application/json;odata=verbose
Content-Type: application/json;odata=verbose