Dump session messages (date range)
Returns all session messages within the specified date range in one batch. Intended for data-lake ingestion.
Query Parameters
- start_dateString (ISO 8601)
- Start date. Defaults to 7 days before end_date when omitted.
- end_dateString (ISO 8601)
- End date. Defaults to the current time when omitted.
- client_identityString
- `client_identity` of the target client. Defaults to the signed-in member's client. Must be the signed-in client or one of its descendants; any other value returns 403 `OuterClientScopeForbidden`
- include_descendantsBooleandefault: false
- If `true`, returns data for the target client and all of its descendant clients. If `false`, returns data for the target client only
Response Fields
- messagesArray of objectsrequired
- Message list (no pagination). Same structure as the messages item in List session messages.
Because the response is returned in one batch without pagination, large ranges may produce very large responses. Either split into shorter ranges or use the incremental dump (/messages/dumps/since-last).
curl -X GET "https://opsapi.edutap.ai/ops/v1/sessions/messages/dumps?start_date=2026-06-24&end_date=2026-06-25" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"import requests
res = requests.get(
"https://opsapi.edutap.ai/ops/v1/sessions/messages/dumps?start_date=2026-06-24&end_date=2026-06-25",
headers={"Authorization": "Bearer ${ACCESS_TOKEN}"},
)
print(res.json())package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://opsapi.edutap.ai/ops/v1/sessions/messages/dumps?start_date=2026-06-24&end_date=2026-06-25", nil)
req.Header.Set("Authorization", "Bearer ${ACCESS_TOKEN}")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
b, _ := io.ReadAll(res.Body)
fmt.Println(string(b))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://opsapi.edutap.ai/ops/v1/sessions/messages/dumps?start_date=2026-06-24&end_date=2026-06-25"))
.header("Authorization", "Bearer ${ACCESS_TOKEN}")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
}
}const res = await fetch("https://opsapi.edutap.ai/ops/v1/sessions/messages/dumps?start_date=2026-06-24&end_date=2026-06-25", {
method: "GET",
headers: {"Authorization": "Bearer ${ACCESS_TOKEN}"},
});
console.log(await res.json());Response
{
"messages": [
{
"message_id": "msg_01HXEFGH1234ABCD5678",
"chat_session_id": "sess_01HXABCD1234EFGH5678",
"client_identity": "acme",
"role": "user",
"message": "Please explain how to solve x^2 - 5x + 6 = 0.",
"created_at": "2026-06-20T03:21:30Z",
"answer_style": null,
"clip_id": "clip_01",
"course_title": null,
"user_id": null,
"clip_play_head": 0,
"is_floating": false,
"is_retry": false,
"is_preemptive_question": false,
"is_follow_up_question": false,
"is_fixed_guide_message": false,
"references": [],
"pdf_highlight_texts": [],
"message_generation_time_seconds": null,
"files": [],
"question_message_id": null
}
]
}