The Canva Apps SDK, Connect APIs, and MCP are now unified in the Canva Developers SDK. Learn more⁠(opens in a new tab or window).
Canva Developers SDK
The Canva Apps SDK, Connect APIs, and MCP are now unified in the Canva Developers SDK. Learn more⁠(opens in a new tab or window).

canva-app.json

Configuration file for Canva apps.

The canva-app.json file is the configuration file for Canva apps. It defines the app's permissions, supported devices, API versions, and other runtime settings.

When you create a new app using the Canva CLI, a canva-app.json file is automatically created in your project root directory with a default configuration.

The canva-app.json schema is expanding. In the Developer Portal, the Canva REST APIs are becoming a capability you enable on an app (see the community announcement⁠(opens in a new tab or window)). Apps that use the REST APIs don't use canva-app.json today, and this file doesn't yet include REST API configuration for them. Support will follow in a later update, with further changes to this file expected.

File location

The canva-app.json file is located in the root directory of your app project.

my-canva-app/
├── canva-app.json
├── package.json
└── src/

Validation

The canva-app.json file is validated against the JSON Schema⁠(opens in a new tab or window). Most code editors with JSON Schema support provide validation and auto-completion when you include the $schema property.

Properties

$schema (optional)

  • Type: string
  • Description: JSON Schema URL for this manifest ($schema). Used by editors for validation and auto-completion.
{
"$schema": "https://www.canva.dev/schemas/app/v1/manifest-schema.json"
}
JSON

manifest_schema_version (required)

  • Type: integer
  • Description: The version of the manifest schema.
{
"manifest_schema_version": 1
}
JSON

runtime (required)

  • Type: object
  • Description: Application runtime configuration.

runtime.permissions (optional)

  • Type: array
  • Description: The list of permissions that this app requires to load or may ask for at runtime.

Each permission object must include:

  • name: The permission identifier
  • type: Must be "mandatory"

Available permissions:

  • canva:design:content:read: Permission to read design content
  • canva:design:content:write: Permission to write design content
  • canva:asset:private:read: Permission to read private assets
  • canva:asset:private:write: Permission to write private assets
  • canva:brandkit:read: Permission to read from the brand kit
  • canva:brandtemplate:read: Permission to read from brand templates

See Configuring permissions for more information.

{
"runtime": {
"permissions": [
{
"name": "canva:design:content:read",
"type": "mandatory"
},
{
"name": "canva:design:content:write",
"type": "mandatory"
}
]
}
}
JSON

intent (optional)

  • Type: object
  • Description: Intent-specific configuration.

For more information about intents, see Intents.

intent.data_connector (optional)

  • Type: object
  • Description: Configuration for the Data Connector intent.
{
"intent": {
"data_connector": {
"enrolled": true
}
}
}
JSON

intent.design_editor (optional)

  • Type: object
  • Description: Configuration for the Design Editor intent.
{
"intent": {
"design_editor": {
"enrolled": true
}
}
}
JSON

intent.content_publisher (optional)

  • Type: object
  • Description: Configuration for the Content Publisher intent.
{
"intent": {
"content_publisher": {
"enrolled": true
}
}
}
JSON

Example configuration

The following is a complete example of a canva-app.json file for a Data Connector app:

{
"$schema": "https://www.canva.dev/schemas/app/v1/manifest-schema.json",
"manifest_schema_version": 1,
"runtime": {
"permissions": [
{
"name": "canva:design:content:read",
"type": "mandatory"
},
{
"name": "canva:design:content:write",
"type": "mandatory"
}
]
},
"intent": {
"data_connector": {
"enrolled": true
}
}
}
JSON

Limitations

canva-app.json doesn't include every setting available for your app.

  • App name, description, icon, and other listing details aren't part of canva-app.json. Manage these in the Developer Portal under Release > App listing details.
  • Third-party OAuth, webhooks, and other REST API-based configuration aren't part of canva-app.json. Manage this configuration in the Developer Portal⁠(opens in a new tab or window).