Canva integration
In short
Create designs, export them and fill brand templates. Connect it on the Integrations page; your app then calls Canva through Sapilon without ever holding a Canva credential.
Lets your app list and create Canva designs, export them as PDF or images, upload assets and — on Canva Enterprise — fill brand templates with data.
Connecting
On the Integrations page choose Connect on Canva, sign in to Canva and allow access. Under Advanced you can use your own Canva OAuth app instead of Sapilon’s.
You choose these permissions while connecting:
-
Read brand templates (Canva Enterprise)
-
Fill brand templates (Canva Enterprise)
-
Sapilon’s own Canva app is being registered. Until it is, Advanced → Bring your own OAuth app connects today.
What your app can do
Only these requests are available; anything else is refused.
GET /users/meGET /users/me/profileGET|POST /designsGET /designs/*POST /exportsGET /exports/*POST /asset-uploadsGET /asset-uploads/*GET /brand-templatesGET /brand-templates/*/datasetPOST /autofillsGET /autofills/*
How the agent uses it
Use integrations.request('canva', …); paths are relative to https://api.canva.com/rest/v1.
GET /users/me,GET /users/me/profile.GET|POST /designs— list (query: { query: 'menu' }) or create. Example:{ method: 'POST', path: '/designs', body: { design_type: { type: 'preset', name: 'presentation' }, title: 'Q3 review' } }.GET /designs/{id}— with its edit and view URLs.POST /exports—body: { design_id, format: { type: 'pdf' } }starts a job; pollGET /exports/{jobId}untilstatusissuccess, then downloadurls.POST /asset-uploads— the file as the body, with headerAsset-Upload-Metadata: {"name_base64":"…"}; pollGET /asset-uploads/{jobId}.- Canva Enterprise only:
GET /brand-templates,GET /brand-templates/{id}/dataset(the fields to fill),POST /autofills(body: { brand_template_id, data: { title: { type: 'text', text: 'Hello' } } }), pollGET /autofills/{jobId}.
Deleting is not allowed.
More from Canva: https://www.canva.dev/docs/connect/