curl --request GET \
--url https://api.occtoo.com/v1/events \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.occtoo.com/v1/events"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.occtoo.com/v1/events', 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://api.occtoo.com/v1/events",
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://api.occtoo.com/v1/events"
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://api.occtoo.com/v1/events")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.occtoo.com/v1/events")
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{
"items": [
{
"specversion": "1.0",
"id": "0197a2b4-7c1e-59f3-a8d4-1b2c3d4e5f60",
"type": "source.updated",
"source": "/sources/products",
"subject": "products",
"time": "2026-07-04T09:15:12.345Z",
"datacontenttype": "application/json",
"dataschema": "https://api.occtoo.com/v1/events/schemas/source.updated/1.0",
"sequence": "003.00000000000000184467",
"tenantid": "9f3c2a10-2e2e-4e67-b941-89e8d3190c47",
"data": {
"sourceId": "products",
"changes": [
"settings"
],
"correlationIds": [
"0197a2b4-56bb-7b38-b82c-33b55b61ef2a"
]
}
}
],
"after": "MDAzLjAwMDAwMDAwMDAwMDAwMTg0NDY3",
"hasMore": true,
"total": 42
}Pull public events
Reads retained events in ascending sequence order. Every item is a structured CloudEvent 1.0 document.
Cursor handling
- Omit
afterto start at the beginning of the retained tenant stream. - Persist the returned
aftercursor only after the page has been processed successfully. - If the cursor is lost,
afteralso accepts the raw fixed-widthsequenceof the last successfully processed event. - A cursor identifies a position in the tenant stream, not in a filtered view. Persist the filter together with its cursor.
Set total=true only when an exact count is required. The count covers all matching events after the supplied cursor, before the page limit is applied.
curl --request GET \
--url https://api.occtoo.com/v1/events \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.occtoo.com/v1/events"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.occtoo.com/v1/events', 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://api.occtoo.com/v1/events",
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://api.occtoo.com/v1/events"
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://api.occtoo.com/v1/events")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.occtoo.com/v1/events")
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{
"items": [
{
"specversion": "1.0",
"id": "0197a2b4-7c1e-59f3-a8d4-1b2c3d4e5f60",
"type": "source.updated",
"source": "/sources/products",
"subject": "products",
"time": "2026-07-04T09:15:12.345Z",
"datacontenttype": "application/json",
"dataschema": "https://api.occtoo.com/v1/events/schemas/source.updated/1.0",
"sequence": "003.00000000000000184467",
"tenantid": "9f3c2a10-2e2e-4e67-b941-89e8d3190c47",
"data": {
"sourceId": "products",
"changes": [
"settings"
],
"correlationIds": [
"0197a2b4-56bb-7b38-b82c-33b55b61ef2a"
]
}
}
],
"after": "MDAzLjAwMDAwMDAwMDAwMDAwMTg0NDY3",
"hasMore": true,
"total": 42
}Authorizations
Sign in with the existing Occtoo Studio identity and selected organization.
Query Parameters
Opaque cursor returned by the previous pull page, or the raw fixed-width sequence of the last successfully processed event for recovery. Events at or before the supplied position are excluded. Omit it to begin at the earliest retained event.
Maximum number of events to return. The default is 100 and the maximum is 1,000.
When true, includes the exact number of events matching the tenant, after cursor and filter before the page limit. The count is omitted by default because it requires scanning all matches.
RFC 7644-derived event filter. Supports eq, and, or, parentheses and double-quoted strings. Example: (type eq "source.updated" and sourceId eq "products") or (type eq "segment.updated" and segmentId eq "summer-sale"). Filterable properties are listed by GET /v1/event-types.
4096Response
An ordered page of tenant events and its continuation cursor.
A finite page from the ordered tenant event stream.
Structured CloudEvents in ascending sequence order.
Show child attributes
Show child attributes
Opaque continuation cursor to send with the next request.
"MDAzLjAwMDAwMDAwMDAwMDAwMTg0NDY3"
Whether another matching event was available when this page was read.
true
Exact matching count when total=true; omitted otherwise.
42
Was this page helpful?