> ## Documentation Index
> Fetch the complete documentation index at: https://www.klavis.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Setting Up Canva OAuth App

> Complete guide to creating and configuring a Canva OAuth application

## Prerequisites

* Canva account
* Multi-Factor Authentication (MFA) enabled on your Canva account

<Tip>
  Make sure your account has a password. Set it up by going to Settings > Login > Password.
</Tip>

**Without password configured:**

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step1_without_password.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=ffc3b4371e0e9bb0920349f1119e7261" alt="Canva Settings Without Password" width="1407" height="1155" data-path="images/knowledge-base/canva_oauth_app/step1_without_password.png" />

**With password configured (showing MFA option):**

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step1_with_password.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=0a0ccfe0688f61b415e5ac18a7947911" alt="Canva Settings With Password and MFA" width="1216" height="1250" data-path="images/knowledge-base/canva_oauth_app/step1_with_password.png" />

## Step 1: Create Canva Developer Account & Integration

1. Visit [https://developer.canva.com/](https://developer.canva.com/) and sign in with your Canva credentials
2. Navigate to **"Your integrations"** page
3. Click **"Create an integration"** and fill out the form:
   * **Integration type**: Choose between "Public" (available to all users after review) or "Private" (team only)
   * **Integration name**: Choose a descriptive name
   * Accept Canva's Developer Terms

## Step 2: Configure Integration Settings

1. Under **"Configuration"** → **"Configure your integration"**, set the following:
   * **Integration name**: Add your application name
   * **Client ID**: Make note of this value for later use
   * **Generate secret**: Click to generate and securely save your Client Secret

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step2_config.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=6b9cfe893ed821411e7b3aa79436e5aa" alt="Integration Configuration Settings" width="1456" height="843" data-path="images/knowledge-base/canva_oauth_app/step2_config.png" />

## Step 3: Set Required Scopes

<Note>
  Klavis Canva MCP Server uses the following OAuth scopes: `app:read app:write asset:read asset:write brandtemplate:content:read brandtemplate:meta:read comment:read comment:write design:content:read design:content:write design:meta:read design:permission:read design:permission:write folder:read folder:write folder:permission:read folder:permission:write profile:read`
</Note>

1. Under **"Scopes"** → **"Set the scopes"**, configure the required permissions as shown in the screenshot below:

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step3_scope.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=ffb11065cfa7b884ffbf66ad1133a19f" alt="OAuth Scopes Configuration" width="1397" height="1031" data-path="images/knowledge-base/canva_oauth_app/step3_scope.png" />

## Step 4: Configure Authentication & Redirect URLs

1. Under **"Authentication"** → **"Add Authentication"**, add redirect URL:
   * `https://api.klavis.ai/oauth/canva/callback`

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step4_redirect_url.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=a11a1059f7b72a1c72293a113a5a45e5" alt="Authentication and Redirect URL Configuration" width="1454" height="1059" data-path="images/knowledge-base/canva_oauth_app/step4_redirect_url.png" />

## Step 5: Submit for Review (Public Integrations Only)

<Note>
  If you created a "Private" integration, you can skip this step. Private integrations are immediately available to your team.
</Note>

For public integrations:

1. Complete all required configuration sections
2. Click **"Submit for Review"**
3. Wait for Canva's approval process

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step5_submit_for_review.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=b0b5fe98a84acffef977e34a8d300c86" alt="Submit Integration for Review" width="1264" height="1253" data-path="images/knowledge-base/canva_oauth_app/step5_submit_for_review.png" />

## Step 6: Integration Review Status

Once submitted, your integration will show "In Review" status. You'll receive email notifications about the review progress, and you will be asked to complete a questionnaire in the Jira ticket from the email.

<img src="https://mintcdn.com/klavisai/2FN45VVIW760Qvl2/images/knowledge-base/canva_oauth_app/step7_review_email.png?fit=max&auto=format&n=2FN45VVIW760Qvl2&q=85&s=4535ff4c3e889a6ecbca5566ff9a1bca" alt="Integration Review Email Questionnaire" width="729" height="1298" data-path="images/knowledge-base/canva_oauth_app/step7_review_email.png" />

<Check>
  You have successfully created a Canva OAuth application! You now have your Client ID and Client Secret ready for integration with Klavis AI.
</Check>

## (Optional) Step 7: White Labeling

<Note>
  White labeling allows you to customize the OAuth experience with your own branding instead of Klavis AI's.
</Note>

If you want to use your own Canva OAuth application with custom branding:

1. **Configure White Labeling**: Go to [https://www.klavis.ai/home/white-label](https://www.klavis.ai/home/white-label)
2. **Add Your Credentials**: Enter your Canva **Client ID** and **Client Secret** from Step 2
3. **Set Redirect URI**: Use `https://api.klavis.ai/oauth/canva/callback` or your custom callback URL
4. **Initiate OAuth**: Use your client ID when starting the OAuth flow:

   <CodeGroup>
     ```javascript without SDK theme={null}
     // Example: Initiating Canva OAuth with white-label
     const authUrl = `https://api.klavis.ai/oauth/canva/authorize?instance_id=${instanceId}&client_id=${yourClientId}`;
     window.location.href = authUrl;
     ```

     ```typescript TypeScript SDK theme={null}
     import { Klavis } from "@klavis/sdk";

     const klavis = new Klavis({
       apiKey: "YOUR_API_KEY"
     });

     // Example: Initiating Canva OAuth with white-label
     const oauthUrl = await klavis.mcpServer.getOAuthUrl({
       serverName: Klavis.McpServerName.Canva,
       instanceId: instanceId,
       clientId: yourClientId,
       // redirectUri: YOUR_REDIRECT_URI,
       // scope: "YOUR_SCOPES", 
     });

     window.location.href = oauthUrl;
     ```

     ```python Python SDK theme={null}
     import webbrowser
     from klavis import Klavis
     from klavis.types import McpServerName

     klavis = Klavis(api_key="YOUR_API_KEY")

     # Example: Initiating Canva OAuth with white-label
     oauth_url = klavis.mcp_server.get_oauth_url(
         server_name=McpServerName.CANVA,
         instance_id=instance_id,
         client_id=your_client_id,
         # redirect_uri="YOUR_REDIRECT_URI",
         # scope="YOUR_SCOPES"
     )

     # Open OAuth URL in user's default browser
     webbrowser.open(oauth_url)
     ```
   </CodeGroup>

<Tip>
  For detailed white labeling implementation and code examples, see our [OAuth & White Labeling guide](/auth/white-label).
</Tip>

## Resources

* [Canva Connect API Documentation](https://www.canva.dev/docs/connect/)
* [Canva OAuth 2.0 Authentication Guide](https://www.canva.dev/docs/connect/authentication/)
* [Klavis OAuth & White Labeling Guide](/auth/white-label)
* [Klavis White Label Dashboard](https://www.klavis.ai/home/white-label)
* [Canva Setting up Multi-Factor Authentication](https://www.canva.com/help/login-verification/)
