Skip to content
EnjoySharePoint
EnjoySharePoint
  • Home
  • Start Here
  • Blogs
    • SharePoint Tutorials
    • Power Apps Tutorials
    • Power Automate Tutorials
    • Power BI Tutorials
  • Downloads
  • Live Training

How to Fix “The property ‘__metadata’ does not exist on type ‘SP.List'” in Power Automate

Updated on October 23, 2026 by Bijay Kumar

The error “The property ‘__metadata’ does not exist on type ‘SP.List'” means your request body uses the verbose OData format, but the Content-Type header doesn’t say so. Change the header to application/json;odata=verbose, or remove __metadata and send both headers as odata=nometadata.

You’ll usually see it when you create a SharePoint list with the Send an HTTP request to SharePoint action in Power Automate. I reproduced it in a test flow that creates a Contoso Projects list, so below you’ll see the exact failing request, the error, and both fixes.

Quick answer: Set the headers to Accept: application/json;odata=verbose and Content-Type: application/json;odata=verbose, and keep "__metadata": { "type": "SP.List" } in the body. Or use odata=nometadata in both headers and delete the __metadata line.

Table of Contents:

Toggle
  • Why this error happens
  • The request that fails
  • Fix 1: Send the Content-Type as odata=verbose
  • Fix 2: Use nometadata and drop __metadata
  • The same error on other SharePoint types
  • BaseTemplate values for new lists
  • Still getting the error?
  • Frequently Asked Questions
    • What does ‘__metadata’ does not exist on type ‘SP.List’ mean?
    • Which Content-Type should I use with __metadata?
    • Can I create a SharePoint list without __metadata?
    • Do I need X-RequestDigest in Power Automate?
    • What BaseTemplate creates a custom list?

Why this error happens

SharePoint’s REST API understands two JSON formats. The verbose format wraps type information in a __metadata object. The lighter format, called JSON light, doesn’t use __metadata at all.

The Content-Type header tells SharePoint which format your body uses. With plain application/json, SharePoint reads the body as JSON light. It then treats __metadata as a normal property of the list, can’t find it on SP.List, and rejects the request. If REST calls are new to you, start with this SharePoint REST API tutorial.

Interestingly, Microsoft’s own “create a list” REST sample sends a __metadata body with a plain application/json Content-Type. Copy it as is, and you’ll hit this error.

The request that fails

Here’s the action from my test flow. Method is POST, Uri is _api/web/lists, the Accept header is verbose, but Content-Type is only application/json:

Power Automate Send an HTTP request to SharePoint with POST _api/web/lists, Content-Type application/json and a __metadata SP.List body

The run fails with a BadRequest status and the full message:

Power Automate flow run failed with the error The property '__metadata' does not exist on type 'SP.List' and a BadRequest status

Fix 1: Send the Content-Type as odata=verbose

Keep the body and change only the header. In the new designer, open Advanced parameters, show Headers, and use these values:

{
  "Accept": "application/json;odata=verbose",
  "Content-Type": "application/json;odata=verbose"
}

The body stays the same:

{
  "__metadata": { "type": "SP.List" },
  "BaseTemplate": 100,
  "Title": "Contoso Projects",
  "Description": "Project tracker for the Contoso team"
}
Power Automate HTTP request headers with Accept and Content-Type both set to application/json;odata=verbose

Run the flow again. This time the action returns statusCode 201 (Created), and the list appears in Site contents. The same header rule applies to the other calls in SharePoint REST API CRUD operations.

Power Automate run results for the SharePoint HTTP request showing statusCode 201 after the list was created

With the verbose format, the new list’s ID is in body('Send_an_HTTP_request_to_SharePoint')?['d']?['Id'].

Fix 2: Use nometadata and drop __metadata

I prefer this one for new flows. With odata=nometadata, you don’t send any type information, and the response is much shorter:

{
  "Accept": "application/json;odata=nometadata",
  "Content-Type": "application/json;odata=nometadata"
}
{
  "BaseTemplate": 100,
  "Title": "Contoso Projects",
  "Description": "Project tracker for the Contoso team"
}

