Access SharePoint via Microsoft Graph API with managed OAuth authentication.
Reference
Get Root Site
GET /sharepoint/v1.0/sites/rootResponse:
{
"id": "contoso.sharepoint.com,guid1,guid2",
"displayName": "Communication site",
"name": "root",
"webUrl": "https://contoso.sharepoint.com"
}Get Site by ID
GET /sharepoint/v1.0/sites/{site_id}Site IDs follow the format: {hostname},{site-guid},{web-guid}
Get Site by Hostname and Path
GET /sharepoint/v1.0/sites/{hostname}:/{site-path}Example: GET /sharepoint/v1.0/sites/contoso.sharepoint.com:/sites/marketing
Search Sites
GET /sharepoint/v1.0/sites?search={query}List Subsites
GET /sharepoint/v1.0/sites/{site_id}/sitesGet Site Columns
GET /sharepoint/v1.0/sites/{site_id}/columnsGet Followed Sites
GET /sharepoint/v1.0/me/followedSitesList Site Lists
GET /sharepoint/v1.0/sites/{site_id}/listsResponse:
{
"value": [
{
"id": "b23974d6-a0aa-4e9b-9535-25393598b973",
"name": "Events",
"displayName": "Events",
"webUrl": "https://contoso.sharepoint.com/Lists/Events"
}
]
}Get List
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}List Columns
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/columnsList Content Types
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/contentTypesList Items
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/itemsWith field values (use $expand=fields):
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items?$expand=fieldsResponse:
{
"value": [
{
"id": "1",
"createdDateTime": "2026-03-05T08:00:00Z",
"fields": {
"Title": "Team Meeting",
"EventDate": "2026-03-10T14:00:00Z",
"Location": "Conference Room A"
}
}
]
}Get List Item
GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}?$expand=fieldsCreate List Item
POST /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items
Content-Type: application/json
{
"fields": {
"Title": "New Event",
"EventDate": "2026-04-01T10:00:00Z",
"Location": "Main Hall"
}
}Update List Item
PATCH /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}/fields
Content-Type: application/json
{
"Title": "Updated Event Title"
}Delete List Item
DELETE /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}Returns 204 No Content on success.
List Site Drives
GET /sharepoint/v1.0/sites/{site_id}/drivesGet Default Drive
GET /sharepoint/v1.0/sites/{site_id}/driveGet Drive by ID
GET /sharepoint/v1.0/drives/{drive_id}Note: Drive IDs containing ! (e.g., b!abc123) must be URL-encoded: b%21abc123
List Root Contents
GET /sharepoint/v1.0/drives/{drive_id}/root/childrenResponse:
{
"value": [
{
"id": "01WBMXT7NQEEYJ3BAXL5...",
"name": "Documents",
"folder": { "childCount": 5 },
"webUrl": "https://contoso.sharepoint.com/Shared%20Documents/Documents"
},
{
"id": "01WBMXT7LISS5OMIG4CZ...",
"name": "report.docx",
"file": { "mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
"size": 25600
}
]
}Get Item by ID
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}Get Item by Path
GET /sharepoint/v1.0/drives/{drive_id}/root:/{path}Example: GET /sharepoint/v1.0/drives/{drive_id}/root:/Reports/Q1.xlsx
List Folder Contents
GET /sharepoint/v1.0/drives/{drive_id}/items/{folder_id}/childrenOr by path:
GET /sharepoint/v1.0/drives/{drive_id}/root:/{folder_path}:/childrenDownload File
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/contentOr by path:
GET /sharepoint/v1.0/drives/{drive_id}/root:/{path}:/contentReturns a redirect to the download URL (follow redirects to get file content).
Upload File (Simple - up to 4MB)
PUT /sharepoint/v1.0/drives/{drive_id}/root:/{filename}:/content
Content-Type: application/octet-stream
<file content>curl -X PUT "https://api.maton.ai/sharepoint/v1.0/drives/{drive_id}/root:/documents/report.txt:/content" \
-H "Authorization: Bearer $MATON_API_KEY" \
-H "Content-Type: text/plain" \
-d "File content here"Create Folder
POST /sharepoint/v1.0/drives/{drive_id}/root/children
Content-Type: application/json
{
"name": "New Folder",
"folder": {},
"@microsoft.graph.conflictBehavior": "rename"
}Or in a specific folder:
POST /sharepoint/v1.0/drives/{drive_id}/items/{parent_id}/childrenRename/Move Item
PATCH /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
Content-Type: application/json
{
"name": "new-filename.txt"
}To move to another folder:
PATCH /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
Content-Type: application/json
{
"parentReference": {
"id": "{target_folder_id}"
}
}Copy Item
POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/copy
Content-Type: application/json
{
"name": "copied-file.txt"
}This is an async operation - returns 202 Accepted with a Location header for progress tracking.
Delete Item
DELETE /sharepoint/v1.0/drives/{drive_id}/items/{item_id}Returns 204 No Content on success. Deleted items go to the recycle bin.
Search Files
GET /sharepoint/v1.0/drives/{drive_id}/root/search(q='{query}')Response:
{
"value": [
{
"id": "01WBMXT7...",
"name": "quarterly-report.xlsx",
"webUrl": "https://contoso.sharepoint.com/..."
}
]
}Track Changes (Delta)
GET /sharepoint/v1.0/drives/{drive_id}/root/deltaReturns changed items and a @odata.deltaLink for subsequent requests.
Get Item Permissions
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/permissionsCreate Sharing Link
POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/createLink
Content-Type: application/json
{
"type": "view",
"scope": "organization"
}Parameters:
type:view,edit, orembedscope:anonymous,organization, orusers
Response:
{
"id": "f0cfb2bd-ef5f-4451-9932-8e9a3e219aaa",
"roles": ["read"],
"link": {
"type": "view",
"scope": "organization",
"webUrl": "https://contoso.sharepoint.com/:t:/g/..."
}
}List File Versions
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versionsResponse:
{
"value": [
{
"id": "2.0",
"lastModifiedDateTime": "2026-03-05T08:07:12Z",
"size": 25600,
"lastModifiedBy": {
"user": { "displayName": "John Doe" }
}
},
{
"id": "1.0",
"lastModifiedDateTime": "2026-03-04T10:00:00Z",
"size": 24000
}
]
}Get Specific Version
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id}Download Version Content
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id}/contentGet Item Thumbnails
GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/thumbnailsResponse:
{
"value": [
{
"id": "0",
"small": { "height": 96, "width": 96, "url": "..." },
"medium": { "height": 176, "width": 176, "url": "..." },
"large": { "height": 800, "width": 800, "url": "..." }
}
]
}