Urgent: `aiDisclosure` Breaking Change Causing Upload Failures - Request for Backward Compatibility

Dear Canva Developer Platform Team,

I'm writing to report a **critical breaking change** in the `@canva/asset` upload API that has been affecting many existing apps since approximately **January 13-14, 2026**.

---

## šŸ”“ Issue Summary

The `aiDisclosure` parameter in the `upload()` function appears to have become **mandatory** without prior deprecation notice. This change has caused widespread failures for users attempting to:

- Add assets to designs
- Upload to media library

**Affected API:**

```typescript
import { upload } from "@canva/asset";

await upload({
  type: "image",
  url: "https://example.com/image.jpg",
  mimeType: "image/jpeg",
  thumbnailUrl: "https://example.com/thumb.jpg",
  aiDisclosure: "none"  // ← Previously optional, now required
});


:clipboard: Request

To maintain backward compatibility and minimize disruption to the Canva app ecosystem, we kindly request:

  1. Default fallback behavior: If

    aiDisclosure

    is missing or invalid, default to

    "none"

    (matching previous behavior)

  2. Graceful deprecation: Instead of hard failures, show a console warning to guide developers:

    āš ļø Warning: 'aiDisclosure' will be required in a future version.
    Please update your integration. Defaulting to 'none'.
    See: https://www.canva.dev/docs/apps/asset-upload

  3. Advance notice: Provide a reasonable migration window (e.g., 30-60 days) before enforcing mandatory parameters


:light_bulb: Why This Matters

  • Many production apps are now broken without any code changes on our end

  • Users are experiencing failures with no clear error messaging

  • This undermines trust in the stability of the Canva platform APIs


:white_check_mark: Our Commitment

We fully understand and support the importance of AI disclosure for transparency. We are committed to updating our integration to comply with this requirement. We simply ask for a graceful transition period to:

  • Protect existing users from unexpected failures

  • Give developers adequate time to update their code

  • Maintain the stability of the Canva app ecosystem

Including evidence I found in other posts regarding this key being optional

Please ignore it, even if the application passes an incorrect value or no value at all. key:aiDisclosure

Hi @liu thanks for raising your concern. At Canva we greatly emphasise backwards compatibility for the benefit of developers and users so that Apps can have long lives with minimal maintenance and users can have certainty in their experiences of the platform.

The aiDisclosure field was added as a new required field part of the V2 release of the Canva Apps SDK in September 2024. Developers have had over 15 months to upgrade. It was a major release, though not a breaking change to existing apps.

Could you explain what behaviour you are seeing? Is it just the types that are failing or a runtime error? If it’s a error while using the app, it appears that you’ve uncovered a bug where the field is expected even for apps on v1 of the Apps SDK.

We needed to make the field required rather than default to ā€˜none’ to ensure no content is incorrectly undisclosed AI due to omission.

Hi,

Thanks for the clarification.

Actually, I upgraded to V2 quite early - in fact, my first version was already built on V2. However, the issue is about the enforcement timeline, not the field introduction itself.

What I observed:

  • Previously (until 2 days ago): passing aiDisclosure: 'ai' worked fine, and omitting it also worked

  • Since 2 days ago: suddenly it became strictly enforced, causing runtime errors

  • This affected both my production app and other apps I’ve seen

My concern:
While I understand the 15-month notice period for the field’s introduction, the strict enforcement appears to have been enabled very recently without a clear transition period or warning. This is different from just adding a new field.

Impact:

  • My production app is now broken

  • I’ve noticed other developers’ apps experiencing similar issues

  • Users are affected immediately

Suggestion:
I recommend implementing a proper transition strategy, such as:

  • A grace period with warnings before strict enforcement

  • Clear communication about enforcement timeline (not just field availability)

  • Perhaps defaulting to ā€˜none’ temporarily with deprecation warnings

Could you confirm when the strict enforcement was enabled? This would help us understand the actual timeline we had to adapt.

Thanks for your understanding.

Best regards,
Liu

Thanks for the reply, we are actively investigating could you please confirm:

  1. What are the name of the apps you have seen that are broken (including yours)? This will help us reproduce to aid our investigations
  2. What exact error message or behaviour are you seeing? Description, screenshots & copy paste would be very helpful
  3. Are you using typescript?
  4. Are you certain your version of asset from npm is also v2?

Yes, I’m 100% sure. I initially used v2

TypeScript, but I lazily used as any. ai image editor ,ai-age-filter … I hope you can set this parameter a bit more broadly first.

Thanks for clarifying Liu.

In addition to our docs which mentioned the field, the typescript types are also a mechanism of ensuring that you are aware of the correct usage of our API. We apologise that we didn’t also have runtime validation for V2 earlier.

Our plan is to revert the runtime validation for the time being but I recommend disclosing as soon as possible, it’s been 15 months since we announced it. Let me know if you have any trouble!

Thanks again for your report and swift responses, this aided us in getting to the bottom of the problem.

Hi John,

Thank you so much for the quick response and action! Really appreciate your team’s swift investigation and decision to revert the runtime validation temporarily.

I will immediately work with my team to update our code properly and add the aiDisclosure field to all relevant places. We’ll also remove those as any shortcuts and follow TypeScript types more strictly - lesson learned! :sweat_smile:

A suggestion for future rollouts:
I noticed many other apps seem to have the same issue. For similar breaking changes in the future, perhaps consider a progressive enforcement approach:

Phase 1: Warning logs (developers get alerted but apps still work)
Phase 2: Grace period with countdown notifications
Phase 3: Full enforcement
This would give developers time to react while maintaining platform stability.

Thanks again for your understanding and for working with the developer community. Your responsiveness really helps us maintain quality apps for Canva users.

Best regards,
Liu

Thanks for the thoughtful suggestions. Rest assured what you experienced was not intentional, our process will not cause working behaviour to become errors with no warning when all goes well, this was unintentional.

Glad to hear you’ll be adding the field. Great idea to switch to using TypeScript more fully, it will make things easier in the long run for you I’m sure!

Update: The fix is merged, any apps not sending this field should work again by tuesday.

We’ll work on a smooth transition for anyone else not using the types before reapplying the validation

Hi John,

Thank you and your team for your prompt response and action! We greatly appreciate your quick investigation and decision to temporarily reinstate runtime validation.

I will immediately work with my team to update the code correctly and add the aiDisclosure field in all relevant locations. We will also stop using any shortcuts and more strictly adhere to TypeScript type definitions—a great lesson learned! :blush:

I have already corrected and submitted the updated version for review.

However, I have a clarification question: Will incorrect values (like aiDisclosure: ā€˜ai’) be handled as part of this merge plan? I have several applications currently passing aiDisclosure: ā€˜ai’ instead of the correct enum values.:sob:

Hi @liu, thanks for your quick response.

I have already corrected and submitted the updated version for review.

To help our team quickly review the correct app, could you please supply your app ID? We will look to expedite the fix. Thanks in advance.

However, I have a clarification question: Will incorrect values (like aiDisclosure: ā€˜ai’) be handled as part of this merge plan? I have several applications currently passing aiDisclosure: ā€˜ai’ instead of the correct enum values.:sob:

As a once off, we plan to disable runtime validation for released app versions for a short period time including allowing incorrect values as a grace period. However new app versions should use the correct values (either none or app_generated) and may throw errors otherwise.

Hi Liu, confirming as of today the temporary fix Gordon mentioned (for apps not using typescript or passing incorrect values) is out.

All apps should be working again, regardless of whether the new versions have been launched. Glad to hear you’ve managed to submit the fixes as well!

1 Like