Create Design with AI
create-designGenerate a new Canva design from a written brief, with any supplied content folded in.
Use to turn a brief, presentation outline, or draft copy into a presentation, doc, sheet, website, poster, flyer, social post, resume, or another text-and-image layout; or to make a first design for a new project.
Do not use this tool for an on-brand request: it cannot apply a brand kit or base a design on a brand template. When the user asks for their brand kit, their brand colours, fonts or logo, or a brand template to base the design on, use the legacy generation tools instead — prepare-design-generation where it is listed, otherwise generate-design or generate-design-structured.
Use this tool only when the requested output itself is an editable Canva page or layout, such as "create an infographic". Do not use it when the user explicitly asks for an image, picture, photo, illustration, artwork, sticker, icon, graphic, or 2d vector; use generate-image instead. Explicit image wording takes priority over design-like content within the image, including text, statistics, labels, callouts, or an infographic-like composition. For example, "create an image about coffee with bold stat callouts" uses generate-image, as does "create an image of an infographic". Do not choose this tool merely because the request uses the words "create" or "design".
Creates a newly generated design rather than editing one that already exists. Not for videos or whiteboards.
Returns a job_id and continuation_token for the generation job. When this tool's UI widget is shown, the widget polls get-create-design-async-job itself and displays the design when ready - do not poll it yourself. Only when no widget is shown, poll get-create-design-async-job with both, waiting the number of seconds each response's polling_policy.wait_seconds gives before the next call, until the job completes, then share the design link with the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | What to create, in the user's own words. State the subject, the purpose, and any wording, tone, colours, or brand the user asked for. | |
| format | No | Named Canva format the design is made in, e.g. "Instagram Post", "Presentation", "Flyer (Landscape A4)". Include the orientation whenever the format has one, because a name without it cannot be resolved to an exact size and the design comes out square. Omit it - usually the better choice - to have the format chosen from the brief. | |
| outline | No | Outline for a presentation, when you have one the user has approved or supplied. Only valid when the design is a presentation. Omit to let Canva structure the presentation from the brief. | |
| user_intent | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ID of the design generation job. Pass it to get-create-design-async-job to poll for the result. This value is stable and never changes. | |
| status | Yes | Status of the newly created job. 'pending' means the job was created - poll get-create-design-async-job with the job_id and continuation_token for completion, failure, and print details. 'failed' means no job was created and there is nothing to poll; the failure explains why. | |
| failure | No | Why no job was created. Only present when status is 'failed', in which case there is no job_id or continuation_token to poll with. | |
| polling_policy | No | How and when to poll next. | |
| continuation_token | No | Opaque token to pass on the first poll to get-create-design-async-job. Always use the most recent token from the last response. |