Canva Design API

The design API from Canva — 7 operation(s) for design.

Operations 8

GET /v1/designs #
POST /v1/designs #
GET /v1/designs/{designId} #
GET /v1/designs/{designId}/pages #
GET /v1/designs/{designId}/export-formats #
GET /v1/designs/{designId}/dataset #
POST /v1/print-partner/designs #
GET /v1/print-partner/designs/{designId} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canva-design-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

canva-design-api-openapi.yml Raw ↑
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: '<Warning>


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


        - There might be unannounced breaking changes.

        - Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).

        - Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.


        </Warning>


        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/).


        <Note>

        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.

        </Note>'
      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: '<Warning>


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


        - There might be unannounced breaking changes.

        - Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).

        - Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.


        </Warning>


        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.


        <Note>


        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/).


        </Note>


        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: '<Warning>


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


        - There might be unannounced breaking changes.

        - Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).

        - Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.


        </Warning>


        AVAILABILITY: 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: '<Warning>


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


        - There might be unannounced breaking changes.

        - Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).

        - Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.


        </Warning>


        AVAILABILITY: 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
   

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canva/refs/heads/main/openapi/canva-design-api-openapi.yml