Creates a folder in either the top level of a Canva user's
projects(opens in a new tab or window) (using the ID root
), or
another folder (using the parent folder's ID). When a folder is successfully created, the
endpoint returns its folder ID, along with other information.
HTTP method and URL path
https://api.canva.com /rest /v1 /folders
This operation is rate limited to 20 requests per minute for each user of your integration.
Authentication
This endpoint requires a valid access token that acts on behalf of a user. The token must have the following scopes (permissions):
folder:write
For more information, see Scopes.
Header parameters
Content-Type
string
Indicates the media type of the information sent in the request. This must be set to application/json
.
For example: Content-Type: application/json
Body parameters
name
string
The name of the folder. Must be less than 256 characters.
parent_folder_id
string
The folder ID of the parent folder. To create a new folder at the top level of a user's
projects(opens in a new tab or window), use the ID root
.
Example request
Examples for using the /v1/folders
endpoint:
curl --request POST 'https://api.canva.com/rest/v1/folders' \--header 'Authorization: Bearer {token}' \--header 'Content-Type: application/json' \--data '{"name": "My awesome holiday","parent_folder_id": "FAF2lZtloor"}'
const fetch = require("node-fetch");fetch("https://api.canva.com/rest/v1/folders", {method: "POST",headers: {"Authorization": "Bearer {token}","Content-Type": "application/json",},body: JSON.stringify({"name": "My awesome holiday","parent_folder_id": "FAF2lZtloor"}),}).then(async (response) => {const data = await response.json();console.log(data);}).catch(err => console.error(err));
import java.io.IOException;import java.net.URI;import java.net.http.*;public class ApiExample {public static void main(String[] args) throws IOException, InterruptedException {HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://api.canva.com/rest/v1/folders")).header("Authorization", "Bearer {token}").header("Content-Type", "application/json").method("POST", HttpRequest.BodyPublishers.ofString("{\"name\": \"My awesome holiday\", \"parent_folder_id\": \"FAF2lZtloor\"}")).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request,HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}}
import requestsheaders = {"Authorization": "Bearer {token}","Content-Type": "application/json"}data = {"name": "My awesome holiday","parent_folder_id": "FAF2lZtloor"}response = requests.post("https://api.canva.com/rest/v1/folders",headers=headers,json=data)print(response.json())
using System.Net.Http;var client = new HttpClient();var request = new HttpRequestMessage{Method = HttpMethod.Post,RequestUri = new Uri("https://api.canva.com/rest/v1/folders"),Headers ={{ "Authorization", "Bearer {token}" },},Content = new StringContent("{\"name\": \"My awesome holiday\", \"parent_folder_id\": \"FAF2lZtloor\"}",Encoding.UTF8,"application/json"),};using (var response = await client.SendAsync(request)){response.EnsureSuccessStatusCode();var body = await response.Content.ReadAsStringAsync();Console.WriteLine(body);};
package mainimport ("fmt""io""net/http""strings")func main() {payload := strings.NewReader(`{"name": "My awesome holiday","parent_folder_id": "FAF2lZtloor"}`)url := "https://api.canva.com/rest/v1/folders"req, _ := http.NewRequest("POST", url, payload)req.Header.Add("Authorization", "Bearer {token}")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))}
$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://api.canva.com/rest/v1/folders",CURLOPT_CUSTOMREQUEST => "POST",CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => array('Authorization: Bearer {token}','Content-Type: application/json',),CURLOPT_POSTFIELDS => json_encode(["name" => "My awesome holiday","parent_folder_id" => "FAF2lZtloor"])));$response = curl_exec($curl);$err = curl_error($curl);curl_close($curl);if (empty($err)) {echo $response;} else {echo "Error: " . $err;}
require 'net/http'require 'uri'url = URI('https://api.canva.com/rest/v1/folders')http = Net::HTTP.new(url.host, url.port)http.use_ssl = truerequest = Net::HTTP::Post.new(url)request['Authorization'] = 'Bearer {token}'request['Content-Type'] = 'application/json'request.body = <<REQUEST_BODY{"name": "My awesome holiday","parent_folder_id": "FAF2lZtloor"}REQUEST_BODYresponse = http.request(request)puts response.read_body
Success response
If successful, the endpoint returns a 200
response with a JSON body with the following parameters:
folder
Folder
The folder object, which contains metadata about the folder.
Properties of folder
id
string
The folder ID.
name
string
The folder name.
created_at
integer
When the folder was created, as a Unix timestamp (in seconds since the Unix Epoch).
updated_at
integer
When the folder was last updated, as a Unix timestamp (in seconds since the Unix Epoch).
thumbnail
Thumbnail
A thumbnail image representing the object.
Properties of thumbnail
width
integer
The width of the thumbnail image in pixels.
height
integer
The height of the thumbnail image in pixels.
url
string
A URL for retrieving the thumbnail image. This URL expires after 15 minutes. This URL includes a query string that's required for retrieving the thumbnail.
Example response
{"folder": {"id": "FAF2lZtloor","name": "My awesome holiday","created_at": 1377396000,"updated_at": 1692928800,"thumbnail": {"width": 595,"height": 335,"url": "https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>"}}}