openapi: 3.1.0 info: title: Canva Connect API description: >- The Canva Connect API enables developers to integrate Canva's design platform into their applications. It provides programmatic access to create and manage designs, upload and manage assets, organize content in folders, export designs in multiple formats, manage comments, work with brand templates, autofill designs, and resize designs. version: 1.0.0 contact: name: Canva Developers url: https://www.canva.dev/docs/connect/ email: developers@canva.com license: name: Canva Developer Terms url: https://www.canva.com/policies/canva-developer-terms/ termsOfService: https://www.canva.com/policies/terms-of-use/ externalDocs: description: Canva Connect API Documentation url: https://www.canva.dev/docs/connect/ servers: - url: https://api.canva.com/rest/v1 description: Canva Production API security: - oauth2: [] tags: - name: Assets description: Upload and manage image and video assets - name: Autofills description: Create designs from brand templates using autofill data - name: Brand Templates description: List and retrieve brand templates and their datasets - name: Comments description: Create and manage comments on designs - name: Designs description: Create, retrieve, and list designs - name: Exports description: Export designs to PDF, PNG, JPG, GIF, PPTX, and MP4 - name: Folders description: Retrieve folders and list folder contents - name: Resizes description: Resize designs to different dimensions or preset types - name: Users description: Retrieve information about the authenticated user paths: /designs: get: operationId: listDesigns summary: Canva List Designs description: >- Lists designs accessible to the authenticated user. Supports searching by query, filtering by ownership, sorting, and pagination using continuation tokens. tags: - Designs security: - oauth2: - design:meta:read parameters: - name: query in: query description: Search term to filter designs (max 255 characters) schema: type: string maxLength: 255 example: example_value - name: ownership in: query description: Filter designs by ownership status schema: type: string enum: - any - owned - shared default: any example: any - name: sort_by in: query description: Sort order for results schema: type: string enum: - relevance - modified_descending - modified_ascending - title_descending - title_ascending default: relevance example: relevance - name: limit in: query description: Number of results per page schema: type: integer minimum: 1 maximum: 100 default: 25 example: 10 - name: continuation in: query description: Continuation token for paginated results schema: type: string example: example_value responses: '200': description: A paginated list of designs content: application/json: schema: $ref: '#/components/schemas/ListDesignsResponse' examples: Listdesigns200Example: summary: Default listDesigns 200 response x-microcks-default: true value: items: - id: abc123 title: Example Title created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' page_count: 10 continuation: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: operationId: createDesign summary: Canva Create a Design description: >- Creates a new design in Canva. The design can use a preset type (doc, whiteboard, or presentation) or custom dimensions. An optional asset can be inserted and a title can be specified. tags: - Designs security: - oauth2: - design:content:write requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDesignRequest' examples: CreatedesignRequestExample: summary: Default createDesign request x-microcks-default: true value: design_type: {} asset_id: '500123' title: Example Title responses: '200': description: The created design content: application/json: schema: $ref: '#/components/schemas/DesignResponse' examples: Createdesign200Example: summary: Default createDesign 200 response x-microcks-default: true value: design: id: abc123 title: Example Title created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' page_count: 10 '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /designs/{designId}: get: operationId: getDesign summary: Canva Get a Design description: >- Retrieves metadata for a specific design, including title, owner, URLs, timestamps, thumbnail, and page count. tags: - Designs security: - oauth2: - design:meta:read parameters: - $ref: '#/components/parameters/DesignId' responses: '200': description: The design metadata content: application/json: schema: $ref: '#/components/schemas/DesignResponse' examples: Getdesign200Example: summary: Default getDesign 200 response x-microcks-default: true value: design: id: abc123 title: Example Title created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' page_count: 10 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /assets/{assetId}: get: operationId: getAsset summary: Canva Get an Asset description: >- Retrieves metadata for a specific asset, including type, name, tags, owner, timestamps, thumbnail, and import status. tags: - Assets security: - oauth2: - asset:read parameters: - $ref: '#/components/parameters/AssetId' responses: '200': description: The asset metadata content: application/json: schema: $ref: '#/components/schemas/AssetResponse' examples: Getasset200Example: summary: Default getAsset 200 response x-microcks-default: true value: asset: id: abc123 type: image name: Example Title tags: - {} created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deleteAsset summary: Canva Delete an Asset description: Deletes an asset from the authenticated user's account. tags: - Assets security: - oauth2: - asset:write parameters: - $ref: '#/components/parameters/AssetId' responses: '204': description: Asset deleted successfully '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /asset-uploads: post: operationId: createAssetUploadJob summary: Canva Upload an Asset description: >- Uploads an image or video asset to the authenticated user's Canva account. The asset name is provided as a Base64-encoded string in the Asset-Upload-Metadata header. The request body contains the raw binary file content. tags: - Assets security: - oauth2: - asset:write parameters: - name: Asset-Upload-Metadata in: header required: true description: >- JSON object containing name_base64, the Base64-encoded asset name (1-50 characters before encoding) schema: type: string example: example_value requestBody: required: true content: application/octet-stream: schema: type: string format: binary examples: CreateassetuploadjobRequestExample: summary: Default createAssetUploadJob request x-microcks-default: true value: example_value responses: '200': description: The asset upload job content: application/json: schema: $ref: '#/components/schemas/AssetUploadJobResponse' examples: Createassetuploadjob200Example: summary: Default createAssetUploadJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress asset: id: abc123 type: image name: Example Title tags: {} created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' error: code: file_too_big message: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /asset-uploads/{jobId}: get: operationId: getAssetUploadJob summary: Canva Get Asset Upload Job description: >- Retrieves the status of an asset upload job. When complete, includes the uploaded asset metadata. tags: - Assets security: - oauth2: - asset:read parameters: - $ref: '#/components/parameters/JobId' responses: '200': description: The asset upload job status content: application/json: schema: $ref: '#/components/schemas/AssetUploadJobResponse' examples: Getassetuploadjob200Example: summary: Default getAssetUploadJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress asset: id: abc123 type: image name: Example Title tags: {} created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' error: code: file_too_big message: example_value '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /folders/{folderId}: get: operationId: getFolder summary: Canva Get a Folder description: >- Retrieves metadata for a specific folder, including name, timestamps, and thumbnail. tags: - Folders security: - oauth2: - folder:read parameters: - $ref: '#/components/parameters/FolderId' responses: '200': description: The folder metadata content: application/json: schema: $ref: '#/components/schemas/FolderResponse' examples: Getfolder200Example: summary: Default getFolder 200 response x-microcks-default: true value: folder: id: abc123 name: Example Title created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /folders/{folderId}/items: get: operationId: listFolderItems summary: Canva List Folder Items description: >- Lists items within a folder, including designs, subfolders, and images. Supports filtering by item type, sorting, pin status filtering, and pagination. tags: - Folders security: - oauth2: - folder:read parameters: - $ref: '#/components/parameters/FolderId' - name: item_types in: query description: Filter by item type schema: type: array items: type: string enum: - design - folder - image style: form explode: true example: [] - name: sort_by in: query description: Sort order for results schema: type: string enum: - created_ascending - created_descending - modified_ascending - modified_descending - title_ascending - title_descending example: created_ascending - name: limit in: query description: Number of results per page schema: type: integer minimum: 1 maximum: 100 default: 50 example: 10 - name: continuation in: query description: Continuation token for paginated results schema: type: string example: example_value - name: pin_status in: query description: Filter by pin status schema: type: string enum: - any - pinned default: any example: any responses: '200': description: A paginated list of folder items content: application/json: schema: $ref: '#/components/schemas/ListFolderItemsResponse' examples: Listfolderitems200Example: summary: Default listFolderItems 200 response x-microcks-default: true value: items: - type: design continuation: example_value '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /folders/{folderId}/items:move: post: operationId: moveFolderItem summary: Canva Move an Item to a Folder description: Moves a design, folder, or image into the specified folder. tags: - Folders security: - oauth2: - folder:write parameters: - $ref: '#/components/parameters/FolderId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MoveFolderItemRequest' examples: MovefolderitemRequestExample: summary: Default moveFolderItem request x-microcks-default: true value: item_id: '500123' item_type: design responses: '204': description: Item moved successfully '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /exports: post: operationId: createDesignExportJob summary: Canva Create a Design Export Job description: >- Creates an asynchronous job to export a design from Canva. Supported formats include PDF, JPG, PNG, GIF, PPTX, and MP4. Each format supports format-specific options such as quality, dimensions, page selection, and transparency. tags: - Exports security: - oauth2: - design:content:read requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateExportJobRequest' examples: CreatedesignexportjobRequestExample: summary: Default createDesignExportJob request x-microcks-default: true value: design_id: '500123' format: {} responses: '200': description: The export job content: application/json: schema: $ref: '#/components/schemas/ExportJobResponse' examples: Createdesignexportjob200Example: summary: Default createDesignExportJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress urls: - {} '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /exports/{exportId}: get: operationId: getDesignExportJob summary: Canva Get a Design Export Job description: >- Retrieves the status and results of an export job. When the job completes successfully, the response includes download URLs for the exported files, valid for 24 hours. tags: - Exports security: - oauth2: - design:content:read parameters: - $ref: '#/components/parameters/ExportId' responses: '200': description: The export job status and results content: application/json: schema: $ref: '#/components/schemas/ExportJobResponse' examples: Getdesignexportjob200Example: summary: Default getDesignExportJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress urls: - {} '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /comments: post: operationId: createComment summary: Canva Create a Comment description: >- Creates a new top-level comment on a design. Supports mentioning users using the [user_id:team_id] format in the message text. tags: - Comments security: - oauth2: - comment:write requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateCommentRequest' examples: CreatecommentRequestExample: summary: Default createComment request x-microcks-default: true value: attached_to: type: design design_id: '500123' message: example_value assignee_id: '500123' responses: '200': description: The created comment content: application/json: schema: $ref: '#/components/schemas/CommentResponse' examples: Createcomment200Example: summary: Default createComment 200 response x-microcks-default: true value: comment: type: parent id: abc123 message: example_value created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' mentions: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /comments/{commentId}/replies: post: operationId: createReply summary: Canva Create a Reply to a Comment description: Creates a reply to an existing comment thread on a design. tags: - Comments security: - oauth2: - comment:write parameters: - name: commentId in: path required: true description: The parent comment ID schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateReplyRequest' examples: CreatereplyRequestExample: summary: Default createReply request x-microcks-default: true value: attached_to: type: design design_id: '500123' message: example_value responses: '200': description: The created reply content: application/json: schema: $ref: '#/components/schemas/CommentResponse' examples: Createreply200Example: summary: Default createReply 200 response x-microcks-default: true value: comment: type: parent id: abc123 message: example_value created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' mentions: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /users/me: get: operationId: getUsersMe summary: Canva Get Current User description: >- Retrieves the user ID and team ID for the currently authenticated user. tags: - Users responses: '200': description: The current user details content: application/json: schema: $ref: '#/components/schemas/UsersMeResponse' examples: Getusersme200Example: summary: Default getUsersMe 200 response x-microcks-default: true value: team_user: user_id: '500123' team_id: '500123' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /brand-templates: get: operationId: listBrandTemplates summary: Canva List Brand Templates description: >- Lists brand templates available to the authenticated user. Supports searching, filtering by ownership and dataset availability, sorting, and pagination. Requires Canva Enterprise membership. tags: - Brand Templates security: - oauth2: - brandtemplate:meta:read parameters: - name: query in: query description: Search term to filter brand templates schema: type: string example: example_value - name: ownership in: query description: Filter by ownership status schema: type: string enum: - any - owned - shared default: any example: any - name: sort_by in: query description: Sort order for results schema: type: string enum: - relevance - modified_descending - modified_ascending - title_descending - title_ascending default: relevance example: relevance - name: dataset in: query description: Filter by dataset availability schema: type: string enum: - any - non_empty default: any example: any - name: limit in: query description: Number of results per page schema: type: integer minimum: 1 maximum: 100 default: 25 example: 10 - name: continuation in: query description: Continuation token for paginated results schema: type: string example: example_value responses: '200': description: A paginated list of brand templates content: application/json: schema: $ref: '#/components/schemas/ListBrandTemplatesResponse' examples: Listbrandtemplates200Example: summary: Default listBrandTemplates 200 response x-microcks-default: true value: items: - id: abc123 title: Example Title view_url: https://www.example.com create_url: https://www.example.com created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' continuation: example_value '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /brand-templates/{brandTemplateId}: get: operationId: getBrandTemplate summary: Canva Get a Brand Template description: >- Retrieves metadata for a specific brand template. Requires Canva Enterprise membership. tags: - Brand Templates security: - oauth2: - brandtemplate:meta:read parameters: - $ref: '#/components/parameters/BrandTemplateId' responses: '200': description: The brand template metadata content: application/json: schema: $ref: '#/components/schemas/BrandTemplateResponse' examples: Getbrandtemplate200Example: summary: Default getBrandTemplate 200 response x-microcks-default: true value: brand_template: id: abc123 title: Example Title view_url: https://www.example.com create_url: https://www.example.com created_at: '2026-01-15T10:30:00Z' updated_at: '2026-01-15T10:30:00Z' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /brand-templates/{brandTemplateId}/dataset: get: operationId: getBrandTemplateDataset summary: Canva Get a Brand Template Dataset description: >- Retrieves the autofill dataset for a brand template, listing the available data fields and their types (image, text, or chart). Requires Canva Enterprise membership. tags: - Brand Templates security: - oauth2: - brandtemplate:content:read parameters: - $ref: '#/components/parameters/BrandTemplateId' responses: '200': description: The brand template dataset content: application/json: schema: $ref: '#/components/schemas/BrandTemplateDatasetResponse' examples: Getbrandtemplatedataset200Example: summary: Default getBrandTemplateDataset 200 response x-microcks-default: true value: dataset: example_value '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /autofills: post: operationId: createDesignAutofillJob summary: Canva Create a Design Autofill Job description: >- Creates an asynchronous job to generate a new design by autofilling a brand template with provided data. Supports text, image, and chart data fields. tags: - Autofills security: - oauth2: - design:content:write requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAutofillJobRequest' examples: CreatedesignautofilljobRequestExample: summary: Default createDesignAutofillJob request x-microcks-default: true value: brand_template_id: '500123' title: Example Title data: example_value responses: '200': description: The autofill job content: application/json: schema: $ref: '#/components/schemas/AutofillJobResponse' examples: Createdesignautofilljob200Example: summary: Default createDesignAutofillJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress result: type: create_design error: code: autofill_error message: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /autofills/{jobId}: get: operationId: getDesignAutofillJob summary: Canva Get a Design Autofill Job description: >- Retrieves the status and results of a design autofill job. When successful, includes the generated design metadata. tags: - Autofills security: - oauth2: - design:content:read parameters: - $ref: '#/components/parameters/JobId' responses: '200': description: The autofill job status and results content: application/json: schema: $ref: '#/components/schemas/AutofillJobResponse' examples: Getdesignautofilljob200Example: summary: Default getDesignAutofillJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress result: type: create_design error: code: autofill_error message: example_value '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /resizes: post: operationId: createDesignResizeJob summary: Canva Create a Design Resize Job description: >- Creates an asynchronous job to resize a design to different dimensions or a preset type (doc, whiteboard, or presentation). The resize creates a new design without modifying the original. tags: - Resizes security: - oauth2: - design:content:read - design:content:write requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateResizeJobRequest' examples: CreatedesignresizejobRequestExample: summary: Default createDesignResizeJob request x-microcks-default: true value: design_id: '500123' design_type: {} responses: '200': description: The resize job content: application/json: schema: $ref: '#/components/schemas/ResizeJobResponse' examples: Createdesignresizejob200Example: summary: Default createDesignResizeJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress result: {} error: code: example_value message: example_value '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK /resizes/{jobId}: get: operationId: getDesignResizeJob summary: Canva Get a Design Resize Job description: >- Retrieves the status and results of a design resize job. When successful, includes the newly created design metadata. tags: - Resizes security: - oauth2: - design:content:read parameters: - $ref: '#/components/parameters/JobId' responses: '200': description: The resize job status and results content: application/json: schema: $ref: '#/components/schemas/ResizeJobResponse' examples: Getdesignresizejob200Example: summary: Default getDesignResizeJob 200 response x-microcks-default: true value: job: id: abc123 status: in_progress result: {} error: code: example_value message: example_value '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: oauth2: type: oauth2 description: >- Canva uses OAuth 2.0 with authorization code flow. Access tokens must be included in the Authorization header as a Bearer token. flows: authorizationCode: authorizationUrl: https://www.canva.com/api/oauth/authorize tokenUrl: https://api.canva.com/rest/v1/oauth/token scopes: design:meta:read: Read design metadata design:content:read: Read design content design:content:write: Create and modify designs asset:read: Read asset metadata asset:write: Upload and delete assets folder:read: Read folder metadata and contents folder:write: Modify folder contents comment:read: Read comments on designs comment:write: Create and manage comments brandtemplate:meta:read: Read brand template metadata brandtemplate:content:read: Read brand template content and datasets parameters: DesignId: name: designId in: path required: true description: The design ID schema: type: string AssetId: name: assetId in: path required: true description: The asset ID schema: type: string FolderId: name: folderId in: path required: true description: The folder ID schema: type: string ExportId: name: exportId in: path required: true description: The export job ID schema: type: string JobId: name: jobId in: path required: true description: The job ID schema: type: string BrandTemplateId: name: brandTemplateId in: path required: true description: The brand template ID schema: type: string schemas: Design: type: object description: A Canva design properties: id: type: string description: The design ID example: abc123 title: type: string description: The design title example: Example Title owner: $ref: '#/components/schemas/Owner' urls: $ref: '#/components/schemas/DesignUrls' created_at: type: integer description: Unix timestamp in seconds when the design was created example: '2026-01-15T10:30:00Z' updated_at: type: integer description: Unix timestamp in seconds when the design was last updated example: '2026-01-15T10:30:00Z' thumbnail: $ref: '#/components/schemas/Thumbnail' page_count: type: integer description: The number of pages in the design example: 10 required: - id - title - owner - urls - created_at - updated_at Owner: type: object description: The owner of a resource properties: user_id: type: string description: The user ID of the owner example: '500123' team_id: type: string description: The team ID of the owner example: '500123' required: - user_id - team_id DesignUrls: type: object description: Temporary URLs for accessing a design (expire after 30 days) properties: edit_url: type: string format: uri description: URL to edit the design (expires in 30 days) example: https://www.example.com view_url: type: string format: uri description: URL to view the design (expires in 30 days) example: https://www.example.com required: - edit_url - view_url Thumbnail: type: object description: A thumbnail image for a resource (URL expires in 15 minutes) properties: width: type: integer description: Thumbnail width in pixels example: 10 height: type: integer description: Thumbnail height in pixels example: 10 url: type: string format: uri description: Thumbnail URL (expires in 15 minutes) example: https://www.example.com required: - width - height - url Asset: type: object description: A Canva asset (image or video) properties: id: type: string description: The asset ID example: abc123 type: type: string description: The asset type enum: - image - video example: image name: type: string description: The asset name example: Example Title tags: type: array description: User-facing tags for the asset items: type: string example: [] created_at: type: integer description: Unix timestamp in seconds when the asset was created example: '2026-01-15T10:30:00Z' updated_at: type: integer description: Unix timestamp in seconds when the asset was last updated example: '2026-01-15T10:30:00Z' owner: $ref: '#/components/schemas/Owner' thumbnail: $ref: '#/components/schemas/Thumbnail' import_status: $ref: '#/components/schemas/ImportStatus' required: - id - type - name - created_at - updated_at - owner ImportStatus: type: object description: The import status of an asset (deprecated) deprecated: true properties: state: type: string description: The current import state enum: - failed - in_progress - success example: failed error: type: object description: Error details if the import failed properties: message: type: string description: Human-readable error message code: type: string description: Error code enum: - file_too_big - import_failed example: example_value Folder: type: object description: A Canva folder properties: id: type: string description: The folder ID example: abc123 name: type: string description: The folder name example: Example Title created_at: type: integer description: Unix timestamp in seconds when the folder was created example: '2026-01-15T10:30:00Z' updated_at: type: integer description: Unix timestamp in seconds when the folder was last updated example: '2026-01-15T10:30:00Z' thumbnail: $ref: '#/components/schemas/Thumbnail' required: - id - name - created_at - updated_at FolderItem: type: object description: An item within a folder (design, folder, or image) properties: type: type: string description: The type of folder item enum: - design - folder - image example: design design: $ref: '#/components/schemas/Design' folder: $ref: '#/components/schemas/Folder' image: $ref: '#/components/schemas/Asset' required: - type ExportJob: type: object description: An export job for converting a design to a downloadable format properties: id: type: string description: The export job ID example: abc123 status: type: string description: The current status of the export job enum: - in_progress - success - failed example: in_progress urls: type: array description: >- Download URLs for the exported files (valid for 24 hours). Present only when status is success. items: type: string format: uri example: https://www.example.com error: $ref: '#/components/schemas/ExportError' required: - id - status ExportError: type: object description: Error details for a failed export job properties: code: type: string description: Error code indicating the reason for failure enum: - license_required - approval_required - internal_failure example: license_required message: type: string description: Human-readable error message example: example_value required: - code - message Comment: type: object description: A comment on a design properties: type: type: string description: The comment type enum: - parent - reply example: parent id: type: string description: The comment ID example: abc123 message: type: string description: >- The comment text. User mentions use the format [user_id:team_id]. example: example_value author: $ref: '#/components/schemas/CommentUser' created_at: type: integer description: Unix timestamp in seconds when the comment was created example: '2026-01-15T10:30:00Z' updated_at: type: integer description: Unix timestamp in seconds when the comment was last updated example: '2026-01-15T10:30:00Z' mentions: type: object description: >- Dictionary of mentioned users, keyed by their mention identifier additionalProperties: $ref: '#/components/schemas/MentionedUser' example: example_value attached_to: $ref: '#/components/schemas/CommentAttachment' required: - type - id - message - author - created_at - updated_at CommentUser: type: object description: A user associated with a comment properties: id: type: string description: The user ID example: abc123 display_name: type: string description: The user display name deprecated: true example: example_value MentionedUser: type: object description: A user mentioned in a comment properties: user_id: type: string description: The mentioned user ID example: '500123' team_id: type: string description: The mentioned user team ID example: '500123' display_name: type: string description: The mentioned user display name example: example_value CommentAttachment: type: object description: The object a comment is attached to properties: type: type: string description: The attachment type enum: - design example: design design_id: type: string description: The design ID the comment is attached to example: '500123' required: - type - design_id BrandTemplate: type: object description: A Canva brand template (requires Enterprise) properties: id: type: string description: The brand template ID example: abc123 title: type: string description: The brand template title example: Example Title view_url: type: string format: uri description: URL to view the brand template example: https://www.example.com create_url: type: string format: uri description: URL to create a design from the brand template example: https://www.example.com created_at: type: integer description: Unix timestamp in seconds when the template was created example: '2026-01-15T10:30:00Z' updated_at: type: integer description: Unix timestamp in seconds when the template was last updated example: '2026-01-15T10:30:00Z' thumbnail: $ref: '#/components/schemas/Thumbnail' required: - id - title - created_at - updated_at DatasetField: type: object description: A data field in a brand template dataset properties: type: type: string description: The data field type enum: - image - text - chart example: image required: - type TeamUser: type: object description: The authenticated user and their team properties: user_id: type: string description: The user ID example: '500123' team_id: type: string description: The team ID example: '500123' required: - user_id - team_id DesignType: oneOf: - $ref: '#/components/schemas/PresetDesignType' - $ref: '#/components/schemas/CustomDesignType' description: The type and dimensions for a new design PresetDesignType: type: object description: A preset design type properties: type: type: string enum: - preset example: preset name: type: string description: The preset design type name enum: - doc - whiteboard - presentation example: doc required: - type - name CustomDesignType: type: object description: A custom design type with specific dimensions properties: type: type: string enum: - custom example: custom width: type: integer description: Width in pixels (40-8000) minimum: 40 maximum: 8000 example: 10 height: type: integer description: Height in pixels (40-8000) minimum: 40 maximum: 8000 example: 10 required: - type - width - height ExportFormat: oneOf: - $ref: '#/components/schemas/PdfExportFormat' - $ref: '#/components/schemas/JpgExportFormat' - $ref: '#/components/schemas/PngExportFormat' - $ref: '#/components/schemas/GifExportFormat' - $ref: '#/components/schemas/PptxExportFormat' - $ref: '#/components/schemas/Mp4ExportFormat' description: Export format configuration PdfExportFormat: type: object description: PDF export format options properties: type: type: string enum: - pdf example: pdf export_quality: type: string enum: - regular - pro default: regular example: regular size: type: string description: Paper size for the PDF enum: - a4 - a3 - letter - legal default: a4 example: a4 pages: type: array description: Page indices to export (exports all pages if omitted) items: type: integer example: [] required: - type JpgExportFormat: type: object description: JPG export format options properties: type: type: string enum: - jpg example: jpg quality: type: integer description: JPG compression quality (1-100) minimum: 1 maximum: 100 example: 10 export_quality: type: string enum: - regular - pro default: regular example: regular width: type: integer description: Output width in pixels minimum: 40 maximum: 25000 example: 10 height: type: integer description: Output height in pixels minimum: 40 maximum: 25000 example: 10 pages: type: array description: Page indices to export items: type: integer example: [] required: - type - quality PngExportFormat: type: object description: PNG export format options properties: type: type: string enum: - png example: png export_quality: type: string enum: - regular - pro default: regular example: regular width: type: integer description: Output width in pixels minimum: 40 maximum: 25000 example: 10 height: type: integer description: Output height in pixels minimum: 40 maximum: 25000 example: 10 lossless: type: boolean description: Whether to use lossless compression default: true example: true transparent_background: type: boolean description: Whether to use a transparent background default: false example: true as_single_image: type: boolean description: Whether to export all pages as a single image default: false example: true pages: type: array description: Page indices to export items: type: integer example: [] required: - type GifExportFormat: type: object description: GIF export format options properties: type: type: string enum: - gif example: gif export_quality: type: string enum: - regular - pro default: regular example: regular width: type: integer description: Output width in pixels minimum: 40 maximum: 25000 example: 10 height: type: integer description: Output height in pixels minimum: 40 maximum: 25000 example: 10 pages: type: array description: Page indices to export items: type: integer example: [] required: - type PptxExportFormat: type: object description: PowerPoint export format options properties: type: type: string enum: - pptx example: pptx pages: type: array description: Page indices to export items: type: integer example: [] required: - type Mp4ExportFormat: type: object description: MP4 video export format options properties: type: type: string enum: - mp4 example: mp4 quality: type: string description: Video quality and orientation enum: - horizontal_480p - horizontal_720p - horizontal_1080p - horizontal_4k - vertical_480p - vertical_720p - vertical_1080p - vertical_4k example: horizontal_480p export_quality: type: string enum: - regular - pro default: regular example: regular pages: type: array description: Page indices to export items: type: integer example: [] required: - type - quality AutofillDataValue: oneOf: - $ref: '#/components/schemas/AutofillTextValue' - $ref: '#/components/schemas/AutofillImageValue' - $ref: '#/components/schemas/AutofillChartValue' description: A data value for autofilling a design field AutofillTextValue: type: object description: Text data for autofill properties: type: type: string enum: - text example: text text: type: string description: The text content example: example_value required: - type - text AutofillImageValue: type: object description: Image data for autofill properties: type: type: string enum: - image example: image asset_id: type: string description: The asset ID of the image to use example: '500123' required: - type - asset_id AutofillChartValue: type: object description: Chart data for autofill (preview feature) properties: type: type: string enum: - chart example: chart chart_data: type: object description: Tabular data for the chart properties: rows: type: array description: Chart data rows (max 100) maxItems: 100 items: type: object properties: cells: type: array description: Cell values in the row (max 20) maxItems: 20 items: type: object properties: type: type: string enum: - string - number - boolean - date value: type: string description: The cell value required: - type - value required: - cells required: - rows example: example_value required: - type - chart_data AutofillJob: type: object description: An autofill job for generating designs from brand templates properties: id: type: string description: The autofill job ID example: abc123 status: type: string description: The current status of the autofill job enum: - in_progress - success - failed example: in_progress result: type: object description: The autofill result (present when status is success) properties: type: type: string enum: - create_design design: $ref: '#/components/schemas/Design' required: - type - design example: example_value error: type: object description: Error details (present when status is failed) properties: code: type: string description: Error code enum: - autofill_error - thumbnail_generation_error - create_design_error message: type: string description: Human-readable error message required: - code - message example: example_value required: - id - status ResizeJob: type: object description: A resize job for creating a resized copy of a design properties: id: type: string description: The resize job ID example: abc123 status: type: string description: The current status of the resize job enum: - in_progress - success - failed example: in_progress result: type: object description: The resize result (present when status is success) properties: design: $ref: '#/components/schemas/Design' example: example_value error: type: object description: Error details (present when status is failed) properties: code: type: string description: Error code message: type: string description: Human-readable error message required: - code - message example: example_value required: - id - status Error: type: object description: An error response properties: code: type: string description: Machine-readable error code example: example_value message: type: string description: Human-readable error message example: example_value required: - code - message CreateDesignRequest: type: object description: Request body for creating a new design properties: design_type: $ref: '#/components/schemas/DesignType' asset_id: type: string description: An image asset ID to insert into the design example: '500123' title: type: string description: The design title (1-255 characters) minLength: 1 maxLength: 255 example: Example Title required: - design_type CreateExportJobRequest: type: object description: Request body for creating an export job properties: design_id: type: string description: The design ID to export example: '500123' format: $ref: '#/components/schemas/ExportFormat' required: - design_id - format CreateCommentRequest: type: object description: Request body for creating a comment properties: attached_to: $ref: '#/components/schemas/CommentAttachment' message: type: string description: >- Comment text (1-2048 characters). Mention users with [user_id:team_id] format. minLength: 1 maxLength: 2048 example: example_value assignee_id: type: string description: User ID to assign the comment to deprecated: true example: '500123' required: - attached_to - message CreateReplyRequest: type: object description: Request body for creating a reply to a comment properties: attached_to: $ref: '#/components/schemas/CommentAttachment' message: type: string description: Reply text (1-2048 characters) minLength: 1 maxLength: 2048 example: example_value required: - attached_to - message CreateAutofillJobRequest: type: object description: Request body for creating a design autofill job properties: brand_template_id: type: string description: The brand template ID to autofill example: '500123' title: type: string description: >- Title for the generated design (1-255 characters). Defaults to the brand template title. minLength: 1 maxLength: 255 example: Example Title data: type: object description: >- Data fields to populate, keyed by field name from the brand template dataset additionalProperties: $ref: '#/components/schemas/AutofillDataValue' example: example_value required: - brand_template_id - data CreateResizeJobRequest: type: object description: Request body for creating a design resize job properties: design_id: type: string description: The design ID to resize example: '500123' design_type: $ref: '#/components/schemas/DesignType' required: - design_id - design_type MoveFolderItemRequest: type: object description: Request body for moving an item to a folder properties: item_id: type: string description: The ID of the item to move example: '500123' item_type: type: string description: The type of item to move enum: - design - folder - image example: design required: - item_id - item_type DesignResponse: type: object properties: design: $ref: '#/components/schemas/Design' required: - design AssetResponse: type: object properties: asset: $ref: '#/components/schemas/Asset' required: - asset AssetUploadJobResponse: type: object properties: job: type: object properties: id: type: string description: The upload job ID status: type: string description: The current status of the upload job enum: - in_progress - success - failed asset: $ref: '#/components/schemas/Asset' error: type: object properties: code: type: string enum: - file_too_big - import_failed - fetch_failed message: type: string required: - id - status example: example_value required: - job FolderResponse: type: object properties: folder: $ref: '#/components/schemas/Folder' required: - folder ListDesignsResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/Design' example: [] continuation: type: string description: Continuation token for the next page of results example: example_value required: - items ListFolderItemsResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/FolderItem' example: [] continuation: type: string description: Continuation token for the next page of results example: example_value required: - items ExportJobResponse: type: object properties: job: $ref: '#/components/schemas/ExportJob' required: - job CommentResponse: type: object properties: comment: $ref: '#/components/schemas/Comment' required: - comment UsersMeResponse: type: object properties: team_user: $ref: '#/components/schemas/TeamUser' required: - team_user ListBrandTemplatesResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/BrandTemplate' example: [] continuation: type: string description: Continuation token for the next page of results example: example_value required: - items BrandTemplateResponse: type: object properties: brand_template: $ref: '#/components/schemas/BrandTemplate' required: - brand_template BrandTemplateDatasetResponse: type: object properties: dataset: type: object description: >- Dataset fields available for autofill, keyed by field name additionalProperties: $ref: '#/components/schemas/DatasetField' example: example_value required: - dataset AutofillJobResponse: type: object properties: job: $ref: '#/components/schemas/AutofillJob' required: - job ResizeJobResponse: type: object properties: job: $ref: '#/components/schemas/ResizeJob' required: - job responses: BadRequest: description: Bad request - invalid parameters or request body content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/Error' Forbidden: description: Forbidden - insufficient permissions or scopes content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Not found - the requested resource does not exist content: application/json: schema: $ref: '#/components/schemas/Error' TooManyRequests: description: Too many requests - rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error'