> ## 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"
}
```