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