SharePoint REST API Cheat Sheet: 50 Endpoints đź“‹
Last reviewed: October 17, 2026
Send an HTTP request to SharePoint is the most powerful action in the standard SharePoint connector: whatever the regular actions can’t do, the SharePoint REST API usually can. This page collects 50 endpoints you actually need in flows, grouped by topic, each with method, Uri, headers, body, what it is for and the pitfall that costs the most time.
TL;DR: Set Site Address to the site and write the Uri relative to it, starting with
_api/. SendAccept: application/json;odata=nometadataon every call andContent-Type: application/json;odata=nometadatawhenever there is a JSON body, then the body contains only the fields with their internal names. Updates and deletes are aPOSTwithX-HTTP-Method: MERGEorDELETEplusIF-MATCH: *. Every endpoint below is taken from Microsoft Learn’s SharePoint REST documentation.
Header standards
Use these headers unless an endpoint says otherwise:
🔸
Accept: application/json;odata=nometadataon every request. Smaller responses, nod/resultswrapper, results sit invalue.🔸
Content-Type: application/json;odata=nometadatawhen you send a JSON body. The body then holds only fields and values. Withodata=verboseinstead, the body must carry"__metadata": { "type": "..." }.🔸
X-HTTP-Method: MERGE(update),DELETE(delete) orPUT(replace file content) on aPOST.🔸
IF-MATCH: *on updates and deletes. With an eTag instead of*, SharePoint answers412if the item changed in the meantime.🔸 No
Authorizationand noX-RequestDigestheader: the action signs the request with its SharePoint connection.
In the examples, the site is /sites/Team, the list is Projects and the library URL is Shared Documents. “Standard headers” means the headers from the box above. Placeholders in braces like {list-guid} are values you insert.
Jump to: Lists and items · Fields and views · Files and folders · Permissions and groups · Users · Site and web · Search and batch · Webhooks · Regional settings · FAQ
Lists and items
1. Read items with $select, $filter, $orderby and $top
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/items?$select=ID,Title,Status&$filter=Status eq 'Open'&$orderby=Modified desc&$top=500
Use: read exactly the rows and columns you need, filtered on the server instead of in a Filter array.
Pitfall: $filter needs internal names (Due_x0020_Date, not Due Date). On lists above 5,000 items the filter and sort columns must be indexed, otherwise the list view threshold blocks the query. An apostrophe inside a value is doubled: 'O''Brien'.
2. Read lookup and person values with $expand
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/items?$select=Title,Author/Title,Customer/Title&$expand=Author,Customer
Use: get the display values of lookup and person columns instead of only their IDs.
Pitfall: the column must appear in both $select (with the sub-field) and $expand. Multi-value lookup and person columns can’t be used in $filter at all, Microsoft documents that there is no “includes” operator.
3. Page through large lists
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/items?$select=ID,Title&$top=1000&$skiptoken=Paged=TRUE%26p_ID=1000
Use: read more than the default of 100 items, page by page.
Pitfall: $skip does not work for list items. Take the next page from odata.nextLink in the response, or build $skiptoken with the last ID you received. The & inside the skiptoken must stay encoded as %26.
4. Count items in a list
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/ItemCount
Use: the total number of items in one call, the result is in value.
Pitfall: ItemCount has no filter. For “how many are Open”, read the matching items with $select=ID (entry 1) and use length() on value.
5. Get the ListItemEntityTypeFullName
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')?$select=ListItemEntityTypeFullName
Use: the __metadata.type value for create and update bodies sent with odata=verbose.
Pitfall: the value comes from the list’s URL name, not its current title, and spaces turn into _x0020_ (SP.Data.Team_x0020_tasksListItem). Read it, don’t guess it. With nometadata headers you don’t need it at all.
6. Create an item
POST · Standard headers incl. Content-Type
1
_api/web/lists/getbytitle('Projects')/items
1
{ "Title": "Website relaunch", "Status": "Open", "CustomerId": 7 }
Use: create an item with fields the Create item action doesn’t handle well, or as part of a batch.
Pitfall: lookup and person columns are written as <InternalName>Id with the ID of the target item or user (CustomerId, AssignedToId). The person ID comes from ensureuser (entry 40).
7. Update an item (MERGE)
POST · Standard headers incl. Content-Type, plus IF-MATCH: * and X-HTTP-Method: MERGE
1
_api/web/lists/getbytitle('Projects')/items(12)
1
{ "Status": "Closed" }
Use: change only the fields in the body, everything else stays as it is.
Pitfall: without X-HTTP-Method: MERGE the POST is not an update. With an eTag in IF-MATCH instead of *, a concurrent change ends in 412 Precondition Failed, which is exactly what you want for optimistic locking.
8. Delete an item
POST · Standard headers, plus IF-MATCH: * and X-HTTP-Method: DELETE · No body
1
_api/web/lists/getbytitle('Projects')/items(12)
Use: remove an item from a flow, for example in a cleanup run.
Pitfall: if users should be able to restore the item from the recycle bin, use recycle (entry 9) instead.
9. Move an item to the recycle bin
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/items(12)/recycle
Use: delete with an undo option. The response contains the GUID of the recycle bin entry.
Pitfall: there is no X-HTTP-Method here, recycle is a method call on the item. The same /recycle works on a file (GetFileByServerRelativeUrl('...')/recycle) and on a whole list.
10. Query items with CAML (GetItems)
POST · Accept: application/json;odata=nometadata, Content-Type: application/json;odata=verbose
1
_api/web/lists/getbytitle('Projects')/GetItems
1
{ "query": { "__metadata": { "type": "SP.CamlQuery" }, "ViewXml": "<View><Query><Where><Eq><FieldRef Name='Status'/><Value Type='Choice'>Open</Value></Eq></Where></Query><RowLimit>500</RowLimit></View>" } }
Use: queries OData can’t express, for example CAML-specific operators or a query you copied from a view.
Pitfall: use single quotes inside the CAML, double quotes would end the JSON string. FieldRef Name is the internal name.
11. Update with form validation (ValidateUpdateListItem)
POST · Standard headers incl. Content-Type
1
_api/web/lists/getbytitle('Projects')/items(12)/ValidateUpdateListItem
1
{ "formValues": [ { "FieldName": "Status", "FieldValue": "Closed" }, { "FieldName": "DueDate", "FieldValue": "31.12.2026" } ], "bNewDocumentUpdate": false }
Use: set fields with plain text values, validated like the edit form.
Pitfall: values are strings in the site’s regional format, a de-CH site expects 31.12.2026, not 2026-12-31 (check it with entry 50). The call answers 200 even when a field fails, so check every entry in value for HasException: true.
12. Create an item inside a folder (AddValidateUpdateItemUsingPath)
POST · Standard headers incl. Content-Type
1
_api/web/lists/getbytitle('Projects')/AddValidateUpdateItemUsingPath
1
{ "listItemCreateInfo": { "FolderPath": { "DecodedUrl": "https://contoso.sharepoint.com/sites/Team/Lists/Projects/Europe" }, "UnderlyingObjectType": 0 }, "formValues": [ { "FieldName": "Title", "FieldValue": "Website relaunch" } ], "bNewDocumentUpdate": false }
Use: create a list item directly in a folder, which the Create item action can’t do.
Pitfall: DecodedUrl is the absolute folder URL. If one form value fails validation, no item is created and the response shows HasException: true for that field. UnderlyingObjectType: 1 plus "LeafName": { "DecodedUrl": "Europe" } creates a folder instead.
13. Read rendered list data (RenderListDataAsStream)
POST · Standard headers incl. Content-Type
1
_api/web/GetList(@listUrl)/RenderListDataAsStream?@listUrl=%27%2Fsites%2FTeam%2FLists%2FProjects%27
1
{ "parameters": { "RenderOptions": 2, "DatesInUtc": true, "ViewXml": "<View><ViewFields><FieldRef Name='Title'/><FieldRef Name='Category'/></ViewFields><RowLimit>500</RowLimit></View>" } }
Use: read complex columns such as managed metadata and lookups the way the list view shows them.
Pitfall: @listUrl is the server-relative list URL in quotes, URL-encoded as in the example. The rows are in Row, not in value.
14. Get a list by URL instead of title
GET · Standard headers · No body
1
_api/web/GetList('/sites/Team/Lists/Projects')?$select=Id,Title,ItemCount
Use: a stable reference to a list, because the URL doesn’t change when someone renames the list title.
Pitfall: the parameter is the server-relative URL including /sites/Team. For libraries it’s the library URL (/sites/Team/Shared Documents), which often differs from the display name “Documents”.
Fields and views
15. List the columns of a list
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/fields?$select=Title,InternalName,TypeAsString&$filter=Hidden eq false and ReadOnlyField eq false
Use: find the internal name of every column before you write $select, $filter or a body.
Pitfall: display name and internal name drift apart. A renamed column keeps its original internal name, special characters are encoded (_x0020_ for a space).
16. Read one column (getbyinternalnameortitle)
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/fields/getbyinternalnameortitle('Status')?$select=Title,InternalName,Choices
Use: read the choices of a choice column, for example to build a dropdown in an adaptive card.
Pitfall: the name is case-sensitive, status doesn’t find Status.
17. Create a column from XML (createfieldasxml)
POST · Accept: application/json;odata=nometadata, Content-Type: application/json;odata=verbose
1
_api/web/lists/getbytitle('Projects')/fields/createfieldasxml
1
{ "parameters": { "__metadata": { "type": "SP.XmlSchemaFieldCreationInformation" }, "SchemaXml": "<Field Type='Text' Name='CustomerRef' StaticName='CustomerRef' DisplayName='Customer Ref' />", "Options": 8 } }
Use: create any column type with all settings, or copy columns 1:1 from another list.
Pitfall: a SchemaXml read from another list is full of double quotes. Build the body as an object in a Compose and pass that to Body, typing it into Body as text breaks the JSON. Options: 8 keeps the internal name from Name.
18. List the views of a list
GET · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/views?$select=Id,Title,DefaultView,ServerRelativeUrl
Use: get the view ID for the next call, or check which view is the default.
Pitfall: view titles are language-dependent (“All Items” vs “Alle Elemente”). Address views by Id in flows that run on sites in different languages.
19. Add a column to a view
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Projects')/views('{view-id}')/viewfields/addviewfield('Status')
Use: show a column you created by flow in an existing view.
Pitfall: the field name is case-sensitive. The counterpart is removeviewfield('Status').
Files and folders
20. List the files in a folder
GET · Standard headers · No body
1
_api/web/GetFolderByServerRelativeUrl('/sites/Team/Shared Documents/Reports')/Files?$select=Name,ServerRelativeUrl,TimeLastModified
Use: the files of exactly one folder without walking the whole library.
Pitfall: returns files only, subfolders come from /Folders. Spaces in the path stay as they are inside the quotes, apostrophes are doubled.
21. Download file content
GET · No extra headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Reports/Q3.pdf')/$value
Use: get the file bytes, for example to attach them to a mail.
Pitfall: file names with % or # fail here. Use the ResourcePath variant GetFileByServerRelativePath(decodedurl='/sites/Team/Shared Documents/Reports/100% done.pdf')/$value, which takes the decoded path.
22. Upload a file
POST · No extra headers · Body: file content
1
_api/web/GetFolderByServerRelativeUrl('/sites/Team/Shared Documents/Reports')/Files/add(url='Q3.pdf',overwrite=true)
Use: upload into a folder that is only known as a path, with control over overwriting.
Pitfall: put the file content token directly into Body, not wrapped in text. With overwrite=false the call fails if the file exists. Large files hit the Power Automate message limit first, see Tip 156.
23. Replace the content of an existing file (PUT)
POST · X-HTTP-Method: PUT · Body: file content
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Reports/Q3.pdf')/$value
Use: write new content into the same file, so ID, link and version history stay.
Pitfall: only PUT works for file content, Microsoft documents that MERGE is not allowed here.
24. Upload in chunks (startupload, continueupload, finishupload)
POST · No extra headers · Body: the chunk
1
2
3
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Big.zip')/startupload(uploadId=guid'{upload-guid}')
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Big.zip')/continueupload(uploadId=guid'{upload-guid}',fileOffset=10485760)
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Big.zip')/finishupload(uploadId=guid'{upload-guid}',fileOffset=20971520)
Use: upload a file in several parts.
Pitfall: the calls address an existing file, so create it first with entry 22 and an empty body. Use the same GUID in all calls, fileOffset is the byte count uploaded so far (the return value of the previous call). In flows, the action setting Allow chunking is usually simpler.
25. Rename a file
POST · Standard headers incl. Content-Type, plus IF-MATCH: * and X-HTTP-Method: MERGE
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Reports/Q3.pdf')/ListItemAllFields
1
{ "FileLeafRef": "Q3-final.pdf" }
Use: rename a file in place, the standard connector has no rename action. Details in Tip 153.
Pitfall: FileLeafRef is the full name including the extension. The same MERGE on ListItemAllFields updates any other metadata column of the file.
26. Copy a file (copyto)
POST · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Reports/Q3.pdf')/copyto(strnewurl='/sites/Team/Shared Documents/Archive/Q3.pdf',boverwrite=false)
Use: copy a file to another folder, with or without overwriting.
Pitfall: the target URL includes the file name, and the parameter names differ from moveto: strnewurl and boverwrite here, newurl and flags there.
27. Move a file (moveto)
POST · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Reports/Q3.pdf')/moveto(newurl='/sites/Team/Shared Documents/Archive/Q3.pdf',flags=1)
Use: move or rename a file in one call.
Pitfall: flags=1 overwrites an existing target, flags=0 doesn’t. A different extension in newurl also changes the file type.
28. Check out a file
POST · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Policy.docx')/CheckOut()
Use: lock a file before the flow changes it.
Pitfall: the file is checked out to the account of the connection. Until check-in, other users see the last checked-in version. undocheckout discards the checkout.
29. Check in a file
POST · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Policy.docx')/CheckIn(comment='Updated by flow',checkintype=1)
Use: release the file and create a version with a comment.
Pitfall: checkintype 0 = minor version, 1 = major version, 2 = overwrite the current version. The comment is limited to 1,023 characters and apostrophes in it are doubled.
30. Read file versions
GET · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Policy.docx')/versions?$select=ID,VersionLabel,Created,CheckInComment,IsCurrentVersion
Use: version history of a file, for example for an audit report.
Pitfall: ID is not the label. Microsoft’s example addresses a version as versions(512), while restoring works with the label '1.0'.
31. Restore a file version
POST · Standard headers · No body
1
_api/web/GetFileByServerRelativeUrl('/sites/Team/Shared Documents/Policy.docx')/versions/restorebylabel(versionlabel='2.0')
Use: roll a file back to an earlier state.
Pitfall: the restore creates a new version from the old one, history stays complete. The label is a string in quotes.
32. Create a folder
POST · Standard headers · No body
1
_api/web/folders/add('/sites/Team/Shared Documents/Reports/2026')
Use: create a folder at a computed path.
Pitfall: in a list (not a library), a folder created this way has no list item and Get items doesn’t see it. In lists, create folders with entry 12 and UnderlyingObjectType: 1, details in Tip 137.
Permissions and groups
33. Break permission inheritance
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Requests')/items(12)/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)
Use: give one item, folder or list its own permissions. Full walkthrough in Tip 160.
Pitfall: copyRoleAssignments=false removes all inherited permissions except one for the current user, so the connection account keeps access. Remove it at the end if it shouldn’t stay.
34. Get the ID of a permission level
GET · Standard headers · No body
1
_api/web/roledefinitions/getbytype(3)?$select=Id,Name
Use: the roledefid for entry 35.
Pitfall: names are localized (getbyname('Contribute') fails on a German site, which calls it “Mitwirken”). getbytype is language-independent: 2 = Read, 3 = Contribute, 6 = Edit, 5 = Full Control.
35. Grant permissions (addroleassignment)
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Requests')/items(12)/roleassignments/addroleassignment(principalid=15,roledefid=1073741827)
Use: give a user or group a permission level on the object.
Pitfall: inheritance must be broken first (entry 33). principalid is the user ID from ensureuser (entry 40) or a group ID, not an email address.
36. Remove permissions (removeroleassignment)
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Requests')/items(12)/roleassignments/removeroleassignment(principalid=15,roledefid=1073741827)
Use: take one permission level away from one user or group.
Pitfall: it removes exactly this combination of principal and permission level. If the user has access through a group, they keep it.
37. Restore inheritance
POST · Standard headers · No body
1
_api/web/lists/getbytitle('Requests')/items(12)/resetroleinheritance
Use: let the object inherit from its parent again, for example after a request is closed.
Pitfall: all unique permissions on the object are gone afterwards, there is no undo.
38. Read the members of a SharePoint group
GET · Standard headers · No body
1
_api/web/sitegroups/getbyname('Team Members')/users?$select=Id,Title,Email,LoginName
Use: send a mail to all members of a site group, or check membership.
Pitfall: group names are site-specific (“Team Members” vs “Mitglieder von Team”). Read the exact name with _api/web/sitegroups?$select=Id,Title once.
39. Add a user to a SharePoint group
POST · Accept: application/json;odata=nometadata, Content-Type: application/json;odata=verbose
1
_api/web/sitegroups/getbyname('Team Members')/users
1
{ "__metadata": { "type": "SP.User" }, "LoginName": "i:0#.f|membership|jane.doe@contoso.com" }
Use: onboarding flows that put new people into the right site group.
Pitfall: LoginName needs the claims prefix i:0#.f|membership|. On sites connected to a Microsoft 365 group, membership is managed in the Microsoft 365 group, the SharePoint group alone doesn’t make someone a team member.
Users
40. Resolve a user (ensureuser)
POST · Standard headers incl. Content-Type
1
_api/web/ensureuser
1
{ "logonName": "i:0#.f|membership|jane.doe@contoso.com" }
Use: get the site user ID (Id) for person columns and permissions, adding the user to the site if needed.
Pitfall: the ID is per site collection, the same person has a different ID on another site. Always resolve on the site you write to.
41. Read the current user
GET · Standard headers · No body
1
_api/web/currentuser?$select=Id,Title,Email,LoginName
Use: know which account the flow writes with, for example to remove it after breaking inheritance (entry 33).
Pitfall: “current user” is the account of the SharePoint connection, not the person who triggered the flow.
42. Find a site user by email
GET · Standard headers · No body
1
_api/web/siteusers/getbyemail('jane.doe@contoso.com')?$select=Id,Title,LoginName
Use: look up a user ID without adding the user to the site.
Pitfall: only users already known to the site are found, everyone else returns an error. If the user may be new, use ensureuser (entry 40).
Site and web
43. Read site properties
GET · Standard headers · No body
1
_api/web?$select=Id,Title,Url,ServerRelativeUrl,Language
Use: site title, URL and language (LCID) for mails, logs or path building.
Pitfall: the Uri is relative to Site Address. For a subsite, put the subsite URL into Site Address, not into the Uri.
44. List subsites
GET · Standard headers · No body
1
_api/web/webs?$select=Title,Url,ServerRelativeUrl
Use: inventory of the subsites below a site.
Pitfall: returns only the direct children. For deeper levels, call it again on each subsite.
45. List all lists and libraries
GET · Standard headers · No body
1
_api/web/lists?$select=Id,Title,ItemCount,BaseTemplate&$filter=Hidden eq false
Use: inventory of a site, for example to find lists close to the 5,000-item threshold.
Pitfall: without Hidden eq false you also get system lists. BaseTemplate 100 is a custom list, 101 a document library.
Search and batch
46. SharePoint search (search/query)
GET · Standard headers · No body
1
_api/search/query?querytext='budget filetype:pdf'&selectproperties='Title,Path,LastModifiedTime'&rowlimit=50
Use: search across sites with KQL, faster than walking libraries.
Pitfall: results are nested in PrimaryQueryResult.RelevantResults.Table.Rows, each row is a Cells array of key/value pairs. Paging uses startrow, which Microsoft caps at 50,000. Text parameters are in single quotes.
47. Many operations in one call ($batch)
POST · Accept: application/json;odata=nometadata, Content-Type: multipart/mixed; boundary=batch_abc
1
_api/$batch
1
2
3
4
5
6
7
8
--batch_abc
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://contoso.sharepoint.com/sites/Team/_api/web/lists/getbytitle('Projects')/items?$select=Title HTTP/1.1
Accept: application/json;odata=nometadata
--batch_abc--
Use: hundreds of creates, updates or deletes with one action, see Tip 47.
Pitfall: the batch answers 200 even if single operations fail, and it is not transactional, failed parts are not rolled back. URLs inside the body are absolute, target the same site and are case-sensitive. Several file uploads in one batch are not supported.
Webhooks
48. Create a webhook subscription
POST · Standard headers incl. Content-Type
1
_api/web/lists('{list-guid}')/subscriptions
1
{ "resource": "https://contoso.sharepoint.com/sites/Team/_api/web/lists('{list-guid}')", "notificationUrl": "https://your-endpoint.example.com/api/sp-webhook", "expirationDateTime": "2027-03-31T00:00:00Z", "clientState": "projects-sync" }
Use: let SharePoint call your endpoint when items in a list change.
Pitfall: while creating, SharePoint calls notificationUrl with ?validationtoken=... and your endpoint must return exactly that token as plain text, otherwise no subscription. expirationDateTime is at most 180 days ahead. A flow as receiver needs the HTTP request trigger, which is premium.
49. List and renew webhook subscriptions
GET · Standard headers · No body
1
_api/web/lists('{list-guid}')/subscriptions
Use: check which subscriptions exist and when they expire.
Pitfall: subscriptions are deleted when they expire. Renew them before that with Method PATCH on _api/web/lists('{list-guid}')/subscriptions('{subscription-id}') and a body with the new expirationDateTime.
Regional settings and time zone
50. Read regional settings and time zone
GET · Standard headers · No body
1
2
_api/web/RegionalSettings?$select=LocaleId
_api/web/RegionalSettings/TimeZone
Use: know which date format the site expects (for entry 11 and 12) and convert UTC dates from REST into the site’s local time.
Pitfall: REST returns dates in UTC, the list view shows local time. TimeZone.Information.Bias is in minutes and counts from local time to UTC, so Zurich (UTC+1) shows -60, and daylight saving time adds DaylightBias on top.
🛠️ FAQ
Is Send an HTTP request to SharePoint a premium action?
No. It belongs to the standard SharePoint connector, so a Microsoft 365 license is enough. The call runs under the account of the SharePoint connection, with that account’s permissions. The premium one is the generic HTTP action, which you need for APIs outside SharePoint.
When do I need odata=verbose and __metadata in the body?
Only if you send Content-Type: application/json;odata=verbose. Then every create or update body needs __metadata.type, for list items the list’s ListItemEntityTypeFullName. With Content-Type: application/json;odata=nometadata you leave __metadata out and send only the fields. Mixing the two (verbose header, body without type) fails with 400 An entry without a type name was found.
Why do I only get 100 items back?
The items endpoint returns 100 items by default. Set $top and follow the next-page link (odata.nextLink with nometadata) or use $skiptoken=Paged=TRUE%26p_ID=<last ID>. $skip does not work for list items. On lists above 5,000 items, filter and sort only on indexed columns.
Which column name do I use in $select, $filter and the body?
Always the internal name, never the display name. A column created as Due Date is Due_x0020_Date, and a renamed column keeps its original internal name. Read it once with _api/web/lists/getbytitle('List')/fields?$select=Title,InternalName. Lookup and person columns are written as <InternalName>Id with the item or user ID.
Can I call Microsoft Graph or other services with this action?
No. Microsoft Learn states that the action only supports SharePoint REST APIs. For Microsoft Graph or other Microsoft services use the HTTP with Microsoft Entra ID connector, for any other API the HTTP action. The HTTP Request Builder helps you assemble those requests.
đź”— Related
🔸 Tips: Tip 95: optimized SharePoint queries · Tip 121: filtering file fields with OData · Tip 123: lowest and highest ID and total count · Tip 129: case-sensitive filtering · Tip 154: preserve author and dates on copied files · Tip 161: clone list columns
🔸 Tools: OData Filter Builder builds the $filter for entries 1 to 3 per column type. HTTP Request Builder assembles requests for the generic HTTP action when you leave SharePoint.
🔸 Knowledge: Power Apps + SharePoint delegation · Dataverse vs SharePoint · Standard vs Premium vs Custom connectors · Knowledge base overview
Endpoints verified against Microsoft Learn: “Working with lists and list items with REST”, “Working with folders and files with REST”, “Use OData query operations in SharePoint REST requests”, “Set custom permissions on a list by using the REST interface”, “Make batch requests with the REST APIs”, “SharePoint Search REST API overview”, “Supporting % and # in files and folders with the ResourcePath API”, the SharePoint webhooks reference and the SharePoint REST API reference for files, lists, users and webs.