Live training: next batches coming soon. Join the waitlist:Waitlists open:Developer Training →Developer →Copilot Studio Training →Copilot Studio →

An Entry Without a Type Name Was Found: Fix It in Power Automate and SharePoint REST API

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:

Code view of Send an HTTP request to SharePoint with verbose headers and a 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."
}
Compose output in a flow run showing the entry without a type name error text

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"
}
Send an HTTP request to SharePoint body with the SP.Data list item type in metadata

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"
}
Send an HTTP request to SharePoint with nometadata Accept and Content-Type headers

Both fixed actions added their tickets to the list:

SPGDemo Support Tickets list showing the two tickets created by the fixed flow actions

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 reproducedFix
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 modelWrong type, such as a guessed name with spacesUse ListItemEntityTypeFullName
The property ‘__metadata’ does not exist on type ‘…’__metadata sent with plain application/jsonUse 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.

1 thought on “An Entry Without a Type Name Was Found: Fix It in Power Automate and SharePoint REST API”

Leave a Comment