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.

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

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

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