Get reply

Get a comment reply.

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.
  • Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users.

Gets a reply to a comment thread. For information on comments and how they're used in the Canva UI, see the Canva Help Center(opens in a new tab or window).

HTTP method and URL path

GET https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}

This operation is rate limited to 100 requests per minute for each user of your integration.

Authentication

This endpoint requires a valid access token that acts on behalf of a user. The token must have the following scopes (permissions):

  • comment:read

For more information, see Scopes.

Header parameters

Authorizationstring
REQUIRED

Provides credentials to authenticate the request, in the form of a Bearer token.

For example: Authorization: Bearer {token}

Path parameters

designIdstring
REQUIRED

The design ID.

threadIdstring
REQUIRED

The ID of the thread.

replyIdstring
REQUIRED

The ID of the reply.

Example request

Examples for using the /v1/designs/{designId}/comments/{threadId}/replies/{replyId} endpoint:

curl --request GET 'https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}' \
--header 'Authorization: Bearer {token}'
SH
const fetch = require("node-fetch");
fetch("https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}", {
method: "GET",
headers: {
"Authorization": "Bearer {token}",
},
})
.then(async (response) => {
const data = await response.json();
console.log(data);
})
.catch(err => console.error(err));
JS
import java.io.IOException;
import java.net.URI;
import java.net.http.*;
public class ApiExample {
public static void main(String[] args) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}"))
.header("Authorization", "Bearer {token}")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}
JAVA
import requests
headers = {
"Authorization": "Bearer {token}"
}
response = requests.get("https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}",
headers=headers
)
print(response.json())
PY
using System.Net.Http;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}"),
Headers =
{
{ "Authorization", "Bearer {token}" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
};
CSHARP
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer {token}")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
GO
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}",
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer {token}',
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if (empty($err)) {
echo $response;
} else {
echo "Error: " . $err;
}
PHP
require 'net/http'
require 'uri'
url = URI('https://api.canva.com/rest/v1/designs/{designId}/comments/{threadId}/replies/{replyId}')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request['Authorization'] = 'Bearer {token}'
response = http.request(request)
puts response.read_body
RUBY

Success response

If successful, the endpoint returns a 200 response with a JSON body with the following parameters:

replyReply

A reply to a thread.

The author of the reply might be missing if that user account no longer exists.

Properties of reply
idstring

The ID of the reply.

design_idstring

The ID of the design that the thread for this reply is attached to.

thread_idstring

The ID of the thread this reply is in.

contentCommentContent

The content of a comment thread or reply.

Properties of content
plaintextstring

The content in plaintext. Any user mention tags are shown in the format [user_id:team_id].

markdownstring
OPTIONAL

The content in markdown. Any user mention tags are shown in the format [user_id:team_id]

mentionsobject

The Canva users mentioned in the comment thread or reply.

Properties of mentions
<KEY>object of UserMentions

Information about the user mentioned in a comment thread or reply. Each user mention is keyed using the user's user ID and team ID separated by a colon (user_id:team_id).

{
"oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP": {
"tag": "oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP",
"user": {
"user_id": "oUnPjZ2k2yuhftbWF7873o",
"team_id": "oBpVhLW22VrqtwKgaayRbP",
"display_name": "John Doe"
}
}
}
JSON
tagstring

The mention tag for the user mentioned in the comment thread or reply content. This has the format of the user's user ID and team ID separated by a colon (user_id:team_id).

userTeamUser

Metadata for the user, consisting of the User ID, Team ID, and display name.

Properties of user
user_idstring
OPTIONAL

The ID of the user.

team_idstring
OPTIONAL

The ID of the user's Canva Team.

display_namestring
OPTIONAL

The name of the user as shown in the Canva UI.

created_atinteger

When the reply was created, as a Unix timestamp (in seconds since the Unix Epoch).

updated_atinteger

When the reply was last updated, as a Unix timestamp (in seconds since the Unix Epoch).

authorUser
OPTIONAL

Metadata for the user, consisting of the User ID and display name.

Properties of author
idstring

The ID of the user.

display_namestring
OPTIONAL

The name of the user as shown in the Canva UI.

Example response

{
"reply": {
"id": "KeAZEAjijEb",
"design_id": "DAFVztcvd9z",
"thread_id": "KeAbiEAjZEj",
"author": {
"id": "uKakKUfI03Fg8k2gZ6OkT",
"display_name": "John Doe"
},
"content": {
"plaintext": "Great work [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!",
"markdown": "*_Great work_* [oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP]!"
},
"mentions": {
"oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP": {
"tag": "oUnPjZ2k2yuhftbWF7873o:oBpVhLW22VrqtwKgaayRbP",
"user": {
"user_id": "oUnPjZ2k2yuhftbWF7873o",
"team_id": "oBpVhLW22VrqtwKgaayRbP",
"display_name": "John Doe"
}
}
},
"created_at": 1692929800,
"updated_at": 1692929900
}
}
JSON

Try it out

Step 1: Enter your access token

To get started, generate an access token or provide your own below