openapi: 3.2.0
info:
contact:
name: Canva Developer Community
url: https://community.canva.dev/
description: API for building integrations with Canva via a REST api
license:
name: ©2023 All Rights Reserved
termsOfService: https://www.canva.com/trust/legal/
title: Canva Connect Design API
version: 2024-06-18
servers:
- description: Canva Connect API
url: https://api.canva.com/rest
tags:
- name: design
paths:
/v1/designs:
get:
description: 'Lists metadata for all the designs in a Canva user''s
[projects](https://www.canva.com/help/find-designs-and-folders/). You can also:
- Use search terms to filter the listed designs.
- Show designs either created by, or shared with the user.
- Sort the results.'
operationId: listDesigns
parameters:
- description: Lets you search the user's designs, and designs shared with the user, using a search term or terms.
example: party invites
explode: true
in: query
name: query
required: false
schema:
maxLength: 255
type: string
style: form
- description: 'If the success response contains a continuation token, the list contains more designs
you can list. You can use this token as a query parameter and retrieve more
designs from the list, for example
`/v1/designs?continuation={continuation}`.
To retrieve all of a user''s designs, you might need to make multiple requests.'
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
explode: true
in: query
name: continuation
required: false
schema:
type: string
style: form
- description: Filter the list of designs based on the user's ownership of the designs.
example: any
explode: true
in: query
name: ownership
required: false
schema:
$ref: '#/components/schemas/OwnershipType'
style: form
- description: Sort the list of designs.
example: relevance
explode: true
in: query
name: sort_by
required: false
schema:
$ref: '#/components/schemas/SortByType'
style: form
- description: The number of designs to return.
explode: true
in: query
name: limit
required: false
schema:
default: 25
format: int32
maximum: 100
minimum: 1
type: integer
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetListDesignResponse'
description: OK
'400':
content:
application/json:
examples:
invalid_continuation:
$ref: '#/components/examples/InvalidContinuationError'
invalid_ownership:
$ref: '#/components/examples/InvalidOwnershipError'
invalid_sort_by:
$ref: '#/components/examples/InvalidSortByError'
design_type_not_available:
$ref: '#/components/examples/DesignTypeNotAvailableError'
unable_to_fetch_designs:
$ref: '#/components/examples/UnableToFetchDesignsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
not_allowed_to_access_design_list:
$ref: '#/components/examples/ListDesignsForbiddenError'
find_documents_forbidden:
$ref: '#/components/examples/FindDocumentsForbiddenError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:meta:read
tags:
- design
x-rate-limit-per-client-user: 100
post:
description: "Creates a new Canva design. To create a new design, you can:\n\n- Use a preset design type.\n- Set height and width dimensions for a custom design.\n\n NOTE: Custom designs can have a maximum area of 25,000,000 pixels squared (for example, 5000 × 5000 pixels). Each dimension can be between 40 and 8000 pixels, but the total area must stay within this limit.\n- Create a copy of an existing design (currently a [preview feature](https://www.canva.dev/docs/connect/#preview-apis)).\n- Create a new design from a brand template (currently a [preview feature](https://www.canva.dev/docs/connect/#preview-apis)).\n\nFor preset and custom designs, you can also provide the `asset_id` of an asset in the user's [projects](https://www.canva.com/help/find-designs-and-folders/) to add to the new design. Currently, this only supports image assets. To list the assets in a folder in the user's projects, use the [List folder items API](https://www.canva.dev/docs/connect/api-reference/folders/list-folder-items/).\n\nNOTE: Blank designs created with this API are automatically deleted if they're not edited within 7 days. These blank designs bypass the user's Canva trash and are permanently deleted."
operationId: createDesign
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDesignRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDesignResponse'
description: OK
'400':
content:
application/json:
examples:
invalid_design_type:
$ref: '#/components/examples/InvalidDesignTypeError'
missing_design_type_or_asset_id:
$ref: '#/components/examples/MissingDesignTypeOrAssetIdError'
blank_design_id:
$ref: '#/components/examples/BlankDesignIdError'
blank_brand_template_id:
$ref: '#/components/examples/BlankBrandTemplateIdError'
asset_id_not_image:
$ref: '#/components/examples/AssetIdNotImageError'
invalid_design_dimensions:
$ref: '#/components/examples/InvalidDesignDimensionsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
asset_access_not_allowed:
$ref: '#/components/examples/AssetAccessNotAllowedError'
get_design_dataset_permission_denied:
$ref: '#/components/examples/GetDesignDatasetPermissionDeniedError'
create_design_brand_template_access_denied:
$ref: '#/components/examples/CreateDesignBrandTemplateAccessDeniedError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
create_design_not_found:
$ref: '#/components/examples/CreateDesignNotFoundError'
create_brand_template_not_found:
$ref: '#/components/examples/CreateBrandTemplateNotFoundError'
asset_not_found:
$ref: '#/components/examples/AssetNotFoundError'
design_id_not_found:
$ref: '#/components/examples/DesignIdNotFoundError'
ref_design_type_not_found:
$ref: '#/components/examples/RefDesignTypeNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
'429':
content:
application/json:
examples:
design_creation_throttled:
$ref: '#/components/examples/CreateDesignThrottledError'
schema:
$ref: '#/components/schemas/Error'
description: Too Many Requests
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:content:write
tags:
- design
x-rate-limit-per-client-user: 20
/v1/designs/{designId}:
get:
description: Gets the metadata for a design. This includes owner information, URLs for editing and viewing, and thumbnail information.
operationId: getDesign
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetDesignResponse'
description: OK
'403':
content:
application/json:
examples:
design_access_forbidden:
$ref: '#/components/examples/DesignAccessForbiddenError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_id_not_found:
$ref: '#/components/examples/DesignIdNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:meta:read
tags:
- design
x-rate-limit-per-client-user: 100
/v1/designs/{designId}/pages:
get:
description: '
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.
Lists metadata for pages in a design, such as page-specific thumbnails.
For the specified design, you can provide `offset` and `limit` values to specify the range of pages to return.
NOTE: Some design types don''t have pages (for example, Canva docs).'
operationId: getDesignPages
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: 'The page index to start the range of pages to return.
Pages are indexed using one-based numbering, so the first page in a design has the index value `1`.
'
explode: true
in: query
name: offset
required: false
schema:
default: 1
format: int32
maximum: 500
minimum: 1
type: integer
style: form
- description: The number of pages to return, starting at the page index specified using the `offset` parameter.
explode: true
in: query
name: limit
required: false
schema:
default: 50
format: int32
maximum: 200
minimum: 1
type: integer
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetDesignPagesResponse'
description: OK
'400':
content:
application/json:
examples:
design_has_no_pages:
$ref: '#/components/examples/DesignHasNoPagesError'
offset_too_large:
$ref: '#/components/examples/DesignPagesOffsetTooLargeError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
design_access_forbidden:
$ref: '#/components/examples/DesignAccessForbiddenError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_id_not_found:
$ref: '#/components/examples/DesignIdNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:content:read
tags:
- design
x-rate-limit-per-client-user: 100
/v1/designs/{designId}/export-formats:
get:
description: 'Lists the available file formats for [exporting a design](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/).
The available export formats depend on the design type and the types of pages in the design.
Each format includes the page numbers that support it. If a format is supported by every page in the design, its `page_numbers` are omitted.
'
operationId: getDesignExportFormats
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetDesignExportFormatsResponse'
description: OK
'403':
content:
application/json:
examples:
design_access_denied:
$ref: '#/components/examples/DesignAccessDeniedError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_id_not_found:
$ref: '#/components/examples/DesignIdNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:content:read
tags:
- design
x-rate-limit-per-client-user: 100
/v1/designs/{designId}/dataset:
get:
description: '
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.
Gets the dataset definition of a design. If the design 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 brand template, use the
[Get brand template dataset API](https://www.canva.dev/docs/connect/api-reference/brand-templates/get-brand-template-dataset/).
Available data field types include:
- Images (which you can autofill with an image or a video asset)
- Text
- Charts
Use the returned field names and types to build the `data` payload for the
[Create a design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/)
with `type: create_from_design`.
WARNING: Chart data fields and autofilling a video are [preview features](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to these features which won''t produce a new API version.'
operationId: getDesignDataset
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetDesignDatasetResponse'
description: OK
'403':
content:
application/json:
examples:
get_design_dataset_permission_denied:
$ref: '#/components/examples/GetDesignDatasetPermissionDeniedError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
get_design_dataset_not_found:
$ref: '#/components/examples/GetDesignDatasetDesignNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:content:read
tags:
- design
x-rate-limit-per-client-user: 100
/v1/print-partner/designs:
post:
description: '
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.
AVAILABILITY: This API is only available to Print Partners.
Creates a new Canva design using a Print Partner product ID.
Print partner proofing information (such as bleed and page constraints) can optionally be provided in the request. The design URLs that are returned include this information, which Canva applies in the editor when opening the design.
NOTE: Blank designs created with this API are automatically deleted if they''re not edited within 7 days. These blank designs bypass the user''s Canva trash and are permanently deleted.'
operationId: createPrintPartnerDesign
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePrintPartnerDesignRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePrintPartnerDesignResponse'
description: OK
'400':
content:
application/json:
examples:
invalid_design_dimensions:
$ref: '#/components/examples/InvalidDesignDimensionsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
create_print_partner_design_forbidden:
$ref: '#/components/examples/CreatePrintPartnerDesignForbiddenError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
product_size_not_found:
$ref: '#/components/examples/ProductSizeNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
'429':
content:
application/json:
examples:
design_creation_throttled:
$ref: '#/components/examples/CreateDesignThrottledError'
schema:
$ref: '#/components/schemas/Error'
description: Too Many Requests
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:content:write
tags:
- design
x-rate-limit-per-client-user: 20
/v1/print-partner/designs/{designId}:
get:
description: '
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.
AVAILABILITY: This API is only available to Print Partners.
Gets the metadata for a design. This includes owner information, URLs for editing and viewing, and thumbnail information.
Print partner proofing information (such as bleed and page constraints) isn''t stored on Canva, so you can optionally provide it in the request. The design URLs that are returned include this information, which Canva applies in the editor when opening the design.'
operationId: getPrintPartnerDesign
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: 'Bleed in microns to apply around the design in the editor. Bleed is the area
outside the trim line used to avoid white edges after cutting. Use 0 for no bleed. If bleed is not
specified, a default of 3000 microns is used.'
explode: true
in: query
name: bleed
required: false
schema:
default: 3000
format: int32
maximum: 150000
minimum: 0
type: integer
style: form
- description: 'Minimum number of pages the design must have in the editor. The user cannot
reduce the page count below this value. If both min_pages and max_pages are
provided, min_pages must be less than or equal to max_pages.'
explode: true
in: query
name: min_pages
required: false
schema:
format: int32
maximum: 500
minimum: 1
type: integer
style: form
- description: 'Maximum number of pages the design can have in the editor. The user cannot
add pages beyond this value. If both min_pages and max_pages are provided,
min_pages must be less than or equal to max_pages.'
explode: true
in: query
name: max_pages
required: false
schema:
format: int32
maximum: 500
minimum: 1
type: integer
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetPrintPartnerDesignResponse'
description: OK
'403':
content:
application/json:
examples:
get_print_partner_design_forbidden:
$ref: '#/components/examples/GetPrintPartnerDesignForbiddenError'
design_access_forbidden:
$ref: '#/components/examples/DesignAccessForbiddenError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_id_not_found:
$ref: '#/components/examples/DesignIdNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- design:meta:read
tags:
- design
x-rate-limit-per-client-user: 100
components:
examples:
GetPrintPartnerDesignForbiddenError:
summary: Client does not have permission to get a Print Partner design
value:
code: permission_denied
message: Client does not have permission to get a Print Partner design
CreatePrintPartnerDesignForbiddenError:
summary: Client does not have permission to create a Print Partner design
value:
code: permission_denied
message: Client does not have permission to create a Print Partner design
GetDesignDatasetPermissionDeniedError:
summary: Not allowed to access the design
value:
code: permission_denied
message: Not allowed to access design with id '{designId}'
FindDocumentsForbiddenError:
summary: Not allowed to find documents
value:
code: permission_denied
message: Not allowed to find documents
CreateDesignThrottledError:
summary: Design creation throttling threshold reached
value:
code: too_many_requests
message: You have reached the design creation throttling threshold.
GetDesignDatasetDesignNotFoundError:
summary: Design not found
value:
code: not_found
message: Design with id '{designId}' not found
DesignAccessDeniedError:
summary: Not allowed to access the design
value:
code: permission_denied
message: Not allowed to access design with id {designId}
BlankDesignIdError:
summary: The design_id must not be blank
value:
code: bad_request_body
message: design_id must not be blank
MissingDesignTypeOrAssetIdError:
summary: Neither design_type nor asset_id was provided
value:
code: invalid_field
message: One of 'design_type' or 'asset_id' must be defined.
CreateDesignNotFoundError:
summary: A design with the ID specified in the request could not be found.
value:
code: not_found
message: Design with id '{designId}' not found
BlankBrandTemplateIdError:
summary: The brand_template_id must not be blank
value:
code: bad_request_body
message: brand_template_id must not be blank
InvalidContinuationError:
summary: The continuation token is invalid
value:
code: bad_query_params
message: 'Invalid continuation: {continuation}'
DesignTypeNotAvailableError:
summary: The design_types filter contains an unavailable design type
value:
code: invalid_field
message: '''design_types'' contains a design type that isn''t available: {designType}.'
InvalidDesignDimensionsError:
summary: The specified dimensions for the design are invalid
value:
code: invalid_field
message: The specified dimensions for the design are invalid.
AssetAccessNotAllowedError:
summary: Not allowed to access the asset
value:
code: permission_denied
message: Not allowed to access this asset
InvalidDesignTypeError:
summary: The requested preset design type is not available.
value:
code: bad_request_body
message: Design type '{name}' is invalid.
UnableToFetchDesignsError:
summary: Unable to fetch designs
value:
code: bad_query_params
message: Unable to fetch designs
InvalidSortByError:
summary: The sort_by value is invalid
value:
code: invalid_field
message: 'Invalid sort by value: {sortBy}'
ProductSizeNotFoundError:
summary: Product size not found
value:
code: not_found
message: Product size not found for product {productId}
DesignPagesOffsetTooLargeError:
summary: The offset is outside the range of pages in the design
value:
code: offset_too_large
message: Offset {offset} is outside range of [1, {pageCount}]
AssetNotFoundError:
summary: The asset was not found
value:
code: asset_not_found
message: Asset not found
ListDesignsForbiddenError:
summary: Not allowed to access the design list
value:
code: permission_denied
message: Not allowed to access design list
DesignHasNoPagesError:
summary: Canva docs don't have pages
value:
code: page_not_found
message: Design {designId} has no pages because it's a Canva doc.
RefDesignTypeNotFoundError:
summary: The design type was not found
value:
code: design_type_not_found
message: Design type '{refDesignTypeId}' not found.
DesignAccessForbiddenError:
summary: Not allowed to access the design
value:
code: permission_denied
message: Not allowed to access design
AssetIdNotImageError:
summary: The asset_id does not belong to an image asset
value:
code: bad_request_params
message: '`asset_id` must belong to an image asset'
DesignIdNotFoundError:
summary: The design was not found
value:
code: design_not_found
message: Design with id '{designId}' not found
CreateBrandTemplateNotFoundError:
summary: A brand template with the ID specified in the request could not be found.
value:
code: not_found
message: Brand template with id '{brandTemplateId}' not found
InvalidOwnershipError:
summary: The ownership value is invalid
value:
code: invalid_field
message: Invalid ownership
CreateDesignBrandTemplateAccessDeniedError:
summary: Not allowed to access the brand template
value:
code: permission_denied
message: Not allowed to access brand template with id '{brandTemplateId}'
schemas:
Error:
properties:
code:
$ref: '#/components/schemas/ErrorCode'
message:
description: A human-readable description of what went wrong.
type: string
required:
- code
- message
type: object
PdfExportFormatOption:
description: Whether the design can be exported as a PDF.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
ErrorCode:
description: 'A short string indicating what failed. This field can be used to handle errors programmatically.
'
enum:
- internal_error
- invalid_field
- invalid_header_value
- permission_denied
- too_many_requests
- not_found
- bad_request_body
- bad_http_method
- bad_request_params
- bad_query_params
- user_role_required
- endpoint_not_found
- endpoint_gone
- unsupported_version
- invalid_access_token
- revoked_access_token
- missing_field
- missing_scope
- invalid_grant
- invalid_request
- invalid_client
- unauthorized_client
- unsupported_grant_type
- invalid_scope
- invalid_basic_header
- invalid_file_format
- quota_exceeded
- ai_credit_quota_exceeded
- ai_credit_quota_cooldown
- unsupported_content_type
- request_too_large
- folder_not_found
- item_in_multiple_folders
- asset_not_found
- max_limit_reached
- permission_not_found
- permission_exists
- unauthorized_user
- user_not_found
- user_not_eligible
- group_not_found
- app_not_found
- app_has_non_draft_versions
- invalid_status_transition
- translation_validation_failed
- content_not_found
- doctype_not_found
- design_not_found
- offset_too_large
- page_not_found
- design_or_comment_not_found
- design_or_thread_not_found
- review_dismissed
- design_type_not_found
- team_not_found
- team_is_default
- comment_not_found
- too_many_comments
- too_many_replies
- message_too_long
- thread_not_found
- reply_not_found
- design_not_fillable
- autofill_data_invalid
- feature_not_available
- unsupported_design_type
- design_generation_not_enabled
- license_required
- input_unsafe
- display_name_unavailable
- user_not_managed
- saml_team_id_conflict
- saml_name_id_not_available
- user_email_unverified
- user_not_active
- user_pending_consent
- account_exists
type: string
HtmlBundleExportFormatOption:
description: Whether the design can be exported as an HTML bundle.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
SortByType:
default: relevance
enum:
- relevance
- modified_descending
- modified_ascending
- title_descending
- title_ascending
type: string
x-enum-descriptions:
- Sort results using a relevance algorithm.
- Sort results by the date last modified in descending order.
- Sort results by the date last modified in ascending order.
- Sort results by title in descending order.
- Sort results by title in ascending order
GetDesignResponse:
description: Successful response from a `getDesign` request.
properties:
design:
$ref: '#/components/schemas/Design'
required:
- design
type: object
GetListDesignResponse:
properties:
continuation:
description: 'A continuation token.
If the success response contains a continuation token, the list contains more designs
you can list. You can use this token as a query parameter and retrieve more
designs from the list, for example
`/v1/designs?continuation={continuation}`.
To retrieve all of a user''s designs, you might need to make multiple requests.'
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
type: string
items:
description: The list of designs.
items:
$ref: '#/components/schemas/Design'
type: array
required:
- items
type: object
CreateDesignResponse:
description: Details about the new design.
properties:
design:
$ref: '#/components/schemas/Design'
required:
- design
type: object
GetDesignExportFormatsResponse:
description: Successful response from a `getDesignExportFormats` request.
properties:
formats:
$ref: '#/components/schemas/ExportFormatOptions'
required:
- formats
type: object
DesignTypeCreateDesignRequest:
description: 'Create a design by specifying the design type and/or an asset.
At least one of `design_type` or `asset_id` must be defined.'
properties:
type:
description: For backward compatibility, if `type` isn't specified in the request, the request type will be assumed to be `type_and_asset`.
enum:
- type_and_asset
type: string
design_type:
$ref: '#/components/schemas/DesignTypeInput'
asset_id:
description: The ID of an asset to insert into the created design. Currently, this only supports image assets.
example: Msd59349ff
type: string
title:
description: The name of the design.
example: My Holiday Presentation
maxLength: 255
minLength: 1
type: string
required:
- type
type: object
PrintPartnerDesignDimensions:
description: 'Dimensions of the design. Used to match a product type, or to create a custom-size design if
no product matches.'
properties:
width:
description: The width of the design.
example: 595
format: double
minimum: 1
type: number
height:
description: The height of the design.
example: 1295
format: double
minimum: 1
type: number
units:
$ref: '#/components/schemas/PrintPartnerDesignDimensionsUnits'
required:
- height
- units
- width
type: object
PrintPartnerDesignSource:
description: The desired source for the design creation.
discriminator:
mapping:
partner_product_id: '#/components/schemas/PrintPartnerProductIdDesignSource'
dimensions: '#/components/schemas/PrintPartnerDimensionsDesignSource'
propertyName: type
oneOf:
- $ref: '#/components/schemas/PrintPartnerProductIdDesignSource'
- $ref: '#/components/schemas/PrintPartnerDimensionsDesignSource'
type: object
SvgExportFormatOption:
description: Whether the design can be exported as an SVG.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
OwnershipType:
default: any
enum:
- any
- owned
- shared
type: string
x-enum-descriptions:
- Owned by and shared with the user.
- Owned by the user.
- Shared with the user.
GetDesignDatasetResponse:
description: Successful response from a `getDesignDataset` request.
properties:
dataset:
additionalProperties:
$ref: '#/components/schemas/DataField'
description: 'The dataset definition. It contains the data inputs available for use with the
[Create design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/).'
example:
cute_pet_image_of_the_day:
type: image
cute_pet_witty_pet_says:
type: text
cute_pet_sales_chart:
type: chart
type: object
type: object
TextDataField:
description: A text data field. You can autofill it with a text value.
properties:
type:
enum:
- text
type: string
required:
- type
type: object
DesignPage:
description: Basic details about a page in a design, such as the page number and thumbnail.
properties:
id:
description: 'The ID of the page. This ID is unique within the design and can be used to
correlate a page with per-page data from other APIs.
Some designs might not have page IDs, in which case this property is omitted.'
example: PB2NFQ9W78kLDFCK
type: string
index:
deprecated: true
description: 'WARNING: This property is deprecated. Use `page_number` instead, which returns an identical value.
The index of the page in the design. The first page in a design has the index value `1`.'
format: int32
maximum: 500
minimum: 1
type: integer
page_number:
description: The 1-based page number within the design. The first page in a design has the value `1`.
example: 1
format: int32
maximum: 500
minimum: 1
type: integer
dimensions:
$ref: '#/components/schemas/PageDimensions'
thumbnail:
$ref: '#/components/schemas/Thumbnail'
design_type:
$ref: '#/components/schemas/DesignTypeOutputName'
required:
- design_type
- index
- page_number
type: object
CustomDesignTypeInput:
description: 'Provide the width and height to define a custom design type.
Each dimension must be between 40 and 8000 pixels, and the
total area (width × height) must not exceed 25,000,000 pixels
squared. For example, a design with a width of 8000 pixels can
have a maximum height of 3125 pixels.'
properties:
type:
enum:
- custom
type: string
width:
description: The width of the design, in pixels.
example: 320
format: int32
maximum: 8000
minimum: 40
type: integer
height:
description: The height of the design, in pixels.
example: 200
format: int32
maximum: 8000
minimum: 40
type: integer
required:
- height
- type
- width
type: object
GetDesignPagesResponse:
description: Successful response from a `getDesignPages` request.
properties:
items:
description: The list of pages.
items:
$ref: '#/components/schemas/DesignPage'
type: array
required:
- items
type: object
CreateDesignRequest:
description: 'Body parameters for creating a new design. Use the `type` discriminator to choose the creation mode:
- Use `type_and_asset` to create a design by specifying the design type and/or an asset.
- Use `design` to create a copy of an existing design (currently a [preview feature](https://www.canva.dev/docs/connect/#preview-apis)).
- Use `brand_template` to create a design from a brand template (currently a [preview feature](https://www.canva.dev/docs/connect/#preview-apis)).
NOTE: For backward compatibility, if `type` isn''t specified in the request,
the request type will be assumed to be `type_and_asset`.'
discriminator:
mapping:
type_and_asset: '#/components/schemas/DesignTypeCreateDesignRequest'
design: '#/components/schemas/DesignCreateDesignRequest'
brand_template: '#/components/schemas/BrandTemplateCreateDesignRequest'
propertyName: type
oneOf:
- $ref: '#/components/schemas/DesignTypeCreateDesignRequest'
- $ref: '#/components/schemas/DesignCreateDesignRequest'
- $ref: '#/components/schemas/BrandTemplateCreateDesignRequest'
type: object
DesignLinks:
description: A temporary set of URLs for viewing or editing the design.
properties:
edit_url:
description: 'A temporary editing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support [return navigation](https://www.canva.dev/docs/connect/return-navigation-guide/) workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.'
example: https://www.canva.com/api/design/eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiZXhwaXJ5IjoxNzQyMDk5NDAzMDc5fQ..GKLx2hrJa3wSSDKQ.hk3HA59qJyxehR-ejzt2DThBW0cbRdMBz7Fb5uCpwD-4o485pCf4kcXt_ypUYX0qMHVeZ131YvfwGPIhbk-C245D8c12IIJSDbZUZTS7WiCOJZQ.sNz3mPSQxsETBvl_-upMYA/edit
type: string
view_url:
description: 'A temporary viewing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support [return navigation](https://www.canva.dev/docs/connect/return-navigation-guide/) workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.
'
example: https://www.canva.com/api/design/eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiZXhwaXJ5IjoxNzQyMDk5NDAzMDc5fQ..GKLx2hrJa3wSSDKQ.hk3HA59qJyxehR-ejzt2DThBW0cbRdMBz7Fb5uCpwD-4o485pCf4kcXt_ypUYX0qMHVeZ131YvfwGPIhbk-C245D8c12IIJSDbZUZTS7WiCOJZQ.sNz3mPSQxsETBvl_-upMYA/view
type: string
required:
- edit_url
- view_url
type: object
DesignTypeInput:
description: The desired design type.
discriminator:
mapping:
preset: '#/components/schemas/PresetDesignTypeInput'
custom: '#/components/schemas/CustomDesignTypeInput'
propertyName: type
oneOf:
- $ref: '#/components/schemas/PresetDesignTypeInput'
- $ref: '#/components/schemas/CustomDesignTypeInput'
type: object
DesignCreateDesignRequest:
description: '
Creating a copy of an existing design is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview features won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview features will not pass the review process, and can''t be made available to all Canva users.
Body parameters for creating a copy of an existing design.'
properties:
type:
enum:
- design
type: string
design_id:
description: The ID of the design to copy.
example: DAFVztcvetc
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
page_numbers:
description: 'The pages to copy from the source design. If not specified, all pages are copied.
Pages are indexed using one-based numbering.'
items:
format: int32
minimum: 1
type: integer
minItems: 1
type: array
required:
- design_id
- type
type: object
CreatePrintPartnerDesignResponse:
description: Details about the new design.
properties:
design:
$ref: '#/components/schemas/Design'
required:
- design
type: object
ChartDataField:
description: 'A chart data field. You can autofill it with tabular data.
WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won''t produce a new API version.'
properties:
type:
enum:
- chart
type: string
required:
- type
type: object
JpgExportFormatOption:
description: Whether the design can be exported as a JPEG.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
TeamUserSummary:
description: Metadata for the user, consisting of the User ID and Team ID.
properties:
user_id:
description: The ID of the user.
example: auDAbliZ2rQNNOsUl5OLu
type: string
team_id:
description: The ID of the user's Canva Team.
example: Oi2RJILTrKk0KRhRUZozX
type: string
required:
- team_id
- user_id
type: object
GifExportFormatOption:
description: Whether the design can be exported as a GIF.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
PrintPartnerDimensionsDesignSource:
description: Creates a design that matches your dimensions. Add a product type for more precise template matches.
properties:
type:
enum:
- dimensions
type: string
dimensions:
$ref: '#/components/schemas/PrintPartnerDesignDimensions'
product_type:
description: The product type is used alongside your dimensions to find a matching product in Canva Print's product catalogue, and templates for that product are recommended. If no match is found, only dimensions are used, so templates may include unrelated product types.
example: tshirt
type: string
required:
- dimensions
- type
type: object
ExportFormatOptions:
description: The available file formats for exporting the design.
properties:
pdf:
$ref: '#/components/schemas/PdfExportFormatOption'
jpg:
$ref: '#/components/schemas/JpgExportFormatOption'
png:
$ref: '#/components/schemas/PngExportFormatOption'
svg:
$ref: '#/components/schemas/SvgExportFormatOption'
pptx:
$ref: '#/components/schemas/PptxExportFormatOption'
gif:
$ref: '#/components/schemas/GifExportFormatOption'
mp4:
$ref: '#/components/schemas/Mp4ExportFormatOption'
html_bundle:
$ref: '#/components/schemas/HtmlBundleExportFormatOption'
html_standalone:
$ref: '#/components/schemas/HtmlStandaloneExportFormatOption'
csv:
$ref: '#/components/schemas/CsvExportFormatOption'
type: object
BrandTemplateCreateDesignRequest:
description: '
Creating a copy from a brand template is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview features won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview features will not pass the review process, and can''t be made available to all Canva users.
Body parameters for creating a copy from a brand template.'
properties:
type:
enum:
- brand_template
type: string
brand_template_id:
description: The ID of the brand template used to create a design copy.
example: EDMzWSwy3BI
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
page_numbers:
description: 'The pages to copy from the brand template. If not specified, all pages are copied.
Pages are indexed using one-based numbering.'
items:
format: int32
minimum: 1
type: integer
minItems: 1
type: array
required:
- brand_template_id
- type
type: object
PresetDesignTypeName:
description: The name of the design type.
enum:
- doc
- email
- presentation
- whiteboard
type: string
x-enum-descriptions:
- A [Canva doc](https://www.canva.com/docs/); a document for Canva's online text editor.
- An [email](https://www.canva.com/emails/); for creating email campaign designs.
- A [presentation](https://www.canva.com/presentations/); lets you create and collaborate for presenting to an audience.
- A [whiteboard](https://www.canva.com/online-whiteboard/); a design which gives you infinite space to collaborate.
HtmlStandaloneExportFormatOption:
description: Whether the design can be exported as an standalone HTML file.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
CreatePrintPartnerDesignRequest:
description: Body parameters for creating a new design for a Print Partner.
properties:
design_source:
$ref: '#/components/schemas/PrintPartnerDesignSource'
title:
description: The name of the design.
example: My Holiday Presentation
maxLength: 255
minLength: 1
type: string
bleed:
default: 3000
description: 'Bleed in microns to apply around the design in the editor. Bleed is the area
outside the trim line used to avoid white edges after cutting. Use 0 for no bleed. If bleed is not
specified, a default of 3000 microns is used.'
format: int32
maximum: 150000
minimum: 0
type: integer
min_pages:
description: 'Minimum number of pages the design must have in the editor. The user cannot
reduce the page count below this value. If both min_pages and max_pages are
provided, min_pages must be less than or equal to max_pages.'
format: int32
maximum: 500
minimum: 1
type: integer
max_pages:
description: 'Maximum number of pages the design can have in the editor. The user cannot
add pages beyond this value. If both min_pages and max_pages are provided,
min_pages must be less than or equal to max_pages.'
format: int32
maximum: 500
minimum: 1
type: integer
required:
- design_source
type: object
DesignTypeOutputName:
description: The type of content a design or page contains. The list of design types may grow over time. The `unknown` value represents design types that haven't been added to the list.
enum:
- doc
- email
- presentation
- sheet
- whiteboard
- custom
- unknown
example: presentation
type: string
GetPrintPartnerDesignResponse:
description: Successful response from a `getPrintPartnerDesign` request.
properties:
design:
$ref: '#/components/schemas/Design'
required:
- design
type: object
DataField:
description: A named data field that can be autofilled.
discriminator:
mapping:
image: '#/components/schemas/ImageDataField'
text: '#/components/schemas/TextDataField'
chart: '#/components/schemas/ChartDataField'
propertyName: type
oneOf:
- $ref: '#/components/schemas/ImageDataField'
- $ref: '#/components/schemas/TextDataField'
- $ref: '#/components/schemas/ChartDataField'
type: object
PngExportFormatOption:
description: Whether the design can be exported as a PNG.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
PrintPartnerDesignDimensionsUnits:
description: The units of the dimensions.
enum:
- in
- cm
- mm
type: string
CsvExportFormatOption:
description: Whether the design can be exported as a CSV file.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
PptxExportFormatOption:
description: Whether the design can be exported as a PPTX.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
PageDimensions:
description: The dimensions of a design page, if it is bounded. Design pages for non-bounded designs like Whiteboards and Docs will not include this property.
properties:
width:
description: The width of the design page in pixels.
example: 595
format: double
type: number
height:
description: The height of the design page in pixels.
example: 1295
format: double
type: number
required:
- height
- width
type: object
ImageDataField:
description: '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. Autofilling a video is currently a [preview feature](https://www.canva.dev/docs/connect/#preview-apis).'
properties:
type:
enum:
- image
type: string
required:
- type
type: object
PresetDesignTypeInput:
description: Provide the common design type.
properties:
type:
enum:
- preset
type: string
name:
$ref: '#/components/schemas/PresetDesignTypeName'
required:
- name
- type
type: object
Mp4ExportFormatOption:
description: Whether the design can be exported as an MP4.
properties:
page_numbers:
description: The page numbers in the design that support this export format, in ascending order. The first page in a design is page `1`. If omitted, the format is supported by all pages in the design.
example:
- 1
- 2
- 3
items:
format: int32
minimum: 1
type: integer
type: array
type: object
Thumbnail:
description: A thumbnail image representing the object.
properties:
width:
description: The width of the thumbnail image in pixels.
example: 595
format: int32
type: integer
height:
description: The height of the thumbnail image in pixels.
example: 335
format: int32
type: integer
url:
description: '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: https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?
type: string
required:
- height
- url
- width
type: object
PrintPartnerProductIdDesignSource:
description: Creates a design using an external partner product ID.
properties:
type:
enum:
- partner_product_id
type: string
partner_product_id:
description: The ID of the partner-defined product.
example: CVAFDC1091
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
required:
- partner_product_id
- type
type: object
Design:
description: The design object, which contains metadata about the design.
properties:
id:
description: The design ID.
example: DAFVztcvd9z
type: string
title:
description: The design title.
example: My summer holiday
type: string
owner:
$ref: '#/components/schemas/TeamUserSummary'
thumbnail:
$ref: '#/components/schemas/Thumbnail'
urls:
$ref: '#/components/schemas/DesignLinks'
created_at:
description: 'When the design was created in Canva, as a Unix timestamp (in seconds since the Unix
Epoch).'
example: 1377396000
format: int64
type: integer
updated_at:
description: 'When the design was last updated in Canva, as a Unix timestamp (in seconds since the
Unix Epoch).'
example: 1692928800
format: int64
type: integer
page_count:
description: The total number of pages in the design. Some design types don't have pages (for example, Canva docs).
example: 5
format: int32
minimum: 0
type: integer
design_types:
description: The type of content a design or page contains. The list of design types may grow over time. The `unknown` value represents design types that haven't been added to the list.
example:
- presentation
items:
$ref: '#/components/schemas/DesignTypeOutputName'
type: array
required:
- created_at
- design_types
- id
- owner
- updated_at
- urls
type: object
securitySchemes:
basicAuth:
scheme: basic
type: http
oauthAuthCode:
flows:
authorizationCode:
authorizationUrl: https://www.canva.com/api/oauth/authorize
scopes:
design:content:read: View the contents of the user's designs.
design:meta:read: View the metadata of the user's designs.
design:content:write: Create designs on the user's behalf.
folder:read: 'View the metadata and contents of the user''s folders, including their **Projects**
folder.'
folder:write: 'Add, move, or remove the user''s folders. It also lets you edit folder metadata,
such as the folder''s name.'
folder:permission:write: Set, update, or remove permissions assigned to the user's folders.
asset:read: View the metadata for the user's assets, such as uploaded images.
asset:write: Upload, update, or delete assets on the user's behalf.
comment:read: View the comments on the user's designs, and the associated metadata.
comment:write: Create comments and replies on the user's designs.
collaboration:event: Receive webhook notifications about events relevant to the user.
brandtemplate:meta:read: View the metadata of the brand templates associated with the user's brand.
brandtemplate:content:read: Read the content of the brand templates associated with the user's brand.
brandtemplate:content:write: Publish brand templates associated with the user's brand.
profile:read: Read a user's profile and account information.
openid: Read user information through Open ID Connect (OIDC).
profile: Read user profile information through OIDC.
email: Read user email address through OIDC.
tokenUrl: https://api.canva.com/rest/v1/oauth/token
type: oauth2