The response no longer has the d wrapper, so read the ID with body('Send_an_HTTP_request_to_SharePoint')?['Id']. To pick values out of a bigger response, see how to parse a JSON object in Power Automate.

Don’t mix the two formats. Verbose headers with a nometadata body, or the other way around, cause this error or a similar one.

The same error on other SharePoint types

The message changes with the object you’re creating, but the cause and the fix are the same:

You’re creatingUri__metadata type
A list_api/web/listsSP.List
A column_api/web/lists/getbytitle('Contoso Projects')/fieldsSP.Field
A SharePoint group_api/web/sitegroupsSP.Group
A list item_api/web/lists/getbytitle('Contoso Projects')/itemsSP.Data.Contoso_x0020_ProjectsListItem

For list items, the type must match the list’s ListItemEntityTypeFullName, which you can read with _api/web/lists/getbytitle('Contoso Projects')?$select=ListItemEntityTypeFullName. If the type is missing completely, you’ll get a different message, covered in an entry without a type name was found.

BaseTemplate values for new lists

BaseTemplate decides what kind of list you get. The common values are 100 for a custom list, 101 for a document library, 106 for an events list and 107 for a tasks list. If you’d rather avoid REST, you can also create SharePoint lists from JSON with standard actions.

Still getting the error?

  • Check both headers. Accept and Content-Type should use the same odata setting.
  • Look for typos in the header value. It’s application/json;odata=verbose with no space and no trailing semicolon.
  • Check the __metadata type. It must match the object in the Uri, such as SP.List for _api/web/lists.
  • Don’t add authentication headers. The SharePoint connector signs the request for you; you don’t need X-RequestDigest or Authorization.
  • Check permissions. Creating lists needs at least Manage Lists on the site. Without it, you get an access denied error instead.

More SharePoint REST tutorials that use the same requests:

  • Power Automate error: Cannot find the resource for the request addroleassignhments
  • How to Get SharePoint List Items using REST API?
  • How to Create a Folder in SharePoint using REST API?
  • microsoft.sharepoint.client.invalidclientqueryexception in SharePoint REST API

Frequently Asked Questions

What does ‘__metadata’ does not exist on type ‘SP.List’ mean?

SharePoint read your body as JSON light because the Content-Type header lacks odata=verbose, so it treated __metadata as an unknown list property. Microsoft documents the list REST calls in working with lists and list items with REST.

Which Content-Type should I use with __metadata?

application/json;odata=verbose. Use the same value in the Accept header.

Can I create a SharePoint list without __metadata?

Yes. Send Accept and Content-Type as application/json;odata=nometadata and leave __metadata out of the body.

Do I need X-RequestDigest in Power Automate?

No. The Send an HTTP request to SharePoint action handles authentication, so you only need the Accept and Content-Type headers.

What BaseTemplate creates a custom list?

100 creates a custom list and 101 creates a document library.

SharePoint and Power Platform Expert
Bijay Kumar

I have worked with Microsoft technologies for more than 18 years, including SharePoint, Microsoft 365 and the Power Platform (Power Apps, Power Automate and Power BI), at companies like HP, TCS and KPIT. I started EnjoySharePoint in 2011 to share the solutions I build in real projects with readers in the United States, Canada, the United Kingdom, Australia, New Zealand and beyond. Microsoft has recognized this work with the Microsoft MVP award 13 times since 2014.

How to Convert Base64 to an Image File in Power Automate
How to find text in a string using Power Automate?
Free videos Subscribe to Our YouTube Channel Watch SharePoint, Power Apps and Power Automate tutorials step by step with Bijay Kumar, Microsoft MVP. 20K+ subscribers430+ videos Subscribe on YouTube
  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Use
© 2026 EnjoySharePoint.com

Get the FREE Power Automate Expressions Ebook

122 copy-paste formulas with real examples, sent straight to your inbox.

No spam. Unsubscribe anytime.

Check your inbox

Your free Power Automate Expressions Cheat Sheet is on its way. Can't find it in a few minutes? Look in your Promotions or Spam folder.

Sent to