> ## Documentation Index > Fetch the complete documentation index at: https://www.canva.dev/docs/apps/llms.txt > Use this file to discover all available pages before exploring further. # Get brand template dataset Check if a brand template has autofillable fields and what type of information the fields accept. AVAILABILITY: To use this API, your app must act on behalf of a user that's on a Canva plan with access to brand templates (such as Canva Pro, Canva Teams, or Canva Enterprise). Gets the dataset definition of a brand template. If the brand template contains autofill data fields, this API returns an object with the data field names and the type of data they accept. To get the dataset definition of a design, use the [Get design dataset API](https://www.canva.dev/docs/apps/rest-apis/reference/designs/get-design-dataset/). Available data field types include: * Images (which you can autofill with an image or a video asset) * Text * Charts * Sheets You can autofill a brand template using the [Create a design autofill job API](https://www.canva.dev/docs/apps/rest-apis/reference/autofills/create-design-autofill-job/). ## HTTP method and URL path GET https\://api.canva.com/rest/v1/brand-templates/\{brandTemplateId}/dataset This operation is rate limited to 100 requests per minute for each user of your app. ## Authentication and authorization This endpoint requires a valid access token that acts on behalf of a user. For more information, see [Generate an access token](/docs/apps/rest-apis/reference/authentication/generate-access-token). ### Scopes The access token must have all the following [scopes](/docs/apps/rest-apis/scopes) (permissions): * `brandtemplate:content:read` ## Header parameters Provides credentials to authenticate the request, in the form of a `Bearer` token. For example: `Authorization: Bearer {token}` ## Path parameters The brand template ID. ## Example request Examples for using the `/v1/brand-templates/{brandTemplateId}/dataset` endpoint: ```sh curl --request GET 'https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset' \ --header 'Authorization: Bearer {token}' ``` ```js const fetch = require("node-fetch"); fetch("https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset", { method: "GET", headers: { "Authorization": "Bearer {token}", }, }) .then(async (response) => { const data = await response.json(); console.log(data); }) .catch(err => console.error(err)); ``` ```java 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/brand-templates/{brandTemplateId}/dataset")) .header("Authorization", "Bearer {token}") .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse response = HttpClient.newHttpClient().send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.body()); } } ``` ```py import requests headers = { "Authorization": "Bearer {token}" } response = requests.get("https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset", headers=headers ) print(response.json()) ``` ```csharp using System.Net.Http; var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri("https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset"), Headers = { { "Authorization", "Bearer {token}" }, }, }; using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body); }; ``` ```go package main import ( "fmt" "io" "net/http" ) func main() { url := "https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer {token}") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(string(body)) } ``` ```php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset", CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array( 'Authorization: Bearer {token}', ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if (empty($err)) { echo $response; } else { echo "Error: " . $err; } ``` ```ruby require 'net/http' require 'uri' url = URI('https://api.canva.com/rest/v1/brand-templates/{brandTemplateId}/dataset') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request['Authorization'] = 'Bearer {token}' response = 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: The dataset definition. It contains the data inputs available for use with the [Create design autofill job API](https://www.canva.dev/docs/apps/rest-apis/reference/autofills/create-design-autofill-job/). Properties of dataset} defaultExpanded={true}> A named data field that can be autofilled. ```json { "cute_pet_image_of_the_day": { "type": "image" }, "cute_pet_witty_pet_says": { "type": "text" }, "cute_pet_sales_chart": { "type": "chart" } } ``` An image data field. You can autofill it with an image by providing its `asset_id`. You can also autofill it with a video asset. **Available values:** The only valid value is `image`. A text data field. You can autofill it with a text value. **Available values:** The only valid value is `text`. A chart data field. You can autofill it with tabular data. **Available values:** The only valid value is `chart`. A sheet data field. You can autofill it with tabular sheet data. **Available values:** The only valid value is `sheet`. ## Example response ```json { "dataset": { "cute_pet_image_of_the_day": { "type": "image" }, "cute_pet_witty_pet_says": { "type": "text" }, "cute_pet_sales_chart": { "type": "chart" } } } ``` ## Error responses ### 403 Forbidden A short string indicating what failed. This field can be used to handle errors programmatically. For a complete list of error codes, see [Error responses](/docs/apps/rest-apis/error-responses/). A human-readable description of what went wrong. #### Example error response ##### Not allowed to access the brand template ```json { "code": "permission_denied", "message": "User does not have permission to access brand template with id '{brandTemplateId}'" } ``` ### 404 Not Found A short string indicating what failed. This field can be used to handle errors programmatically. For a complete list of error codes, see [Error responses](/docs/apps/rest-apis/error-responses/). A human-readable description of what went wrong. #### Example error response ##### Brand template not found ```json { "code": "not_found", "message": "Brand template with id '{brandTemplateId}' not found" } ```