Your Send an HTTP request to SharePoint action, or a fetch call in a script, comes back with a 400 Bad Request. The cause is almost always one header and one missing line.
In this tutorial, we’ll reproduce an entry without a type name was found in a real flow, then fix it two ways: with the right __metadata type, or with nometadata headers. We’ll also cover JavaScript, lists and folders.
Quick answer: SharePoint throws this error when the request uses Content-Type: application/json;odata=verbose but the body has no __metadata type. Add "__metadata": { "type": "SP.Data.<List>ListItem" } using the list’s ListItemEntityTypeFullName, or switch both headers to application/json;odata=nometadata and drop __metadata.
What You Need Before You Start
We tested on our SPGuides site with a list named SPGDemo Support Tickets. New to REST in flows? Start with REST API calls in Power Automate.
- Edit permission on the list you’re writing to
- Power Automate (SharePoint connector) or an SPFx web part
Step 1: Reproduce the Error in Power Automate
Our demo flow has a Send an HTTP request to SharePoint action that creates a ticket. The headers ask for verbose OData, but the body only has the Title:
Method: POST
Uri: _api/web/lists/getbytitle('SPGDemo Support Tickets')/items
Headers: {
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose"
}
Body: {
"Title": "Monitor flickering in Room 214"
}
The action’s Code view shows the verbose Content-Type and the body without __metadata:

The action fails with BadRequest. A Compose action that runs after the failure shows the full message:
{
"status": 400,
"message": "An entry without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified."
}

Step 2: Add the Correct __metadata Type
Don’t guess the item type: spaces become _x0020_. Ask SharePoint for it:
GET https://spguides.sharepoint.com/sites/SPGuides/_api/web/lists/getbytitle('SPGDemo Support Tickets')?$select=ListItemEntityTypeFullName
Accept: application/json;odata=nometadata
{"ListItemEntityTypeFullName":"SP.Data.SPGDemo_x0020_Support_x0020_TicketsListItem"}
Put that value in the body and keep the verbose headers:
{
"__metadata": { "type": "SP.Data.SPGDemo_x0020_Support_x0020_TicketsListItem" },
"Title": "Monitor flickering in Room 214"
}

The action now returns 201 Created. A wrong type gives the “could not be resolved by the model” error instead.
Step 3: Or Switch to nometadata Headers
The simpler fix: with nometadata on both headers, SharePoint doesn’t need a type, and the response is smaller too:
Headers: {
"Accept": "application/json;odata=nometadata",
"Content-Type": "application/json;odata=nometadata"
}
Body: {
"Title": "Badge reader down at the main entrance"
}

Both fixed actions added their tickets to the list:

Updates (MERGE) follow the same rule. Our SharePoint REST API CRUD operations guide shows every verb.
Fix the Error in SharePoint REST API JavaScript Calls
Old jQuery snippets built the type as "SP.Data." + listTitle + "ListItem", which breaks for titles with spaces, and inline page scripts are blocked since SharePoint enforced its Content Security Policy in March 2026. In SPFx or a script file, this works:
const site = "https://spguides.sharepoint.com/sites/SPGuides";
const list = "SPGDemo Support Tickets";
async function addTicket(title) {
const ctx = await fetch(`${site}/_api/contextinfo`, {
method: "POST", headers: { Accept: "application/json;odata=nometadata" }
}).then(r => r.json());
const res = await fetch(`${site}/_api/web/lists/getbytitle('${list}')/items`, {
method: "POST",
headers: {
"Accept": "application/json;odata=nometadata",
"Content-Type": "application/json;odata=nometadata",
"X-RequestDigest": ctx.FormDigestValue
},
body: JSON.stringify({ Title: title })
});
return res.status; // 201
}
The digest call matters too; without it you’ll hit the security validation for this page is invalid instead.
Creating lists and folders
A list body wrapped in a parameters object fails too; that wrapper is only for method calls such as webinfos/add:
// POST _api/web/lists - the entity goes in directly, no "parameters" wrapper
{ "__metadata": { "type": "SP.List" }, "BaseTemplate": 100, "Title": "SPGDemo Support Tickets" }
For folders, posting to /items with ContentTypeId 0x0120 works, but our test folder was named “4_.000”. AddValidateUpdateItemUsingPath with UnderlyingObjectType 1 names it properly. For libraries, see how to create a folder in SharePoint.
POST .../_api/web/lists/getbytitle('SPGDemo Support Tickets')/AddValidateUpdateItemUsingPath
{
"listItemCreateInfo": {
"FolderPath": { "DecodedUrl": "/sites/SPGuides/Lists/SPGDemo Support Tickets" },
"UnderlyingObjectType": 1,
"LeafName": { "DecodedUrl": "Q1 2026" }
},
"formValues": [ { "FieldName": "Title", "FieldValue": "Q1 2026" } ],
"bNewDocumentUpdate": false
}
Type Name Errors Cheat Sheet
| Message (400) | Cause we reproduced | Fix |
|---|---|---|
| An entry without a type name was found… | odata=verbose Content-Type, no __metadata (or body wrapped in parameters) | Add __metadata type, or use nometadata |
| A type named ‘…’ could not be resolved by the model | Wrong type, such as a guessed name with spaces | Use ListItemEntityTypeFullName |
| The property ‘__metadata’ does not exist on type ‘…’ | __metadata sent with plain application/json | Use odata=verbose, or remove __metadata |
Common Mistakes to Avoid
- Mixing styles: verbose headers with a nometadata body, or the reverse.
- Building the type from the display title instead of reading ListItemEntityTypeFullName.
Does This Error Happen in SPFx or PnPjs?
Rarely. SPHttpClient and PnPjs don’t send verbose OData by default, so plain JSON bodies work. Our SPFx CRUD operations tutorial shows the pattern.
Next Steps
Once your writes work, we’d read how to get SharePoint list items with REST API next, then browse our Power Automate tutorials for more flow patterns.
We also put together these guides for other REST calls from flows:
Frequently Asked Questions
What does “an entry without a type name was found” mean in SharePoint?
SharePoint read your body as verbose OData and found no __metadata type, so it couldn’t tell which entity you meant.
How do I find the __metadata type for a SharePoint list?
Call GET _api/web/lists/getbytitle(‘Your List’)?$select=ListItemEntityTypeFullName. It returns a value like SP.Data.SPGDemo_x0020_Support_x0020_TicketsListItem.
Can I remove __metadata from my REST body?
Yes, if you set both Accept and Content-Type to application/json;odata=nometadata. It returned 201 Created in our test.
Where does Microsoft document the list item type?
Microsoft explains ListItemEntityTypeFullName and the create and update bodies in Working with lists and list items with REST.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.
No, this did not work for me