Create a folder in OneDrive or a SharePoint library
curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"parentId": "<string>",
"name": "<string>",
"driveId": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders"
payload = {
"parentId": "<string>",
"name": "<string>",
"driveId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({parentId: '<string>', name: '<string>', driveId: '<string>'})
};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'parentId' => '<string>',
'name' => '<string>',
'driveId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders"
payload := strings.NewReader("{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"file": {
"id": "<string>",
"driveId": "<string>",
"parentId": "<string>",
"siteId": "<string>",
"name": "<string>",
"size": 123,
"modifiedTime": "<string>",
"webUrl": "<string>",
"mimeType": "<string>",
"kind": "file",
"eTag": "<string>"
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Capability Sources
Create a folder in OneDrive or a SharePoint library
Requires Files.ReadWrite and filesWrite for the member’s own OneDrive, or Files.ReadWrite.All and filesFull for other drives. Creates one folder under an existing parent id. Name conflicts fail without overwriting or silently renaming anything. Uses only the calling member’s delegated Microsoft 365 connection. Never automatically retry a mutation after a timeout, cancellation, or ambiguous response; inspect current state first.
POST
/
v1
/
capabilities
/
microsoft-365
/
drive-folders
Create a folder in OneDrive or a SharePoint library
curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"parentId": "<string>",
"name": "<string>",
"driveId": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders"
payload = {
"parentId": "<string>",
"name": "<string>",
"driveId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({parentId: '<string>', name: '<string>', driveId: '<string>'})
};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'parentId' => '<string>',
'name' => '<string>',
'driveId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders"
payload := strings.NewReader("{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/drive-folders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"parentId\": \"<string>\",\n \"name\": \"<string>\",\n \"driveId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"file": {
"id": "<string>",
"driveId": "<string>",
"parentId": "<string>",
"siteId": "<string>",
"name": "<string>",
"size": 123,
"modifiedTime": "<string>",
"webUrl": "<string>",
"mimeType": "<string>",
"kind": "file",
"eTag": "<string>"
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Authorizations
denApiKeybearerAuth
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Body
application/json
Was this page helpful?