primary
boolean
Whether the email is the primary address. Only one email address for a user can be the primary one.
Using information from an identity provider (IdP), create a Canva user in a Canva team.
The values for the email
or userName
parameters must be unique and can't already be in use.
This API is rate limited to 1 request per second.
https://www.canva.com /_scim /v2 /Users
Content-Type
string
Indicates the media type of the information sent in the request. This must be set to application/scim+json
.
For example: Content-Type: application/scim+json
schemas
string[]
The URIs of the SCIM schemas. The value for this can only be urn:ietf:params:scim:schemas:core:2.0:User
.
userName
string
A unique identifier for the user.
emails
object[]
The email address for the user.
The Canva SCIM API only supports one email address for each user.
emails
primary
boolean
Whether the email is the primary address. Only one email address for a user can be the primary one.
value
string
The email address.
type
string
The type of email address for the user. The Canva SCIM API only supports work
as the type of the email address.
externalId
string
A string that is an identifier for the resource as defined by the provisioning client.
displayName
string
The name of the user, suitable for display to end-users.
name
name
The components of the user's name.
name
givenName
string
The first or 'given' name for the user.
familyName
string
The last or 'family' name for the user.
locale
string
The user's default location, for example en_AU
.
role
string
The role of the user. This can be one of the following:
Member
Teacher
Staff
Admin
Template-designer
Aide
Administrator
School administrator
School
Tenant
Faculty
If an invalid value is provided, the role defaults to Member
.
Except for Member
, all other role values map to the Canva "Brand Designer" role. For more information on Canva roles, see Team roles and permissions(opens in a new tab or window).
active
boolean
Whether the user account is active. Setting this to false
deprovisions the user in Canva.
Examples for using the /_scim/v2/Users
endpoint:
curl --request POST 'https://www.canva.com/_scim/v2/Users' \--header 'Authorization: Bearer {token}' \--header 'Content-Type: application/scim+json' \--data '{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId": "{idp_provided_external_id}","userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"value": "[email protected]","type": "work"}],"locale": "en_US","role": "Member"}'
const fetch = require("node-fetch");fetch("https://www.canva.com/_scim/v2/Users", {method: "POST",headers: {"Authorization": "Bearer {token}","Content-Type": "application/scim+json",},body: JSON.stringify({"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId": "{idp_provided_external_id}","userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"type": "work"}],"locale": "en_US","role": "Member"}),}).then(async (response) => {const data = await response.json();console.log(data);}).catch(err => console.error(err));
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://www.canva.com/_scim/v2/Users")).header("Authorization", "Bearer {token}").header("Content-Type", "application/scim+json").method("POST", HttpRequest.BodyPublishers.ofString("{\"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"], \"externalId\": \"{idp_provided_external_id}\", \"userName\": \"aliddell\", \"displayName\": \"Alice Liddell\", \"name\": {\"givenName\": \"Alice\", \"familyName\": \"Liddell\"}, \"emails\": [{\"primary\": true, \"value\": \"[email protected]\", \"type\": \"work\"}], \"locale\": \"en_US\", \"role\": \"Member\"}")).build();HttpResponse<String> response = HttpClient.newHttpClient().send(request,HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}}
import requestsheaders = {"Authorization": "Bearer {token}","Content-Type": "application/scim+json"}data = {"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId": "{idp_provided_external_id}","userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": True,"type": "work"}],"locale": "en_US","role": "Member"}response = requests.post("https://www.canva.com/_scim/v2/Users",headers=headers,json=data)print(response.json())
using System.Net.Http;var client = new HttpClient();var request = new HttpRequestMessage{Method = HttpMethod.Post,RequestUri = new Uri("https://www.canva.com/_scim/v2/Users"),Headers ={{ "Authorization", "Bearer {token}" },},Content = new StringContent("{\"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"], \"externalId\": \"{idp_provided_external_id}\", \"userName\": \"aliddell\", \"displayName\": \"Alice Liddell\", \"name\": {\"givenName\": \"Alice\", \"familyName\": \"Liddell\"}, \"emails\": [{\"primary\": true, \"value\": \"[email protected]\", \"type\": \"work\"}], \"locale\": \"en_US\", \"role\": \"Member\"}",Encoding.UTF8,"application/scim+json"),};using (var response = await client.SendAsync(request)){response.EnsureSuccessStatusCode();var body = await response.Content.ReadAsStringAsync();Console.WriteLine(body);};
package mainimport ("fmt""io""net/http""strings")func main() {payload := strings.NewReader(`{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId": "{idp_provided_external_id}","userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"value": "[email protected]","type": "work"}],"locale": "en_US","role": "Member"}`)url := "https://www.canva.com/_scim/v2/Users"req, _ := http.NewRequest("POST", url, payload)req.Header.Add("Authorization", "Bearer {token}")req.Header.Add("Content-Type", "application/scim+json")res, _ := http.DefaultClient.Do(req)defer res.Body.Close()body, _ := io.ReadAll(res.Body)fmt.Println(string(body))}
$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://www.canva.com/_scim/v2/Users",CURLOPT_CUSTOMREQUEST => "POST",CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => array('Authorization: Bearer {token}','Content-Type: application/scim+json',),CURLOPT_POSTFIELDS => json_encode(["schemas" => ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId" => "{idp_provided_external_id}","userName" => "aliddell","displayName" => "Alice Liddell","name" => ["givenName" => "Alice","familyName" => "Liddell"],"emails" => [["primary" => true,"type" => "work"]],"locale" => "en_US","role" => "Member"])));$response = curl_exec($curl);$err = curl_error($curl);curl_close($curl);if (empty($err)) {echo $response;} else {echo "Error: " . $err;}
require 'net/http'require 'uri'url = URI('https://www.canva.com/_scim/v2/Users')http = Net::HTTP.new(url.host, url.port)http.use_ssl = truerequest = Net::HTTP::Post.new(url)request['Authorization'] = 'Bearer {token}'request['Content-Type'] = 'application/scim+json'request.body = <<REQUEST_BODY{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"externalId": "{idp_provided_external_id}","userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"value": "[email protected]","type": "work"}],"locale": "en_US","role": "Member"}REQUEST_BODYresponse = http.request(request)puts response.read_body
If successful, the endpoint returns a 201
response with a JSON body with the following parameters:
schemas
string[]
The URIs of the SCIM schemas. The value for this can only be urn:ietf:params:scim:schemas:core:2.0:User
.
id
string
The Canva-generated SCIM ID for the user.
meta
object
Meta properties for the user.
meta
resourceType
string
The SCIM resource type of the object. The value for this can only be User
.
created
string
The timestamp when the object was created.
userName
string
A unique identifier for the user.
displayName
string
The name of the user, suitable for display to end-users.
emails
object[]
The email address for the user.
The Canva SCIM API only supports one email address for each user.
emails
primary
boolean
Whether the email is the primary address. Only one email address for a user can be the primary one.
value
string
The email address.
type
string
The type of email address for the user. The Canva SCIM API only supports work
as the type of the email address.
active
boolean
Whether the user account is active. Setting this to false
deprovisions the user in Canva.
role
string
The role of the user. This can be one of the following:
Member
Teacher
Staff
Admin
Template-designer
Aide
Administrator
School administrator
School
Tenant
Faculty
If an invalid value is provided, the role defaults to Member
.
Except for Member
, all other role values map to the Canva "Brand Designer" role. For more information on Canva roles, see Team roles and permissions(opens in a new tab or window).
externalId
string
A string that is an identifier for the resource as defined by the provisioning client.
name
name
The components of the user's name.
name
givenName
string
The first or 'given' name for the user.
familyName
string
The last or 'family' name for the user.
locale
string
The user's default location, for example en_AU
.
{"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],"id": "UAFdxab1abC","externalId": "abcd1234","meta": {"resourceType": "User","created": "2023-09-18T06:08:35Z"},"userName": "aliddell","displayName": "Alice Liddell","name": {"givenName": "Alice","familyName": "Liddell"},"emails": [{"primary": true,"type": "work"}],"active": true,"locale": "en_US","role": "Member"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
The value for this can only be No SSO configurations found, please check the settings page
.
status
string
The HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "No SSO configurations found, please check the settings page","status": "400"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
The value for this can only be Email domain not authorized for SCIM.
.
status
string
The HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "Email domain not authorized for SCIM.","status": "403"}
schemas
string[]
The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error
.
detail
string
This can be one of the following:
userName not available
Account with email can not be updated. User needs to accept SSO linking
Account with email already exists. User must first log in with SAML to confirm account ownership
Account with email is soft deleted. The user must first log in to reactivate their account
status
string
The HTTP status code of the error.
{"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],"detail": "userName not available","status": "409"}