Canva Comment API
The comment API from Canva — 5 operation(s) for comment.
The comment API from Canva — 5 operation(s) for comment.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/canva-comment-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
name: Canva Developer Community
url: https://community.canva.dev/
description: API for building integrations with Canva via a REST api
license:
name: ©2023 All Rights Reserved
termsOfService: https://www.canva.com/trust/legal/
title: Canva Connect Comment API
version: 2024-06-18
servers:
- description: Canva Connect API
url: https://api.canva.com/rest
tags:
- name: comment
paths:
/v1/comments:
post:
deprecated: true
description: '<Warning>
This preview API is deprecated. You should use the [Create thread](https://www.canva.dev/docs/connect/api-reference/comments/create-thread/) API instead.
</Warning>
Create a new top-level comment on a design.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/). A design can have a maximum
of 1000 comments.'
operationId: createComment
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCommentRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCommentResponse'
description: OK
'400':
content:
application/json:
examples:
assignee_not_mentioned:
$ref: '#/components/examples/AssigneeNotMentionedError'
message_too_long:
$ref: '#/components/examples/MessageTooLongError'
invalid_mention_ids:
$ref: '#/components/examples/InvalidMentionIdsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
too_many_comments:
$ref: '#/components/examples/TooManyCommentsError'
not_allowed_to_comment:
$ref: '#/components/examples/NotAllowedToCommentError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_not_found:
$ref: '#/components/examples/DesignNotFoundError'
mentioned_user_not_found:
$ref: '#/components/examples/MentionedUserNotFoundError'
mentioned_team_not_found:
$ref: '#/components/examples/MentionedTeamNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:write
tags:
- comment
x-rate-limit-per-client-user: 20
/v1/designs/{designId}/comments/{threadId}/replies:
get:
description: '<Warning>
This API is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.
</Warning>
Retrieves a list of replies for a comment or suggestion thread on a design.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/).'
operationId: listReplies
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: The ID of the thread.
example: KeAbiEAjZEj
explode: false
in: path
name: threadId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- explode: true
in: query
name: limit
required: false
schema:
default: 50
description: The number of replies to return.
format: int32
maximum: 100
minimum: 1
type: integer
style: form
- description: 'If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.
To retrieve all items, you might need to make multiple requests.'
explode: true
in: query
name: continuation
required: false
schema:
type: string
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListRepliesResponse'
description: OK
'403':
content:
application/json:
examples:
not_allowed_to_fetch_replies:
$ref: '#/components/examples/NotAllowedToFetchRepliesError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_or_thread_not_found:
$ref: '#/components/examples/DesignOrThreadNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:read
tags:
- comment
x-rate-limit-per-client-user: 100
post:
description: '<Warning>
This API is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.
</Warning>
Creates a reply to a comment or suggestion thread on a design.
To reply to an existing thread, you must provide the ID of the thread
which is returned when a thread is created, or from the `thread_id` value
of an existing reply in the thread. Each thread can
have a maximum of 100 replies created for it.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/).'
operationId: createReply
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: The ID of the thread.
example: KeAbiEAjZEj
explode: false
in: path
name: threadId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateReplyV2Request'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateReplyV2Response'
description: OK
'400':
content:
application/json:
examples:
message_too_long:
$ref: '#/components/examples/MessageTooLongError'
invalid_mention_ids:
$ref: '#/components/examples/InvalidMentionIdsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
too_many_replies:
$ref: '#/components/examples/TooManyRepliesError'
not_allowed_to_reply:
$ref: '#/components/examples/NotAllowedToReplyError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_or_comment_not_found:
$ref: '#/components/examples/DesignOrCommentNotFoundForReplyError'
mentioned_user_not_found:
$ref: '#/components/examples/MentionedUserNotFoundError'
mentioned_team_not_found:
$ref: '#/components/examples/MentionedTeamNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:write
tags:
- comment
x-rate-limit-per-client-user: 20
/v1/designs/{designId}/comments/{threadId}:
get:
description: '<Warning>
This API is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.
</Warning>
Gets a comment or suggestion thread on a design.
To retrieve a reply to a comment thread, use the [Get reply](https://www.canva.dev/docs/connect/api-reference/comments/get-reply/) API.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/).'
operationId: getThread
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: The ID of the thread.
example: KeAbiEAjZEj
explode: false
in: path
name: threadId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetThreadResponse'
description: OK
'403':
content:
application/json:
examples:
not_allowed_to_fetch_comment:
$ref: '#/components/examples/NotAllowedToFetchCommentError'
not_allowed_to_fetch_suggestion:
$ref: '#/components/examples/NotAllowedToFetchSuggestionError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
thread_not_found:
$ref: '#/components/examples/ThreadNotFoundError'
thread_not_attached_to_design:
$ref: '#/components/examples/ThreadNotAttachedToDesignError'
suggestion_not_found:
$ref: '#/components/examples/SuggestionNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:read
tags:
- comment
x-rate-limit-per-client-user: 100
/v1/designs/{designId}/comments/{threadId}/replies/{replyId}:
get:
description: '<Warning>
This API is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.
</Warning>
Gets a reply to a comment or suggestion thread on a design.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/).'
operationId: getReply
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: The ID of the thread.
example: KeAbiEAjZEj
explode: false
in: path
name: threadId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
- description: The ID of the reply.
example: KeAZEAjijEb
explode: false
in: path
name: replyId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetReplyResponse'
description: OK
'403':
content:
application/json:
examples:
not_allowed_to_fetch_reply:
$ref: '#/components/examples/NotAllowedToFetchReplyError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
reply_not_found:
$ref: '#/components/examples/ReplyNotFoundError'
suggestion_reply_not_found:
$ref: '#/components/examples/SuggestionReplyNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:read
tags:
- comment
x-rate-limit-per-client-user: 100
/v1/designs/{designId}/comments:
post:
description: '<Warning>
This API is currently provided as a preview. Be aware of the following:
- There might be unannounced breaking changes.
- Any breaking changes to preview APIs won''t produce a new [API version](https://www.canva.dev/docs/connect/versions/).
- Public integrations that use preview APIs will not pass the review process, and can''t be made available to all Canva users.
</Warning>
Creates a new comment thread on a design.
For information on comments and how they''re used in the Canva UI, see the
[Canva Help Center](https://www.canva.com/help/comments/).'
operationId: createThread
parameters:
- description: The design ID.
explode: false
in: path
name: designId
required: true
schema:
pattern: ^[a-zA-Z0-9_-]{1,50}$
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateThreadRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateThreadResponse'
description: OK
'400':
content:
application/json:
examples:
assignee_not_mentioned:
$ref: '#/components/examples/AssigneeNotMentionedError'
message_too_long:
$ref: '#/components/examples/MessageTooLongError'
invalid_mention_ids:
$ref: '#/components/examples/InvalidMentionIdsError'
schema:
$ref: '#/components/schemas/Error'
description: Bad Request
'403':
content:
application/json:
examples:
too_many_comments:
$ref: '#/components/examples/TooManyCommentsError'
not_allowed_to_comment:
$ref: '#/components/examples/NotAllowedToCommentError'
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
examples:
design_not_found:
$ref: '#/components/examples/DesignNotFoundError'
mentioned_user_not_found:
$ref: '#/components/examples/MentionedUserNotFoundError'
mentioned_team_not_found:
$ref: '#/components/examples/MentionedTeamNotFoundError'
schema:
$ref: '#/components/schemas/Error'
description: Not Found
default:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Error Response
security:
- oauthAuthCode:
- comment:write
tags:
- comment
x-rate-limit-per-client-user: 100
components:
examples:
ReplyNotFoundError:
summary: Reply not found
value:
code: reply_not_found
message: Reply with ID {replyId} not found
NotAllowedToFetchRepliesError:
summary: Not allowed to fetch replies
value:
code: permission_denied
message: Not allowed to fetch replies
DesignOrCommentNotFoundForReplyError:
summary: Design or comment not found
value:
code: design_not_found
message: Design or comment not found
MentionedTeamNotFoundError:
summary: A mentioned user's team could not be found
value:
code: team_not_found
message: Invalid brand ID
SuggestionNotFoundError:
summary: No suggestion thread with ID found
value:
code: thread_not_found
message: Suggestion with ID {threadId} not found
AssigneeNotMentionedError:
summary: Assignee must be mentioned in comment content
value:
code: bad_request_body
message: Assignee must be mentioned in comment content
NotAllowedToCommentError:
summary: Not allowed to comment on this design
value:
code: permission_denied
message: Not allowed to comment on this design
NotAllowedToFetchSuggestionError:
summary: Not allowed to fetch this suggestion
value:
code: permission_denied
message: Not allowed to fetch this suggestion
MessageTooLongError:
summary: Message is too long
value:
code: message_too_long
message: Message is too long
NotAllowedToReplyError:
summary: Not allowed to reply on this design
value:
code: permission_denied
message: Not allowed to reply on this design
InvalidMentionIdsError:
summary: Mentions with non-obfuscated IDs are not allowed for this client
value:
code: invalid_field
message: Invalid IDs
ThreadNotAttachedToDesignError:
summary: Thread not attached to design
value:
code: thread_not_found
message: Thread with ID {threadId} is not attached to design {designId}, or design not found
ThreadNotFoundError:
summary: No thread with ID found
value:
code: thread_not_found
message: No thread with ID {threadId} found
TooManyRepliesError:
summary: This comment thread already has the maximum number of allowed replies
value:
code: too_many_replies
message: This comment thread already has the maximum number of allowed replies
DesignNotFoundError:
summary: Design not found
value:
code: design_not_found
message: Design not found
TooManyCommentsError:
summary: Design already has the maximum number of allowed comments
value:
code: too_many_comments
message: Design already has the maximum number of allowed comments
MentionedUserNotFoundError:
summary: A mentioned user could not be found
value:
code: user_not_found
message: Invalid user ID
NotAllowedToFetchCommentError:
summary: Not allowed to fetch this comment
value:
code: permission_denied
message: Not allowed to fetch this comment
DesignOrThreadNotFoundError:
summary: Design or comment not found
value:
code: design_or_thread_not_found
message: Design or comment not found
NotAllowedToFetchReplyError:
summary: Not allowed to fetch this reply
value:
code: permission_denied
message: Not allowed to fetch this reply
SuggestionReplyNotFoundError:
summary: Suggestion reply not found
value:
code: reply_not_found
message: Suggestion reply with ID {replyId} not found
schemas:
Reply:
description: 'A reply to a thread.
The `author` of the reply might be missing if that user account no longer exists.'
properties:
id:
description: The ID of the reply.
example: KeAZEAjijEb
type: string
design_id:
description: The ID of the design that the thread for this reply is attached to.
example: DAFVztcvd9z
type: string
thread_id:
description: The ID of the thread this reply is in.
example: KeAbiEAjZEj
type: string
author:
$ref: '#/components/schemas/User'
content:
$ref: '#/components/schemas/CommentContent'
mentions:
additionalProperties:
$ref: '#/components/schemas/UserMention'
description: The Canva users mentioned in the comment thread or reply.
example:
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
tag: oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP
user:
user_id: oUnPjZ2k2yuhftbWF7873o
team_id: oBpVhLW22VrqtwKgaayRbP
display_name: John Doe
type: object
created_at:
description: 'When the reply was created, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692929800
format: int64
type: integer
updated_at:
description: 'When the reply was last updated, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692929900
format: int64
type: integer
required:
- content
- created_at
- design_id
- id
- mentions
- thread_id
- updated_at
type: object
DesignCommentObjectInput:
description: If the comment is attached to a Canva Design.
properties:
type:
enum:
- design
type: string
design_id:
description: The ID of the design you want to attach this comment to.
example: DAFVztcvd9z
type: string
required:
- design_id
- type
type: object
ParentComment:
deprecated: true
description: 'Data about the comment, including the message, author, and
the object (such as a design) the comment is attached to.'
properties:
type:
enum:
- parent
type: string
id:
description: 'The ID of the comment.
You can use this ID to create replies to the comment using the [Create reply API](https://www.canva.dev/docs/connect/api-reference/comments/create-reply/).'
example: KeAbiEAjZEj
type: string
attached_to:
$ref: '#/components/schemas/CommentObject'
message:
description: 'The comment message. This is the comment body shown in the Canva UI.
User mentions are shown here in the format `[user_id:team_id]`.'
example: Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!
type: string
author:
$ref: '#/components/schemas/User'
created_at:
description: 'When the comment or reply was created, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692928800
format: int64
type: integer
updated_at:
description: 'When the comment or reply was last updated, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692928900
format: int64
type: integer
mentions:
additionalProperties:
$ref: '#/components/schemas/TeamUser'
deprecated: true
description: The Canva users mentioned in the comment.
example:
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
user_id: oUnPjZ2k2yuhftbWF7873o
team_id: oBpVhLW22VrqtwKgaayRbP
display_name: John Doe
type: object
assignee:
$ref: '#/components/schemas/User'
resolver:
$ref: '#/components/schemas/User'
required:
- author
- id
- mentions
- message
- type
type: object
SuggestionThreadType:
description: A suggestion thread.
properties:
type:
enum:
- suggestion
type: string
suggested_edits:
items:
$ref: '#/components/schemas/SuggestedEdit'
minItems: 1
type: array
status:
$ref: '#/components/schemas/SuggestionStatus'
required:
- status
- suggested_edits
- type
type: object
CommentObject:
deprecated: true
description: Identifying information about the object (such as a design) that the comment is attached to.
discriminator:
mapping:
design: '#/components/schemas/DesignCommentObject'
propertyName: type
example:
design_id: DAFVztcvd9z
type: design
oneOf:
- $ref: '#/components/schemas/DesignCommentObject'
type: object
ListRepliesResponse:
description: Successful response from a `listReplies` request.
properties:
continuation:
description: 'If the success response contains a continuation token, the list contains more items
you can list. You can use this token as a query parameter and retrieve more items
from the list, for example `?continuation={continuation}`.
To retrieve all items, you might need to make multiple requests.'
example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
type: string
items:
items:
$ref: '#/components/schemas/Reply'
type: array
required:
- items
type: object
Comment:
deprecated: true
description: 'The comment object, which contains metadata about the comment.
Deprecated in favor of the new `thread` object.'
discriminator:
mapping:
parent: '#/components/schemas/ParentComment'
reply: '#/components/schemas/ReplyComment'
propertyName: type
oneOf:
- $ref: '#/components/schemas/ParentComment'
- $ref: '#/components/schemas/ReplyComment'
type: object
DesignCommentObject:
deprecated: true
description: If the comment is attached to a Canva Design.
properties:
type:
enum:
- design
type: string
design_id:
description: The ID of the design this comment is attached to.
example: DAFVztcvd9z
type: string
required:
- design_id
- type
type: object
ReplyComment:
deprecated: true
description: 'Data about the reply comment, including the message, author, and
the object (such as a design) the comment is attached to.'
properties:
type:
enum:
- reply
type: string
id:
description: The ID of the comment.
example: KeAZEAjijEb
type: string
attached_to:
$ref: '#/components/schemas/CommentObject'
message:
description: 'The comment message. This is the comment body shown in the Canva UI.
User mentions are shown here in the format `[user_id:team_id]`.'
example: Thanks!
type: string
author:
$ref: '#/components/schemas/User'
created_at:
description: 'When the comment or reply was created, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692929800
format: int64
type: integer
updated_at:
description: 'When the comment or reply was last updated, as a Unix timestamp
(in seconds since the Unix Epoch).'
example: 1692929900
format: int64
type: integer
mentions:
additionalProperties:
$ref: '#/components/schemas/TeamUser'
deprecated: true
description: The Canva users mentioned in the comment.
example:
oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP:
user_id: oUnPjZ2k2yuhftbWF7873o
team_id: oBpVhLW22VrqtwKgaayRbP
display_name: John Doe
type: object
thread_id:
description: 'The ID of the comment thread this reply is in. This ID is the same as the `id` of the
parent comment.'
example: KeAbiEAjZEj
type: string
required:
- author
- id
- mentions
- message
- thread_id
- type
type: object
CreateCommentResponse:
properties:
comment:
$ref: '#/components/schemas/ParentComment'
required:
- comment
type: object
CreateThreadResponse:
properties:
thread:
$ref: '#/components/schemas/Thread'
required:
- thread
type: object
CreateReplyV2Response:
properties:
reply:
$ref: '#/components/schemas/Reply'
required:
- reply
type: object
Thread:
description: 'A discussion thread on a design.
The `type` of the thread can be found in the `thread_type` object, along with additional type-specific properties.
The `author` of the thread might be missing if that user account no longer exists.'
properties:
id:
description: 'The ID of the thread.
You can use this ID to create replies to the thread using the [Create reply API](https://www.canva.dev/docs/connect/api-reference/comments/create-reply/).'
example: KeAbiEAjZEj
type: string
design_id:
description: The ID of the design that the discussion thread is on.
example: DAFVztcvd9z
type: string
thread_type:
$ref: '#/components/schemas/ThreadType'
author:
$ref: '#/components/schemas/User'
created_at:
description: 'When the thread was created, as a Unix timestamp
(in seconds since the Unix Epoch).'
ex
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canva/refs/heads/main/openapi/canva-comment-api-openapi.yml