Appearance
Connect API — Resizes
Resizes Overview
The Canva Connect APIs for resizing designs.
The resize API lets you create resized copies of designs in different dimensions or formats.
Resize API
- Create design resize job: Create an asynchronous job to resize a design to new dimensions.
- Get design resize job: Get the status and results of a resize job, including the ID of the newly created design.
Create Resize Job
AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro).
Starts a new asynchronous job to create a resized copy of a design. The new resized design is added to the top level of the user's projects (root folder).
To resize a design into a new design, you can either:
- Use a preset design type.
- Set height and width dimensions for a custom design.
Note the following behaviors and restrictions when resizing designs:
- Designs can be resized to a maximum area of 25,000,000 pixels squared.
- Resizing designs using the Connect API always creates a new design. In-place resizing is currently not available in the Connect API, but can be done in the Canva UI.
- Resizing a multi-page design results in all pages of the design being resized. Resizing a section of a design is only available in the Canva UI.
- Canva docs and emails can't be resized, and other design types can't be resized to a Canva doc or email.
- Canva Code designs can't be resized, and other design types can't be resized to a Canva Code design.
<Note> For more information on the workflow for using asynchronous jobs, see API requests and responses. You can check the status and get the results of resize jobs created with this API using the Get design resize job API. </Note>
HTTP method and URL path
POST https://api.canva.com/rest/v1/resizes
This operation is rate limited to 20 requests per minute for each user of your integration.
Authentication and authorization
This endpoint requires a valid access token that acts on behalf of a user.
Scopes
The access token must have all the following scopes (permissions):
design:content:readdesign:content:write
Capabilities
The user must have at least one of the following capabilities:
resize
Header parameters
<Prop.List> <Prop name="Authorization" type="string" required> Provides credentials to authenticate the request, in the form of a Bearer token.
For example: `Authorization: Bearer {token}`
</Prop>
<Prop name="Content-Type" type="string" required> Indicates the media type of the information sent in the request. This must be set to application/json.
For example: `Content-Type: application/json`
</Prop> </Prop.List>
Body parameters
<Prop.List> <Prop name="design_id" type="string" required> The design ID. </Prop>
<Prop name="design_type" type="DesignTypeInput" required> The desired design type.
<Tabs>
<Tab name="preset">
Provide the common design type.
<Prop.List>
<Prop name="type" type="string" required>
<Prop.Extras>
**Available values:** The only valid value is `preset`.
</Prop.Extras>
</Prop>
<Prop name="name" type="string" required>
The name of the design type.
<Prop.Extras>
**Available values:**
* `doc`: A Canva doc; a document for Canva's online text editor.
* `email`: An email; for creating email campaign designs.
* `presentation`: A presentation; lets you create and collaborate for presenting to an audience.
* `whiteboard`: A whiteboard; a design which gives you infinite space to collaborate.
</Prop.Extras>
</Prop>
</Prop.List>
</Tab>
<Tab name="custom">
Provide the width and height to define a custom design type.
<Prop.List>
<Prop name="type" type="string" required>
<Prop.Extras>
**Available values:** The only valid value is `custom`.
</Prop.Extras>
</Prop>
<Prop name="width" type="integer" required>
The width of the design, in pixels.
<Prop.Extras>
**Minimum:** `40`
**Maximum:** `8000`
</Prop.Extras>
</Prop>
<Prop name="height" type="integer" required>
The height of the design, in pixels.
<Prop.Extras>
**Minimum:** `40`
**Maximum:** `8000`
</Prop.Extras>
</Prop>
</Prop.List>
</Tab>
</Tabs>
</Prop> </Prop.List>
Example request
Examples for using the /v1/resizes endpoint:
<Tabs storageKey="example.language" disableContentTransition> <Tab name="cURL"> sh curl --request POST 'https://api.canva.com/rest/v1/resizes' \ --header 'Authorization: Bearer {token}' \ --header 'Content-Type: application/json' \ --data '{ "design_id": "DAGirp_1ZUA", "design_type": { "type": "custom", "width": 1000, "height": 1500 } }' </Tab>
<Tab name="Node.js"> ```js const fetch = require("node-fetch");
fetch("https://api.canva.com/rest/v1/resizes", {
method: "POST",
headers: {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
},
body: JSON.stringify({
"design_id": "DAGirp_1ZUA",
"design_type": {
"type": "custom",
"width": 1000,
"height": 1500
}
}),
})
.then(async (response) => {
const data = await response.json();
console.log(data);
})
.catch(err => console.error(err));
```
</Tab>
<Tab name="Java"> ```java 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/resizes"))
.header("Authorization", "Bearer {token}")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\"design_id\": \"DAGirp_1ZUA\", \"design_type\": {\"type\": \"custom\", \"width\": 1000, \"height\": 1500}}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}
```
</Tab>
<Tab name="Python"> ```py import requests
headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json"
}
data = {
"design_id": "DAGirp_1ZUA",
"design_type": {
"type": "custom",
"width": 1000,
"height": 1500
}
}
response = requests.post("https://api.canva.com/rest/v1/resizes",
headers=headers,
json=data
)
print(response.json())
```
</Tab>
<Tab name="C#"> ```csharp using System.Net.Http;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://api.canva.com/rest/v1/resizes"),
Headers =
{
{ "Authorization", "Bearer {token}" },
},
Content = new StringContent(
"{\"design_id\": \"DAGirp_1ZUA\", \"design_type\": {\"type\": \"custom\", \"width\": 1000, \"height\": 1500}}",
Encoding.UTF8,
"application/json"
),
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
};
```
</Tab>
<Tab name="Go"> ```go package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := strings.NewReader(`{
"design_id": "DAGirp_1ZUA",
"design_type": {
"type": "custom",
"width": 1000,
"height": 1500
}
}`)
url := "https://api.canva.com/rest/v1/resizes"
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer {token}")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
```
</Tab>
<Tab name="PHP"> ```php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.canva.com/rest/v1/resizes", CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array( 'Authorization: Bearer {token}', 'Content-Type: application/json', ), CURLOPT_POSTFIELDS => json_encode([ "design_id" => "DAGirp_1ZUA", "design_type" => [ "type" => "custom", "width" => 1000, "height" => 1500 ] ]) ));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if (empty($err)) {
echo $response;
} else {
echo "Error: " . $err;
}
```
</Tab>
<Tab name="Ruby"> ```ruby require 'net/http' require 'uri'
url = URI('https://api.canva.com/rest/v1/resizes')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request['Authorization'] = 'Bearer {token}'
request['Content-Type'] = 'application/json'
request.body = <<REQUEST_BODY
{
"design_id": "DAGirp_1ZUA",
"design_type": {
"type": "custom",
"width": 1000,
"height": 1500
}
}
REQUEST_BODY
response = http.request(request)
puts response.read_body
```
</Tab> </Tabs>
Success response
If successful, the endpoint returns a 200 response with a JSON body with the following parameters:
<Prop.List> <Prop name="job" type="DesignResizeJob" required mode="output"> Details about the design resize job.
<PillAccordion title={<>Properties of <strong>job</strong></>} defaultExpanded={true}>
<Prop.List>
<Prop name="id" type="string" required mode="output">
The design resize job ID.
</Prop>
<Prop name="status" type="string" required mode="output">
Status of the design resize job.
<Prop.Extras>
**Available values:**
* `in_progress`
* `success`
* `failed`
</Prop.Extras>
</Prop>
<Prop name="result" type="DesignResizeJobResult" mode="output">
Design has been created and saved to user's root
(projects) folder.
<PillAccordion title={<>Properties of <strong>result</strong></>}>
<Prop.List>
<Prop name="design" type="DesignSummary" required mode="output">
Basic details about the design, such as the design's ID, title, and URL.
<PillAccordion title={<>Properties of <strong>design</strong></>}>
<Prop.List>
<Prop name="id" type="string" required mode="output">
The design ID.
</Prop>
<Prop name="urls" type="DesignLinks" required mode="output">
A temporary set of URLs for viewing or editing the design.
<PillAccordion title={<>Properties of <strong>urls</strong></>}>
<Prop.List>
<Prop name="edit_url" type="string" required mode="output">
A temporary editing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support return navigation workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.
</Prop>
<Prop name="view_url" type="string" required mode="output">
A temporary viewing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support return navigation workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="created_at" type="integer" required mode="output">
When the design was created in Canva, as a Unix timestamp (in seconds since the Unix
Epoch).
</Prop>
<Prop name="updated_at" type="integer" required mode="output">
When the design was last updated in Canva, as a Unix timestamp (in seconds since the
Unix Epoch).
</Prop>
<Prop name="title" type="string" mode="output">
The design title.
</Prop>
<Prop name="url" type="string" mode="output">
URL of the design.
</Prop>
<Prop name="thumbnail" type="Thumbnail" mode="output">
A thumbnail image representing the object.
<PillAccordion title={<>Properties of <strong>thumbnail</strong></>}>
<Prop.List>
<Prop name="width" type="integer" required mode="output">
The width of the thumbnail image in pixels.
</Prop>
<Prop name="height" type="integer" required mode="output">
The height of the thumbnail image in pixels.
</Prop>
<Prop name="url" type="string" required mode="output">
A URL for retrieving the thumbnail image.
This URL expires after 15 minutes. This URL includes a query string
that's required for retrieving the thumbnail.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="page_count" type="integer" mode="output">
The total number of pages in the design. Some design types don't have pages (for example, Canva docs).
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="trial_information" type="TrialInformation" mode="output">
WARNING: Trials and trial information are a preview feature.
There might be unannounced breaking changes to this feature which won't produce a new API version.
<PillAccordion title={<>Properties of <strong>trial_information</strong></>}>
<Prop.List>
<Prop name="uses_remaining" type="integer" required mode="output">
The number of uses remaining in the free trial.
</Prop>
<Prop name="upgrade_url" type="string" required mode="output">
The URL for a user to upgrade their Canva account.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="error" type="DesignResizeError" mode="output">
If the design resize job fails, this object provides details about the error.
<PillAccordion title={<>Properties of <strong>error</strong></>}>
<Prop.List>
<Prop name="code" type="string" required mode="output">
<Prop.Extras>
**Available values:**
* `thumbnail_generation_error`
* `design_resize_error`
* `create_design_error`
* `trial_quota_exceeded`
</Prop.Extras>
</Prop>
<Prop name="message" type="string" required mode="output">
A human-readable description of what went wrong.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
</Prop.List>
</PillAccordion>
</Prop> </Prop.List>
Example responses
In progress job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "in_progress"
}
}Successfully completed job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "success",
"result": {
"design": {
"id": "DAGirp_1ZUA",
"title": "My summer holiday",
"thumbnail": {
"width": 595,
"height": 335,
"url": "https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>"
},
"urls": {
"edit_url": "https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/edit",
"view_url": "https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/view"
},
"created_at": 1742856750,
"updated_at": 1742856752,
"page_count": 5
},
"trial_information": {
"uses_remaining": 0,
"upgrade_url": "https://www.canva.com/?tailoringUpsellDialog=GENERIC_C4W"
}
}
}
}Failed job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "failed",
"error": {
"code": "design_resize_error",
"message": "Failed to resize the design"
}
}
}Error responses
400 Bad Request
<Prop.List> <Prop name="code" type="string" required mode="output"> A short string indicating what failed. This field can be used to handle errors programmatically. For a complete list of error codes, see Error responses. </Prop>
<Prop name="message" type="string" required mode="output"> A human-readable description of what went wrong. </Prop> </Prop.List>
Example error response
json
{
"code": "bad_request_params",
"message": "Canva designs can't be resized to the selected design type: `{designTypeName}`"
}Get Resize Job
AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro).
Gets the result of a design resize job that was created using the Create design resize job API.
If the job is successful, the response includes a summary of the new resized design, including its metadata.
You might need to make multiple requests to this endpoint until you get a success or failed status. For more information on the workflow for using asynchronous jobs, see API requests and responses.
HTTP method and URL path
GET https://api.canva.com/rest/v1/resizes/{jobId}
This operation is rate limited to 120 requests per minute for each user of your integration.
Authentication and authorization
This endpoint requires a valid access token that acts on behalf of a user.
Scopes
The access token must have all the following scopes (permissions):
design:content:readdesign:content:write
Capabilities
The user must have at least one of the following capabilities:
resize
Header parameters
<Prop.List> <Prop name="Authorization" type="string" required> Provides credentials to authenticate the request, in the form of a Bearer token.
For example: `Authorization: Bearer {token}`
</Prop> </Prop.List>
Path parameters
<Prop.List> <Prop name="jobId" type="string" required> The design resize job ID. </Prop> </Prop.List>
Example request
Examples for using the /v1/resizes/{jobId} endpoint:
<Tabs storageKey="example.language" disableContentTransition> <Tab name="cURL"> sh curl --request GET 'https://api.canva.com/rest/v1/resizes/{jobId}' \ --header 'Authorization: Bearer {token}' </Tab>
<Tab name="Node.js"> ```js const fetch = require("node-fetch");
fetch("https://api.canva.com/rest/v1/resizes/{jobId}", {
method: "GET",
headers: {
"Authorization": "Bearer {token}",
},
})
.then(async (response) => {
const data = await response.json();
console.log(data);
})
.catch(err => console.error(err));
```
</Tab>
<Tab name="Java"> ```java 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/resizes/{jobId}"))
.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());
}
}
```
</Tab>
<Tab name="Python"> ```py import requests
headers = {
"Authorization": "Bearer {token}"
}
response = requests.get("https://api.canva.com/rest/v1/resizes/{jobId}",
headers=headers
)
print(response.json())
```
</Tab>
<Tab name="C#"> ```csharp using System.Net.Http;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://api.canva.com/rest/v1/resizes/{jobId}"),
Headers =
{
{ "Authorization", "Bearer {token}" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
};
```
</Tab>
<Tab name="Go"> ```go package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.canva.com/rest/v1/resizes/{jobId}"
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))
}
```
</Tab>
<Tab name="PHP"> ```php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.canva.com/rest/v1/resizes/{jobId}", 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;
}
```
</Tab>
<Tab name="Ruby"> ```ruby require 'net/http' require 'uri'
url = URI('https://api.canva.com/rest/v1/resizes/{jobId}')
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
```
</Tab> </Tabs>
Success response
If successful, the endpoint returns a 200 response with a JSON body with the following parameters:
<Prop.List> <Prop name="job" type="DesignResizeJob" required mode="output"> Details about the design resize job.
<PillAccordion title={<>Properties of <strong>job</strong></>} defaultExpanded={true}>
<Prop.List>
<Prop name="id" type="string" required mode="output">
The design resize job ID.
</Prop>
<Prop name="status" type="string" required mode="output">
Status of the design resize job.
<Prop.Extras>
**Available values:**
* `in_progress`
* `success`
* `failed`
</Prop.Extras>
</Prop>
<Prop name="result" type="DesignResizeJobResult" mode="output">
Design has been created and saved to user's root
(projects) folder.
<PillAccordion title={<>Properties of <strong>result</strong></>}>
<Prop.List>
<Prop name="design" type="DesignSummary" required mode="output">
Basic details about the design, such as the design's ID, title, and URL.
<PillAccordion title={<>Properties of <strong>design</strong></>}>
<Prop.List>
<Prop name="id" type="string" required mode="output">
The design ID.
</Prop>
<Prop name="urls" type="DesignLinks" required mode="output">
A temporary set of URLs for viewing or editing the design.
<PillAccordion title={<>Properties of <strong>urls</strong></>}>
<Prop.List>
<Prop name="edit_url" type="string" required mode="output">
A temporary editing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support return navigation workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.
</Prop>
<Prop name="view_url" type="string" required mode="output">
A temporary viewing URL for the design. This URL is only accessible to the user that made the API request, and is designed to support return navigation workflows.
NOTE: This is not a permanent URL, it is only valid for 30 days.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="created_at" type="integer" required mode="output">
When the design was created in Canva, as a Unix timestamp (in seconds since the Unix
Epoch).
</Prop>
<Prop name="updated_at" type="integer" required mode="output">
When the design was last updated in Canva, as a Unix timestamp (in seconds since the
Unix Epoch).
</Prop>
<Prop name="title" type="string" mode="output">
The design title.
</Prop>
<Prop name="url" type="string" mode="output">
URL of the design.
</Prop>
<Prop name="thumbnail" type="Thumbnail" mode="output">
A thumbnail image representing the object.
<PillAccordion title={<>Properties of <strong>thumbnail</strong></>}>
<Prop.List>
<Prop name="width" type="integer" required mode="output">
The width of the thumbnail image in pixels.
</Prop>
<Prop name="height" type="integer" required mode="output">
The height of the thumbnail image in pixels.
</Prop>
<Prop name="url" type="string" required mode="output">
A URL for retrieving the thumbnail image.
This URL expires after 15 minutes. This URL includes a query string
that's required for retrieving the thumbnail.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="page_count" type="integer" mode="output">
The total number of pages in the design. Some design types don't have pages (for example, Canva docs).
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="trial_information" type="TrialInformation" mode="output">
WARNING: Trials and trial information are a preview feature.
There might be unannounced breaking changes to this feature which won't produce a new API version.
<PillAccordion title={<>Properties of <strong>trial_information</strong></>}>
<Prop.List>
<Prop name="uses_remaining" type="integer" required mode="output">
The number of uses remaining in the free trial.
</Prop>
<Prop name="upgrade_url" type="string" required mode="output">
The URL for a user to upgrade their Canva account.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
<Prop name="error" type="DesignResizeError" mode="output">
If the design resize job fails, this object provides details about the error.
<PillAccordion title={<>Properties of <strong>error</strong></>}>
<Prop.List>
<Prop name="code" type="string" required mode="output">
<Prop.Extras>
**Available values:**
* `thumbnail_generation_error`
* `design_resize_error`
* `create_design_error`
* `trial_quota_exceeded`
</Prop.Extras>
</Prop>
<Prop name="message" type="string" required mode="output">
A human-readable description of what went wrong.
</Prop>
</Prop.List>
</PillAccordion>
</Prop>
</Prop.List>
</PillAccordion>
</Prop> </Prop.List>
Example responses
In progress job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "in_progress"
}
}Successfully completed job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "success",
"result": {
"design": {
"id": "DAGirp_1ZUA",
"title": "My summer holiday",
"thumbnail": {
"width": 595,
"height": 335,
"url": "https://document-export.canva.com/Vczz9/zF9vzVtdADc/2/thumbnail/0001.png?<query-string>"
},
"urls": {
"edit_url": "https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/edit",
"view_url": "https://www.canva.com/design/DAGhRehVa2c/0L_1s4UXSpZhls8EtPaRKw/view"
},
"created_at": 1742856750,
"updated_at": 1742856752,
"page_count": 5
},
"trial_information": {
"uses_remaining": 0,
"upgrade_url": "https://www.canva.com/?tailoringUpsellDialog=GENERIC_C4W"
}
}
}
}Failed job
json
{
"job": {
"id": "450a76e7-f96f-43ae-9c37-0e1ce492ac72",
"status": "failed",
"error": {
"code": "design_resize_error",
"message": "Failed to resize the design"
}
}
}