curl --request POST \
--url https://app.gc.ai/api/external/v1/folders \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q4 Contracts",
"description": "<string>",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scope": "my-files"
}
'import requests
url = "https://app.gc.ai/api/external/v1/folders"
payload = {
"name": "Q4 Contracts",
"description": "<string>",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scope": "my-files"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Q4 Contracts',
description: '<string>',
parent_folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
scope: 'my-files'
})
};
fetch('https://app.gc.ai/api/external/v1/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://app.gc.ai/api/external/v1/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([
'name' => 'Q4 Contracts',
'description' => '<string>',
'parent_folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'scope' => 'my-files'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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://app.gc.ai/api/external/v1/folders"
payload := strings.NewReader("{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://app.gc.ai/api/external/v1/folders")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gc.ai/api/external/v1/folders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"path": "/My Files/Contracts",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"folder_type": "<string>",
"created_at": "<string>"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}Create a Folder
Create a new folder for organizing files. Folders can be nested by specifying a parent_folder_id.
Org-scoped keys can create folders under non-access-controlled parents. The scope parameter requires a user-scoped key.
curl --request POST \
--url https://app.gc.ai/api/external/v1/folders \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q4 Contracts",
"description": "<string>",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scope": "my-files"
}
'import requests
url = "https://app.gc.ai/api/external/v1/folders"
payload = {
"name": "Q4 Contracts",
"description": "<string>",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scope": "my-files"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Q4 Contracts',
description: '<string>',
parent_folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
scope: 'my-files'
})
};
fetch('https://app.gc.ai/api/external/v1/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://app.gc.ai/api/external/v1/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([
'name' => 'Q4 Contracts',
'description' => '<string>',
'parent_folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'scope' => 'my-files'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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://app.gc.ai/api/external/v1/folders"
payload := strings.NewReader("{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://app.gc.ai/api/external/v1/folders")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gc.ai/api/external/v1/folders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Q4 Contracts\",\n \"description\": \"<string>\",\n \"parent_folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"scope\": \"my-files\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"path": "/My Files/Contracts",
"parent_folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"folder_type": "<string>",
"created_at": "<string>"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}Authorizations
API key for authentication. Format: gcai_xxxxxxxxx
Create API keys in the GC AI app under Settings → API.
Body
Folder name (min 2 characters)
2"Q4 Contracts"
Optional description
Parent folder ID. Mutually exclusive with scope. If both are omitted, creates a top-level folder.
Create the folder at the root of a meta-collection. Mutually exclusive with parent_folder_id. shared-with-me is not valid for create.
my-files, organization "my-files"
Response
Folder created
Unique folder identifier
Folder name
Folder description, or null if unset
Path through ancestors visible to the requester. Inaccessible ancestors are skipped, so this may not reflect absolute depth. Use parent_folder_id to traverse hierarchy.
"/My Files/Contracts"
Parent folder ID, or null for root
Folder type (custom, my-files, etc.)
ISO 8601 creation timestamp
Was this page helpful?