You can delete an asset by specifying its assetId
. This operation mirrors the behavior
in the Canva UI. Deleting an item moves it to the trash.
Deleting an asset doesn't remove it from designs that already use it.
HTTP method and URL path
DELETE
https://api.canva.com /rest /v1 /assets/{assetId}
This operation is rate limited to 30 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):
asset:write
For more information, see Scopes.
Header parameters
Path parameters
assetId
string
REQUIRED
The ID of the asset.
Example request
Examples for using the /v1/assets/{assetId}
endpoint:
curl --request DELETE 'https://api.canva.com/rest/v1/assets/{assetId}' \--header 'Authorization: Bearer {token}'
SH
const fetch = require("node-fetch");fetch("https://api.canva.com/rest/v1/assets/{assetId}", {method: "DELETE",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/assets/{assetId}")).header("Authorization", "Bearer {token}").method("DELETE", HttpRequest.BodyPublishers.noBody()).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request,HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}}
JAVA
import requestsheaders = {"Authorization": "Bearer {token}"}response = requests.delete("https://api.canva.com/rest/v1/assets/{assetId}",headers=headers)print(response.json())
PY
using System.Net.Http;var client = new HttpClient();var request = new HttpRequestMessage{Method = HttpMethod.Delete,RequestUri = new Uri("https://api.canva.com/rest/v1/assets/{assetId}"),Headers ={{ "Authorization", "Bearer {token}" },},};using (var response = await client.SendAsync(request)){response.EnsureSuccessStatusCode();var body = await response.Content.ReadAsStringAsync();Console.WriteLine(body);};
CSHARP
package mainimport ("fmt""io""net/http")func main() {url := "https://api.canva.com/rest/v1/assets/{assetId}"req, _ := http.NewRequest("DELETE", 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/assets/{assetId}",CURLOPT_CUSTOMREQUEST => "DELETE",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/assets/{assetId}')http = Net::HTTP.new(url.host, url.port)http.use_ssl = truerequest = Net::HTTP::Delete.new(url)request['Authorization'] = 'Bearer {token}'response = http.request(request)puts response.read_body
RUBY
Success response
If successful, the endpoint returns the status code 204 No content
without a response body.