List groups

Gets a paginated list of all user groups in a Canva team.

You can use the startIndex and count parameters to control the pagination of the response.

You can also provide a filter parameter to narrow down the groups returned to only include those matching the filter.

The members array returned in a group's API response is always empty, even if there are members in the group. To see members of a group, you must use the Canva web interface(opens in a new tab or window).

HTTP method and URL path

GET https://www.canva.com/_scim/v2/Groups

Header parameters

Authorizationstring
REQUIRED

Provides credentials to authenticate the request, in the form of a Bearer token.

For example: Authorization: Bearer {token}

Query parameters

startIndexinteger
OPTIONAL

Used to paginate the response: the index of the first result to return.

countinteger
OPTIONAL

Used to paginate the response: the number of results to return. Must be between 1 and 10.

filterstring
OPTIONAL

A filter to narrow down the results returned, using the equals (eq) query parameter. The following filters are supported:

  • Return the group matching the SCIM displayName value: displayName eq "{display_name}".

    For example: GET /_scim/v2/Groups?filter=displayName%20eq%20"White rabbits"

Example request

Examples for using the /_scim/v2/Groups endpoint:

curl --request GET 'https://www.canva.com/_scim/v2/Groups' \
--header 'Authorization: Bearer {token}'
SH
const fetch = require("node-fetch");
fetch("https://www.canva.com/_scim/v2/Groups", {
method: "GET",
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://www.canva.com/_scim/v2/Groups"))
.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());
}
}
JAVA
import requests
headers = {
"Authorization": "Bearer {token}"
}
response = requests.get("https://www.canva.com/_scim/v2/Groups",
headers=headers
)
print(response.json())
PY
using System.Net.Http;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://www.canva.com/_scim/v2/Groups"),
Headers =
{
{ "Authorization", "Bearer {token}" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
};
CSHARP
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://www.canva.com/_scim/v2/Groups"
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))
}
GO
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.canva.com/_scim/v2/Groups",
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;
}
PHP
require 'net/http'
require 'uri'
url = URI('https://www.canva.com/_scim/v2/Groups')
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
RUBY

Success response

If successful, the endpoint returns a 200 response with a JSON body with the following parameters:

schemasstring[]

The value for this can only be urn:ietf:params:scim:api:messages:2.0:ListResponse.

totalResultsinteger

The total number of results matching the query.

startIndexinteger

The index of the first result.

itemsPerPageinteger

The number of results returned in the current page.

resourcesScimGroupResponse[]

An array of the groups returned in the current page of results.

Properties of resources
schemasstring[]

The value for this can only be urn:ietf:params:scim:schemas:core:2.0:Group.

idstring

The Canva-generated SCIM ID for the group.

metaobject

Meta properties for the group.

Properties of meta
resourceTypestring

The SCIM resource type of the object. The value for this can only be Group.

createdstring

The timestamp when the object was created.

displayNamestring

The name of the group, suitable for display to end-users.

membersobject[]

The members array returned in a group's API response is always empty, even if there are members in the group. To see members of a group, you must use the Canva web interface(opens in a new tab or window).

Example response

{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 1,
"startIndex": 1,
"itemsPerPage": 10,
"resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"id": "UAFgrpb1abC",
"meta": {
"resourceType": "Group",
"created": "2023-09-18T06:08:35Z"
},
"displayName": "White rabbits",
"members": []
}
]
}
JSON

Error responses

403 Forbidden

schemasstring[]

The value for this can only be urn:ietf:params:scim:api:messages:2.0:Error.

detailstring

The value for this can only be Unsupported filter field.

statusstring

The HTTP status code of the error.

Example error response

{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error"
],
"detail": "Unsupported filter field",
"status": "403"
}
JSON