---
title: "POST /v1/brand-templates"
method: POST
path: "/v1/brand-templates"
tags: ["brand_template"]
---

# POST /v1/brand-templates

`POST /v1/brand-templates`

<Warning>

This API is currently provided as a preview. Be aware of the following:

- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.

</Warning>

AVAILABILITY: To use this API, your integration 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). Additionally, the user must have one of the following [roles](https://www.canva.com/help/roles-and-permissions/): Team admin, Brand designer, Organization admin, or Organization designer.

Publishes a design as a [brand template](https://www.canva.com/help/publish-team-template/). Brand templates are design templates that can be shared across a team for consistent content creation.

This API supports two workflows:

- **Initial publish**: If the design is not linked to an existing brand template, a new brand template is created.
- **Republish**: If the design is a draft of an existing brand template (created by editing an existing template), the existing template is updated with the changes.

The API returns the published brand template immediately.

<Note>
The `thumbnail` field might be `null` immediately after publishing, as thumbnails are generated asynchronously. You can use the [Get brand template API](https://www.canva.dev/docs/connect/api-reference/brand-templates/get-brand-template/) to retrieve the thumbnail once it's ready. The brand template's `view_url` and `create_url` are available immediately.
</Note>

## Request body

- PublishBrandTemplateRequest — Request body for publishing a design as a brand template
  - `design_id` string, required — The ID of the design to publish as a brand template. If this design is a draft of an existing brand template, that template will be updated. Otherwise, a new brand template is created.

## Response `200`

OK

- PublishBrandTemplateResponse — Response from a successful publishBrandTemplate request. Contains the published brand template with all its metadata. Note that the `thumbnail` field might be `null` initially as thumbnails are generated asynchronously.
  - `brand_template` BrandTemplate, required — An object representing a brand template with associated metadata.
    - `id` string, required — The brand template ID.
    - `title` string, required — The brand template title, as shown in the Canva UI.
    - `view_url` string, required — A URL Canva users can visit to view the brand template.
    - `create_url` string, required — A URL Canva users can visit to create a new design from the template.
    - `thumbnail` Thumbnail — A thumbnail image representing the object.
      - `width` integer, required — The width of the thumbnail image in pixels.
      - `height` integer, required — The height of the thumbnail image in pixels.
      - `url` string, required — 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.
    - `created_at` integer, required — When the brand template was created, as a Unix timestamp (in seconds since the Unix Epoch).
    - `updated_at` integer, required — When the brand template was last updated, as a Unix timestamp (in seconds since the Unix Epoch).

## Other responses

- `400` — Bad Request - includes validation errors and other bad request errors
- `403` — Forbidden
- `404` — Not Found
- `default` — Error Response

---

[API](https://skmtc.net/canva/apis/canva-connect-api.md) · [All operations](https://skmtc.net/canva/apis/canva-connect-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/canva/canva-connect-api/revisions/96535efdbde5/schema)
