Create design

Create a Canva design.

Creates a new Canva design. To create a new design, you can either:

  • Use a preset design type.
  • Set height and width dimensions for a custom design.

Additionally, you can also provide the asset_id of an asset in the user's projects to add to the new design. To list the assets in a folder in the user's projects, use the List folder items API.

POST https://api.canva.com/rest/v1/designs

This endpoint requires a valid access token that acts on behalf of a user. The token must have the following scopes (permissions):

  • design:content:write

For more information, see Scopes.

#Authorizationstring
Required

Provides credentials to authenticate the request, in the form of a Bearer token.

For example: Authorization: Bearer {token}

#Content-Typestring
Required

Indicates the media type of the information sent in the request. This must be set to application/json.

For example: Content-Type: application/json

#design_typeDesignTypeInput
Optional

The desired design type.

Properties of design_type
#typestring
Required

This can be one of the following:

  • preset: Provide the common design type.
  • custom: Provide the width and height to define a custom design type.
#namestring
Sometimes required

The name of the design type. This can be one of the following:

  • doc: A Canva doc; a document for Canva's online text editor.
  • whiteboard: A whiteboard; a design which gives you infinite space to collaborate.
  • presentation: A presentation; lets you create and collaborate for presenting to an audience.
#widthinteger
Sometimes required

The width of the design (in pixels). Minimum 40px, maximum 8000px.

#heightinteger
Sometimes required

The height of the design (in pixels). Minimum 40px, maximum 8000px.

#asset_idstring
Optional

The ID of an asset to insert into the created design.

#titlestring
Optional

The name of the design. Must be less than 256 characters.

Examples for using the /v1/designs endpoint:

curl --request POST 'https://api.canva.com/rest/v1/designs' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"design_type": {
"type": "preset",
"name": "doc"
},
"asset_id": "Msd59349ff",
"title": "My Holiday Presentation"
}'
sh

If successful, the endpoint returns a 200 response with a JSON body with the following parameters:

#designDesign

The design object, which contains metadata about the design.

Properties of design
#idstring

The design ID.

#ownerTeamUserSummary

Metadata for the user, consisting of the User ID and Team ID.

Properties of owner
#user_idstring

The ID of the user.

#team_idstring

The ID of the user's Canva Team.

#urlsDesignLinks

A temporary set of URLs for viewing or editing the design.

Properties of urls
#edit_urlstring

A temporary editing URL for the design.

#view_urlstring

A temporary viewing URL for the design.

#titlestring
Optional

The design title.

#thumbnailThumbnail
Optional

A thumbnail image representing the object.

Properties of thumbnail
#widthinteger

The width of the thumbnail image in pixels.

#heightinteger

The height of the thumbnail image in pixels.

#urlstring

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.

{
"design": {
"id": "DAFVztcvd9z",
"title": "My summer holiday",
"owner": {
"user_id": "auDAbliZ2rQNNOsUl5OLu",
"team_id": "Oi2RJILTrKk0KRhRUZozX"
},
"thumbnail": {
"width": 595,
"height": 335,
"url": "https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>"
},
"urls": {
"edit_url": "https://www.canva.com/api/design/{token}/edit",
"view_url": "https://www.canva.com/api/design/{token}/view"
}
}
}
json

To get started, generate an access token or provide your own below