Skip to main content
Canva logo

Overview

Add Canva to any ModuleX agent or workflow. Design platform integration for creating, listing, exporting, and importing visual content via the Canva Connect REST API (api.canva.com/rest/v1).
Categories: Productivity & Collaboration · Design & Creative Tools · Auth: OAuth2 · Actions: 5

Authentication

OAuth2 Authentication

Connect using Canva OAuth (recommended)

Required Credentials

FieldDescriptionRequiredFormat
Client IDCanva Connect API OAuth App Client IDYes-
Client SecretCanva Connect API OAuth App Client SecretYes-

OAuth Configuration

  • Authorization URL: https://www.canva.com/api/oauth/authorize
  • Token URL: https://api.canva.com/rest/v1/oauth/token
  • Scopes: design:content:read, design:content:write, design:meta:read, asset:read, asset:write

Available Actions

Parameters

design_type
string
required
The desired design type: ‘preset’ (provide design_type_name) or ‘custom’ (provide width and height)
title
string
The name of the design
asset_id
string
The ID of the asset to add to the new design
design_type_name
string
The preset design type name: ‘doc’, ‘whiteboard’, or ‘presentation’. Only applicable when design_type is ‘preset’
width
integer
Width in pixels (40-8000). Only applicable when design_type is ‘custom’
height
integer
Height in pixels (40-8000). Only applicable when design_type is ‘custom’

Response

{
  "$defs": {
    "DesignSummary": {
      "additionalProperties": false,
      "description": "A design object returned by Canva.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "owner": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Owner"
        },
        "thumbnail": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Thumbnail"
        },
        "urls": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Urls"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Updated At"
        }
      },
      "title": "DesignSummary",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "design": {
      "anyOf": [
        {
          "$ref": "#/$defs/DesignSummary"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateDesignOutput",
  "type": "object"
}

Parameters

title
string
required
The name for the imported design
file_url
string
required
URL of the file to import into Canva

Response

{
  "$defs": {
    "ImportJob": {
      "additionalProperties": false,
      "description": "A design import job status object.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "design_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Design Id"
        }
      },
      "title": "ImportJob",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "job": {
      "anyOf": [
        {
          "$ref": "#/$defs/ImportJob"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateDesignImportJobOutput",
  "type": "object"
}

Parameters

design_id
string
required
The ID of the design to export
format_type
string
required
Export format: ‘pdf’, ‘jpg’, ‘png’, ‘pptx’, ‘gif’, or ‘mp4’
pages
array
Array of page numbers (integers) to export. First page is 1. If omitted, all pages are exported
quality
integer
JPG quality 1-100. Only applicable for ‘jpg’ format
mp4_quality
string
MP4 resolution: ‘horizontal_480p’, ‘horizontal_720p’, ‘horizontal_1080p’, ‘horizontal_4k’, ‘vertical_480p’, ‘vertical_720p’, ‘vertical_1080p’, ‘vertical_4k’
size
string
PDF paper size: ‘a4’, ‘a3’, ‘letter’, or ‘legal’
lossless
boolean
Use lossless compression for PNG exports
as_single_image
boolean
Merge multi-page designs into a single PNG image
export_quality
string
Export quality tier: ‘regular’ or ‘pro’. Pro may fail for premium elements
height
integer
Export height in pixels. Applicable for jpg, png, gif formats
width
integer
Export width in pixels. Applicable for jpg, png, gif formats

Response

{
  "$defs": {
    "ExportJob": {
      "additionalProperties": false,
      "description": "An export job status object.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "urls": {
          "items": {
            "type": "string"
          },
          "title": "Urls",
          "type": "array"
        }
      },
      "title": "ExportJob",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "job": {
      "anyOf": [
        {
          "$ref": "#/$defs/ExportJob"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "ExportDesignOutput",
  "type": "object"
}

Parameters

query
string
Search keyword or phrase (max 255 characters)
continuation
string
Pagination cursor from a previous response to get the next page
ownership
string
Filter by ownership: ‘any’, ‘owned’, or ‘shared’ (Default: any)
sort_by
string
Sort order: ‘relevance’, ‘modified_descending’, ‘modified_ascending’, ‘title_descending’, ‘title_ascending’ (Default: relevance)
limit
integer
Maximum designs to return per request (1-100) (Default: 25)

Response

{
  "$defs": {
    "DesignSummary": {
      "additionalProperties": false,
      "description": "A design object returned by Canva.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "owner": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Owner"
        },
        "thumbnail": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Thumbnail"
        },
        "urls": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Urls"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Updated At"
        }
      },
      "title": "DesignSummary",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "items": {
      "items": {
        "$ref": "#/$defs/DesignSummary"
      },
      "title": "Items",
      "type": "array"
    },
    "continuation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Continuation"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListDesignsOutput",
  "type": "object"
}

Parameters

name
string
required
The asset’s name
file_url
string
required
URL of the file to upload as an asset to Canva

Response

{
  "$defs": {
    "UploadJob": {
      "additionalProperties": false,
      "description": "An asset upload job status object.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "asset": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Asset"
        }
      },
      "title": "UploadJob",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "job": {
      "anyOf": [
        {
          "$ref": "#/$defs/UploadJob"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "UploadAssetOutput",
  "type": "object"
}

Limits & Quotas

  • Rate limits: Canva Connect API enforces per-app rate limits (varies by plan; typically 100 requests/minute for standard apps).
  • Export/Import jobs: Asynchronous — the tool polls until completion (up to ~60 seconds). Large designs may take longer.
  • File uploads: Maximum file size varies by asset type (images up to 25 MB, videos up to 1 GB).
  • Error model: Non-2xx responses and timeouts are caught and returned as success=False + error rather than raising.

Cal.com

ConvertAPI

DocuSign