curl --request GET \
--url https://schoolmaker.co/api/v1/conversations/groups \
--header 'Authorization: Bearer <token>'import requests
url = "https://schoolmaker.co/api/v1/conversations/groups"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://schoolmaker.co/api/v1/conversations/groups', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://schoolmaker.co/api/v1/conversations/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://schoolmaker.co/api/v1/conversations/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))
}HttpResponse<String> response = Unirest.get("https://schoolmaker.co/api/v1/conversations/groups")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://schoolmaker.co/api/v1/conversations/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{
"data": [
{
"id": "49f3f9bc-43b5-4a40-b2ac-ea2c8a7cb99d",
"title": "Support conversation",
"participants": [
{
"id": "058696d4-f2c8-472f-8c80-5e2208e9fcb1",
"type": "User",
"name": "Alex Smith",
"email": "alex@example.com",
"profile_picture_url": null
}
],
"last_activity_at": "2026-10-02T09:00:00Z",
"related_step_id": null,
"last_message_preview": "Thanks for your question.",
"url": "/conversations/groups/49f3f9bc-43b5-4a40-b2ac-ea2c8a7cb99d"
}
],
"page": 1,
"next_page": null
}List Conversation Groups
Retrieves conversation groups for the required user_id. Participant filters narrow that user’s history.
curl --request GET \
--url https://schoolmaker.co/api/v1/conversations/groups \
--header 'Authorization: Bearer <token>'import requests
url = "https://schoolmaker.co/api/v1/conversations/groups"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://schoolmaker.co/api/v1/conversations/groups', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://schoolmaker.co/api/v1/conversations/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://schoolmaker.co/api/v1/conversations/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))
}HttpResponse<String> response = Unirest.get("https://schoolmaker.co/api/v1/conversations/groups")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://schoolmaker.co/api/v1/conversations/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{
"data": [
{
"id": "49f3f9bc-43b5-4a40-b2ac-ea2c8a7cb99d",
"title": "Support conversation",
"participants": [
{
"id": "058696d4-f2c8-472f-8c80-5e2208e9fcb1",
"type": "User",
"name": "Alex Smith",
"email": "alex@example.com",
"profile_picture_url": null
}
],
"last_activity_at": "2026-10-02T09:00:00Z",
"related_step_id": null,
"last_message_preview": "Thanks for your question.",
"url": "/conversations/groups/49f3f9bc-43b5-4a40-b2ac-ea2c8a7cb99d"
}
],
"page": 1,
"next_page": null
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Required ID of the user whose conversation history to retrieve. The user must belong to your school.
1 - 255\SPage number. Follow next_page until null.
1 <= x <= 10000Maximum number of results per page.
1 <= x <= 30Search title, non-deleted message content, or participant name/email.
10000Filter the selected user's conversations by a participating member ID.
1 - 255Filter the selected user's conversations by another participating user ID.
1 - 255Filter by a participant's email, ignoring case and surrounding spaces. No match returns no conversations. When several participant filters are supplied, any match is included.
10000Filter the selected user's conversations by unread, followed or archived status, or by step completion.
unread, followed, pending_step_validation, validated_steps, archived Use true for archived conversations only or false to exclude them. Can be combined with another filter. filter=archived takes precedence.
Sort by latest activity by default. Matching activity dates are ordered by conversation ID.
last_activity_at, created_at_desc, created_at_asc Was this page helpful?